[jboss-svn-commits] JBL Code SVN: r34695 - in labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer: drools-timer-core/src/main/java/org/drools/timer/core/connector and 8 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Aug 13 04:26:22 EDT 2010


Author: diegoll
Date: 2010-08-13 04:26:20 -0400 (Fri, 13 Aug 2010)
New Revision: 34695

Modified:
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/ProcessTimerQuartzPersistenceStrategy.java
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/connector/SchedulerConnector.java
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/connector/impl/HornetQSchedulerConnector.java
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/java/org/drools/timer/test/PersistentTimerProcessTest.java
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/resources/timerProcessSession.xml
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/timer/message/impl/InsertScheduledTimerMessage.java
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/timer/persistence/JPATimerPersistence.java
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/timer/persistence/TimerPersistence.java
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/timer/persistence/model/TimerState.java
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/TimerScheduler.java
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/TimerSchedulerHornetQServer.java
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/job/TimerExecutorJob.java
Log:
[JBRULES-2616] scheduler integration

Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/ProcessTimerQuartzPersistenceStrategy.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/ProcessTimerQuartzPersistenceStrategy.java	2010-08-13 08:14:27 UTC (rev 34694)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/ProcessTimerQuartzPersistenceStrategy.java	2010-08-13 08:26:20 UTC (rev 34695)
@@ -1,5 +1,6 @@
 package org.drools.timer.core;
 
+import org.drools.common.AbstractWorkingMemory;
 import org.drools.process.instance.timer.TimerManager.ProcessJobContext;
 import org.drools.time.ProcessTimerPersistenceStrategy;
 import org.drools.time.impl.IntervalTrigger;
@@ -7,23 +8,45 @@
 import org.drools.timer.core.connector.SchedulerConnector;
 import org.drools.timer.persistence.TimerPersistence;
 import org.drools.timer.persistence.model.TimerState;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class ProcessTimerQuartzPersistenceStrategy implements ProcessTimerPersistenceStrategy {
 
+    private static Logger logger = LoggerFactory.getLogger(ProcessTimerQuartzPersistenceStrategy.class);
+    
 	private SchedulerConnector connector;
 	private TimerPersistence timerPersistence;
+    private String runtimeSessionConfiguratorBeanName;
+    private String knowledgeStoreServiceBeanName;
+    private String knowledgeBaseBeanName;
+    private String environmentBeanName;
 
 	public void save(ProcessJobContext processContext, IntervalTrigger intervalTrigger) {
-		connector.save(processContext);
-		TimerState timerState = new TimerState();
-		timerState.setProcessInstanceId(processContext.getProcessInstanceId());
+        int sessionId = ((AbstractWorkingMemory)processContext.getWorkingMemory()).getId();
+        long timerId = processContext.getTimer().getId();
+        long processInstanceId = processContext.getProcessInstanceId();
+        if(timerPersistence.exists(timerId, processInstanceId)){
+            logger.debug(String.format("Timer %d already exists for process %d", timerId, processInstanceId));
+            return;
+        }
+        logger.debug(String.format("Persist timer %d for process %d", timerId, processInstanceId));
+        TimerState timerState = new TimerState();
+        timerState.setProcessInstanceId(processInstanceId);
+        timerState.setTimerId(timerId);
 		timerPersistence.save(timerState);
+		connector.save(processContext,
+		               sessionId,
+		               timerId,
+    		           runtimeSessionConfiguratorBeanName,
+    		           knowledgeStoreServiceBeanName,
+    		           knowledgeBaseBeanName,
+    		           environmentBeanName);
 	}
 
 	public boolean remove(ProcessJobHandle jobHandle) {
 		connector.remove(jobHandle);
-		timerPersistence.remove(jobHandle.getProcessId());
-		return false;
+		return timerPersistence.remove(jobHandle.getProcessId());
 	}
 
     public void setConnector(SchedulerConnector connector) {
@@ -34,4 +57,19 @@
         this.timerPersistence = timerPersistence;
     }
 
+    public void setRuntimeSessionConfiguratorBeanName(String runtimeSessionConfiguratorBeanName) {
+        this.runtimeSessionConfiguratorBeanName = runtimeSessionConfiguratorBeanName;
+    }
+
+    public void setKnowledgeStoreServiceBeanName(String knowledgeStoreServiceBeanName) {
+        this.knowledgeStoreServiceBeanName = knowledgeStoreServiceBeanName;
+    }
+
+    public void setKnowledgeBaseBeanName(String knowledgeBaseBeanName) {
+        this.knowledgeBaseBeanName = knowledgeBaseBeanName;
+    }
+
+    public void setEnvironmentBeanName(String environmentBeanName) {
+        this.environmentBeanName = environmentBeanName;
+    }
 }

Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/connector/SchedulerConnector.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/connector/SchedulerConnector.java	2010-08-13 08:14:27 UTC (rev 34694)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/connector/SchedulerConnector.java	2010-08-13 08:26:20 UTC (rev 34695)
@@ -5,7 +5,7 @@
 
 public interface SchedulerConnector {
 
-	public void save(ProcessJobContext processContext);
+	public void save(ProcessJobContext processContext, int sessionId, long timerId, String runtimeSessionConfiguratorBeanName, String knowledgeStoreServiceBeanName, String knowledgeBaseBeanName, String environmentBeanName);
 	public boolean remove(ProcessJobHandle jobHandle);
 
 }

Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/connector/impl/HornetQSchedulerConnector.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/connector/impl/HornetQSchedulerConnector.java	2010-08-13 08:14:27 UTC (rev 34694)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/connector/impl/HornetQSchedulerConnector.java	2010-08-13 08:26:20 UTC (rev 34695)
@@ -18,28 +18,37 @@
 	private ClientSession session;
 	private ClientProducer producer;
 
