[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