-	public void save(ProcessJobContext processContext) {
-		ByteArrayOutputStream baos = new ByteArrayOutputStream();
-		ObjectOutputStream oout;
-		try {
-			oout = new ObjectOutputStream(baos);
-			InsertScheduledTimerMessage insertTimerMessage = new InsertScheduledTimerMessage();
-			insertTimerMessage.setProcessInstanceId(processContext.getProcessInstanceId());
-			insertTimerMessage.setPeriod(processContext.getTimer().getPeriod());
-			insertTimerMessage.setDelay(processContext.getTimer().getDelay());
-			oout.writeObject(insertTimerMessage);
-			ClientMessage message = session.createMessage(true);
-			message.getBodyBuffer().writeBytes(baos.toByteArray());
-			producer.send(message);
-		} catch (IOException e) {
-			throw new RuntimeException("Error creating message", e);
-		} catch (HornetQException e) {
-			throw new RuntimeException("Error writing message", e);
-		}
-	}
+    public void save(ProcessJobContext processContext, int sessionId, long timerId, String runtimeSessionConfiguratorBeanName,
+            String knowledgeStoreServiceBeanName, String knowledgeBaseBeanName, String environmentBeanName) {
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        ObjectOutputStream oout;
+        try {
+            oout = new ObjectOutputStream(baos);
+            
+            InsertScheduledTimerMessage insertTimerMessage = new InsertScheduledTimerMessage();
+            insertTimerMessage.setProcessInstanceId(processContext.getProcessInstanceId());
+            insertTimerMessage.setPeriod(processContext.getTimer().getPeriod());
+            insertTimerMessage.setDelay(processContext.getTimer().getDelay());
+            insertTimerMessage.setEnvironmentBeanName(environmentBeanName);
+            insertTimerMessage.setKnowledgeBaseBeanName(knowledgeBaseBeanName);
+            insertTimerMessage.setKnowledgeStoreServiceBeanName(knowledgeStoreServiceBeanName);
+            insertTimerMessage.setRuntimeSessionConfiguratorBeanName(runtimeSessionConfiguratorBeanName);
+            insertTimerMessage.setSessionId(sessionId);
+            insertTimerMessage.setTimerId(timerId);
+            
+            oout.writeObject(insertTimerMessage);
+            ClientMessage message = session.createMessage(true);
+            message.getBodyBuffer().writeBytes(baos.toByteArray());
+            producer.send(message);
+        } catch (IOException e) {
+            throw new RuntimeException("Error creating message", e);
+        } catch (HornetQException e) {
+            throw new RuntimeException("Error writing message", e);
+        }
+    }
 
 	public boolean remove(ProcessJobHandle jobHandle) {
-		// TODO Auto-generated method stub
+		// TODO Remove from scheduler
 		return true;
 	}
 

Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/java/org/drools/timer/test/PersistentTimerProcessTest.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/java/org/drools/timer/test/PersistentTimerProcessTest.java	2010-08-13 08:14:27 UTC (rev 34694)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/java/org/drools/timer/test/PersistentTimerProcessTest.java	2010-08-13 08:26:20 UTC (rev 34695)
@@ -78,7 +78,7 @@
         long processId = ksession.startProcess("timerProcess").getId();
         ksession.dispose();
         
-        Thread.sleep(5000); // let the scheduler trigger the jobs
+        Thread.sleep(10000); // let the scheduler trigger the jobs
         
         //check process ended
         ksession = sessionManager.loadSession(sessionId);

Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/resources/timerProcessSession.xml
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/resources/timerProcessSession.xml	2010-08-13 08:14:27 UTC (rev 34694)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/resources/timerProcessSession.xml	2010-08-13 08:26:20 UTC (rev 34695)
@@ -65,6 +65,11 @@
   
   <!-- persistence strategy configuration -->
   <bean id="quartzPersistenceStrategy" class="org.drools.timer.core.ProcessTimerQuartzPersistenceStrategy">
+    <property name="runtimeSessionConfiguratorBeanName" value="sessionConfigurator" />
+    <property name="knowledgeStoreServiceBeanName" value="kstore"/>
+    <property name="knowledgeBaseBeanName" value="kbase"/>
+    <property name="environmentBeanName" value="env"/>
+    
     <property name="connector">
       <bean class="org.drools.timer.core.connector.impl.HornetQSchedulerConnector">
         <property name="session" ref="clientSession" />

Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/timer/message/impl/InsertScheduledTimerMessage.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/timer/message/impl/InsertScheduledTimerMessage.java	2010-08-13 08:14:27 UTC (rev 34694)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/timer/message/impl/InsertScheduledTimerMessage.java	2010-08-13 08:26:20 UTC (rev 34695)
@@ -8,7 +8,14 @@
 
 	private long period;
 	private long delay;
+    private String runtimeSessionConfiguratorBeanName;
+    private String knowledgeStoreServiceBeanName;
+    private String knowledgeBaseBeanName;
+    private String environmentBeanName;
+    private int sessionId;
+    private long timerId;
 
+
 	public void setPeriod(long period) {
 		this.period = period;
 	}
@@ -21,5 +28,41 @@
 	public long getDelay() {
 		return delay;
 	}
+    public String getRuntimeSessionConfiguratorBeanName() {
+        return runtimeSessionConfiguratorBeanName;
+    }
+    public void setRuntimeSessionConfiguratorBeanName(String runtimeSessionConfiguratorBeanName) {
+        this.runtimeSessionConfiguratorBeanName = runtimeSessionConfiguratorBeanName;
+    }
+    public String getKnowledgeStoreServiceBeanName() {
+        return knowledgeStoreServiceBeanName;
+    }
+    public void setKnowledgeStoreServiceBeanName(String knowledgeStoreServiceBeanName) {
+        this.knowledgeStoreServiceBeanName = knowledgeStoreServiceBeanName;
+    }
+    public String getKnowledgeBaseBeanName() {
+        return knowledgeBaseBeanName;
+    }
+    public void setKnowledgeBaseBeanName(String knowledgeBaseBeanName) {
+        this.knowledgeBaseBeanName = knowledgeBaseBeanName;
+    }
+    public String getEnvironmentBeanName() {
+        return environmentBeanName;
+    }
+    public void setEnvironmentBeanName(String environmentBeanName) {
+        this.environmentBeanName = environmentBeanName;
+    }
+    public int getSessionId() {
+        return sessionId;
+    }
+    public void setSessionId(int sessionId) {
+        this.sessionId = sessionId;
+    }
+    public long getTimerId() {
+        return timerId;
+    }
+    public void setTimerId(long timerId) {
+        this.timerId = timerId;
+    }
 
 }

Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/timer/persistence/JPATimerPersistence.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/timer/persistence/JPATimerPersistence.java	2010-08-13 08:14:27 UTC (rev 34694)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/timer/persistence/JPATimerPersistence.java	2010-08-13 08:26:20 UTC (rev 34695)
@@ -2,14 +2,19 @@
 
 import javax.persistence.EntityManager;
 import javax.persistence.EntityManagerFactory;
+import javax.persistence.NoResultException;
 
 import org.drools.timer.persistence.model.TimerState;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class JPATimerPersistence implements TimerPersistence {
 
+    private static Logger logger = LoggerFactory.getLogger(JPATimerPersistence.class);
+    
 	private EntityManagerFactory entityManagerFactory;
 
-	public void save(final TimerState object) {
+	public void save(TimerState object) {
 	    getEntityManager().persist(object);
 	}
 
@@ -29,9 +34,12 @@
 		return timerState;
 	}
 
-	public void remove(long processInstanceId) {
-	    getEntityManager().createQuery("DELETE t FROM TimerState t WHERE t.processInstanceId=:processInstanceId")
-		.setParameter("processInstanceId", processInstanceId).executeUpdate();
+	public boolean remove(long processInstanceId) {
+	    boolean removed = getEntityManager().createQuery("delete TimerState where processInstanceId=:processId")
+               .setParameter("processId", processInstanceId)
+               .executeUpdate() == 1;
+	    logger.debug("Removing timer for process instance " + processInstanceId);
+        return removed;
 	}
 
     private EntityManager getEntityManager(){
@@ -46,4 +54,17 @@
         this.entityManagerFactory = entityManagerFactory;
     }
 
+    public boolean exists(long timerId, long processInstanceId) {
+        try{
+        getEntityManager()
+            .createQuery("from TimerState as ts where ts.processInstanceId = :processInstanceId and ts.timerId = :timerId")
+            .setParameter("processInstanceId", processInstanceId)
+            .setParameter("timerId", timerId)
+        .getSingleResult();
+        return true;
+        } catch (NoResultException nre){
+            return false;
+        }
+    }
+
 }

Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/timer/persistence/TimerPersistence.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/timer/persistence/TimerPersistence.java	2010-08-13 08:14:27 UTC (rev 34694)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/timer/persistence/TimerPersistence.java	2010-08-13 08:26:20 UTC (rev 34695)
@@ -10,6 +10,8 @@
 
 	public boolean isExecutable(long processInstanceId);
 
-	public void remove(long processInstanceId);
+	public boolean remove(long processInstanceId);
 
+    public boolean exists(long timerId, long processInstanceId);
+
 }

Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/timer/persistence/model/TimerState.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/timer/persistence/model/TimerState.java	2010-08-13 08:14:27 UTC (rev 34694)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/timer/persistence/model/TimerState.java	2010-08-13 08:26:20 UTC (rev 34695)
@@ -10,6 +10,7 @@
 
 	private Integer id;
 	private Long processInstanceId;
+	private long timerId;
 	private boolean executed;
 
 	@Id
@@ -32,5 +33,11 @@
 	public void setExecuted(boolean executed) {
 		this.executed = executed;
 	}
+    public long getTimerId() {
+        return timerId;
+    }
+    public void setTimerId(long timerId) {
+        this.timerId = timerId;
+    }
 
 }

Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/TimerScheduler.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/TimerScheduler.java	2010-08-13 08:14:27 UTC (rev 34694)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/TimerScheduler.java	2010-08-13 08:26:20 UTC (rev 34695)
@@ -7,7 +7,6 @@
 import org.drools.timer.message.impl.InsertScheduledTimerMessage;
 import org.drools.timer.message.impl.RemoveScheduledTimerMessage;
 import org.drools.timer.persistence.TimerPersistence;
-import org.drools.timer.persistence.model.TimerState;
 import org.drools.timer.scheduler.job.TimerExecutorJob;
 import org.hornetq.api.core.client.ClientProducer;
 import org.hornetq.api.core.client.ClientSession;
@@ -30,9 +29,17 @@
 	private ClientSession session;
 
 	private void process(InsertScheduledTimerMessage message) {
+	    try{ Thread.sleep(3000); } catch(Exception d) {};
 		JobDetail job = new JobDetail(message.getProcessInstanceId().toString(), Scheduler.DEFAULT_GROUP, TimerExecutorJob.class);
+		
 		job.getJobDataMap().put(TimerExecutorJob.PROCESS_INSTANCE_ID, message.getProcessInstanceId());
-		System.out.println("timerExecutorConnector: " + timerExecutorConnector);
+		job.getJobDataMap().put(TimerExecutorJob.ENV, message.getEnvironmentBeanName());
+		job.getJobDataMap().put(TimerExecutorJob.KBASE, message.getKnowledgeBaseBeanName());
+		job.getJobDataMap().put(TimerExecutorJob.KSTORE, message.getKnowledgeStoreServiceBeanName());
+		job.getJobDataMap().put(TimerExecutorJob.SESSION_CONFIGURATION, message.getRuntimeSessionConfiguratorBeanName());
+        job.getJobDataMap().put(TimerExecutorJob.KSESSION_ID, message.getSessionId());
+        job.getJobDataMap().put(TimerExecutorJob.TIMER_ID, message.getTimerId());
+		
 		job.getJobDataMap().put(TimerExecutorJob.TIMER_EXECUTOR_CONNECTOR, timerExecutorConnector);
 		job.getJobDataMap().put(TimerExecutorJob.TIMER_EXECUTOR_SESSION, session);
 		SimpleTrigger trigger = new SimpleTrigger(createUniqueTimerJobId(message),
@@ -47,10 +54,10 @@
 			logger.error("Error scheduling timer " + message.getProcessInstanceId(), e);
 		}
 		logger.info("new timer scheduled");
-		TimerState timerState = new TimerState();
-		timerState.setProcessInstanceId(message.getProcessInstanceId());
-		timerPersistence.save(timerState);
-		timerPersistence.isExecutable(message.getProcessInstanceId());
+		//TimerState timerState = new TimerState();
+		//timerState.setProcessInstanceId(message.getProcessInstanceId());
+		//timerPersistence.save(timerState);
+		//timerPersistence.isExecutable(message.getProcessInstanceId());
 	}
 
 	private Date createActivationTime(InsertScheduledTimerMessage message) {

Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/TimerSchedulerHornetQServer.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/TimerSchedulerHornetQServer.java	2010-08-13 08:14:27 UTC (rev 34694)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/TimerSchedulerHornetQServer.java	2010-08-13 08:26:20 UTC (rev 34695)
@@ -52,6 +52,7 @@
 			}
 		}
 		catch (Exception e) {
+		    logger.error("Internal server error", e);
 			throw new RuntimeException("Server Exception with class " + getClass());
 		}
 	}

Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/job/TimerExecutorJob.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/job/TimerExecutorJob.java	2010-08-13 08:14:27 UTC (rev 34694)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/job/TimerExecutorJob.java	2010-08-13 08:26:20 UTC (rev 34695)
@@ -14,29 +14,57 @@
 import org.quartz.JobDataMap;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
+import org.quartz.SimpleTrigger;
 
 public class TimerExecutorJob implements Job {
 
-	public static final String PROCESS_INSTANCE_ID = "ProcessInstanceId";
+	public static final String PROCESS_INSTANCE_ID = "processInstanceId";
+	public static final String SESSION_CONFIGURATION = "runtimeSessionConfiguratorBeanName";
+	public static final String KSTORE = "knowledgeStoreServiceBeanName";
+	public static final String KBASE = "knowledgeBaseBeanName";
+	public static final String ENV = "environmentBeanName";
+	public static final String KSESSION_ID = "sessionId";
+	public static final String TIMER_ID = "timerId";
+
 	public static final String TIMER_EXECUTOR_CONNECTOR = "timerExecutorConnector";
 	public static final String TIMER_EXECUTOR_SESSION = "timerExecutorSession";
 
 	public void execute(JobExecutionContext context) throws JobExecutionException {
+	    long period = ((SimpleTrigger)context.getTrigger()).getRepeatInterval();
 		JobDataMap data = context.getJobDetail().getJobDataMap();
-		Long processInstanceId = (Long) data.get(PROCESS_INSTANCE_ID);
+		long processInstanceId = data.getLong(PROCESS_INSTANCE_ID);
+		int sessionId = data.getInt(KSESSION_ID);
+	    String runtimeSessionConfiguratorBeanName = data.getString(SESSION_CONFIGURATION);
+	    String knowledgeStoreServiceBeanName = data.getString(KSTORE);
+	    String knowledgeBaseBeanName = data.getString(KBASE);
+	    String environmentBeanName = data.getString(ENV);
+	    long timerId = data.getLong(TIMER_ID);
+
 		ClientProducer producer = (ClientProducer) data.get(TIMER_EXECUTOR_CONNECTOR);
 		ClientSession session = (ClientSession) data.get(TIMER_EXECUTOR_SESSION);
-		write(session, producer, processInstanceId);
+		write(session, timerId, producer, processInstanceId, sessionId, period, runtimeSessionConfiguratorBeanName,
+		        knowledgeStoreServiceBeanName, knowledgeBaseBeanName, environmentBeanName);
 		System.out.println("Process Instance ID: " + processInstanceId + " executed at " + new Date());
 	}
 
-	private void write(ClientSession session, ClientProducer producer, long processInstanceId) {
+	private void write(ClientSession session, long timerId, ClientProducer producer, long processInstanceId, int sessionId, 
+	        long period, String runtimeSessionConfiguratorBeanName, String knowledgeStoreServiceBeanName, 
+	        String knowledgeBaseBeanName, String environmentBeanName) {
 		ByteArrayOutputStream baos = new ByteArrayOutputStream();
 		ObjectOutputStream oout;
 		try {
 			oout = new ObjectOutputStream(baos);
+			
 			TimerJob timerJob = new TimerJob();
 			timerJob.setProcessId(processInstanceId);
+			timerJob.setSessionId(sessionId);
+			timerJob.setEnvironmentBeanName(environmentBeanName);
+			timerJob.setKnowledgeBaseBeanName(knowledgeBaseBeanName);
+			timerJob.setKnowledgeStoreServiceBeanName(knowledgeStoreServiceBeanName);
+			timerJob.setRuntimeSessionConfiguratorBeanName(runtimeSessionConfiguratorBeanName);
+			timerJob.setPeriod(period);
+			timerJob.setTimerId(timerId);
+			
 			oout.writeObject(timerJob);
 			ClientMessage message = session.createMessage(true);
 			message.getBodyBuffer().writeBytes(baos.toByteArray());



More information about the jboss-svn-commits mailing list