[jboss-svn-commits] JBL Code SVN: r35140 - in labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer: drools-timer-executor/src/main/java/org/drools/job/executor and 12 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Sep 14 11:37:46 EDT 2010
Author: diegoll
Date: 2010-09-14 11:37:45 -0400 (Tue, 14 Sep 2010)
New Revision: 35140
Added:
labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutorFactory.java
labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutorFactoryImpl.java
labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/MessageErrorMechanism.java
labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/RetryForeverErrorMechanism.java
labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/
labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/KnowledgeSessionConfiguratorFactory.java
labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/KnowledgeSessionConfiguratorFactoryImpl.java
labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/KnowledgeSessionLoader.java
labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/SpringKnowledgeSessionLoader.java
labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/
labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/
labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/ExecutionJob.java
labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/SessionConfiguratorType.java
labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/spring/
labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/spring/SpringKnowledgeSessionLoaderConfiguration.java
labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/timer/
labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/timer/TimerJob.java
Removed:
labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/timer/message/TimerJob.java
Modified:
labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-core/src/test/java/org/drools/timer/test/PersistentTimerProcessTest.java
labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutor.java
labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutorService.java
labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/timer/TimerJobExecutor.java
labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/resources/executorContext.xml
labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/TimerExecutorServiceTest.java
labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/job/TimerExecutorJob.java
labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/java/org/drools/timer/scheduler/TimerSchedulerServiceTest.java
Log:
[JBRULES-2616] executor refactor to support multiple session loaders
Modified: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-core/src/test/java/org/drools/timer/test/PersistentTimerProcessTest.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-core/src/test/java/org/drools/timer/test/PersistentTimerProcessTest.java 2010-09-14 14:33:27 UTC (rev 35139)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-core/src/test/java/org/drools/timer/test/PersistentTimerProcessTest.java 2010-09-14 15:37:45 UTC (rev 35140)
@@ -8,7 +8,6 @@
import org.drools.persistence.jpa.KnowledgeStoreService;
import org.drools.runtime.Environment;
import org.drools.runtime.StatefulKnowledgeSession;
-import org.drools.timer.message.TimerJob;
import org.drools.timer.scheduler.TimerSchedulerHornetQService;
import org.h2.tools.DeleteDbFiles;
import org.h2.tools.Server;
@@ -60,8 +59,7 @@
;
//start services
- @SuppressWarnings("unchecked")
- JobExecutorService<TimerJob> timerJobExecutor = (JobExecutorService<TimerJob>) executorApplicationContext.getBean("timerJobExecutorService");
+ JobExecutorService timerJobExecutor = (JobExecutorService) executorApplicationContext.getBean("jobExecutorService");
TimerSchedulerHornetQService timerScheduler = (TimerSchedulerHornetQService) schedulerApplicationContext.getBean("schedulerService");
new Thread(timerJobExecutor, "executor").start();
new Thread(timerScheduler, "scheduler").start();
Modified: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutor.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutor.java 2010-09-14 14:33:27 UTC (rev 35139)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutor.java 2010-09-14 15:37:45 UTC (rev 35140)
@@ -1,7 +1,9 @@
package org.drools.job.executor;
-public interface JobExecutor<T> {
+import org.drools.executor.message.ExecutionJob;
- public void execute(T job);
-
+
+public interface JobExecutor {
+
+ void execute(ExecutionJob job);
}
Added: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutorFactory.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutorFactory.java (rev 0)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutorFactory.java 2010-09-14 15:37:45 UTC (rev 35140)
@@ -0,0 +1,10 @@
+package org.drools.job.executor;
+
+import org.drools.executor.message.ExecutionJob;
+
+
+public interface JobExecutorFactory {
+
+ <T extends ExecutionJob> JobExecutor getExecutor(Class<T> job);
+
+}
Property changes on: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutorFactory.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutorFactoryImpl.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutorFactoryImpl.java (rev 0)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutorFactoryImpl.java 2010-09-14 15:37:45 UTC (rev 35140)
@@ -0,0 +1,23 @@
+package org.drools.job.executor;
+
+import org.drools.executor.message.ExecutionJob;
+import org.drools.executor.message.timer.TimerJob;
+
+public class JobExecutorFactoryImpl
+ implements
+ JobExecutorFactory {
+
+ JobExecutor timerJobExecutor;
+
+ public <T extends ExecutionJob> JobExecutor getExecutor(Class<T> job) {
+ if ( job.isAssignableFrom( TimerJob.class ) ) {
+ return timerJobExecutor;
+ }
+ throw new IllegalArgumentException( job.getSimpleName() + " job not supported" );
+ }
+
+ public void setTimerJobExecutor(JobExecutor timerJobExecutor) {
+ this.timerJobExecutor = timerJobExecutor;
+ }
+
+}
Property changes on: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutorFactoryImpl.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutorService.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutorService.java 2010-09-14 14:33:27 UTC (rev 35139)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutorService.java 2010-09-14 15:37:45 UTC (rev 35140)
@@ -3,36 +3,36 @@
import java.util.TimerTask;
import java.util.concurrent.atomic.AtomicBoolean;
+import org.drools.executor.message.ExecutionJob;
import org.hornetq.api.core.HornetQException;
import org.hornetq.api.core.client.ClientConsumer;
import org.hornetq.api.core.client.ClientMessage;
-import org.hornetq.api.core.client.ClientProducer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class JobExecutorService<T> extends TimerTask {
+public class JobExecutorService extends TimerTask {
private static Logger logger = LoggerFactory.getLogger(JobExecutorService.class);
private ClientConsumer consumer;
- private ClientProducer producer;
+ private HornetQMessageTranslator<ExecutionJob> translator;
+ private MessageErrorMechanism messageErrorMechanism;
+ private JobExecutorFactory executorFactory;
private AtomicBoolean running = new AtomicBoolean(false);
- private HornetQMessageTranslator<T> translator;
- private JobExecutor<T> executor;
-
+
public void run() {
running.set(true);
try{
while (running.get()) {
ClientMessage clientMessage = consumer.receive();
if (clientMessage!=null) {
+ ExecutionJob job = translator.readMessage(clientMessage);
+ JobExecutor executor = executorFactory.getExecutor(job.getClass());
try{
- T job = translator.readMessage(clientMessage);
executor.execute(job);
} catch (Exception e) {
logger.error("error running job executor service", e);
- logger.debug("retrying message");
- producer.send(clientMessage);
+ messageErrorMechanism.onMessageError( clientMessage, e );
}
}
}
@@ -58,16 +58,16 @@
this.consumer = consumer;
}
- public void setTranslator(HornetQMessageTranslator<T> translator) {
+ public void setTranslator(HornetQMessageTranslator<ExecutionJob> translator) {
this.translator = translator;
}
- public void setExecutor(JobExecutor<T> executor) {
- this.executor = executor;
- }
+ public void setMessageErrorMechanism(MessageErrorMechanism messageErrorMechanism) {
+ this.messageErrorMechanism = messageErrorMechanism;
+ }
- public void setProducer(ClientProducer producer) {
- this.producer = producer;
- }
+ public void setExecutorFactory(JobExecutorFactory executorFactory) {
+ this.executorFactory = executorFactory;
+ }
}
Added: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/MessageErrorMechanism.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/MessageErrorMechanism.java (rev 0)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/MessageErrorMechanism.java 2010-09-14 15:37:45 UTC (rev 35140)
@@ -0,0 +1,8 @@
+package org.drools.job.executor;
+
+import org.hornetq.api.core.client.ClientMessage;
+
+public interface MessageErrorMechanism {
+
+ void onMessageError(ClientMessage failingMessage, Throwable error);
+}
Property changes on: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/MessageErrorMechanism.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/RetryForeverErrorMechanism.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/RetryForeverErrorMechanism.java (rev 0)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/RetryForeverErrorMechanism.java 2010-09-14 15:37:45 UTC (rev 35140)
@@ -0,0 +1,33 @@
+package org.drools.job.executor;
+
+import org.hornetq.api.core.HornetQException;
+import org.hornetq.api.core.client.ClientMessage;
+import org.hornetq.api.core.client.ClientProducer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class RetryForeverErrorMechanism
+ implements
+ MessageErrorMechanism {
+
+ private static Logger logger = LoggerFactory.getLogger(RetryForeverErrorMechanism.class);
+
+ private ClientProducer producer;
+
+ public void onMessageError(ClientMessage failingMessage,
+ Throwable error) {
+ logger.debug("retrying message");
+ try {
+ producer.send(failingMessage);
+ } catch ( HornetQException e ) {
+ String errorMessage = "Error running retry mechanism";
+ logger.error( errorMessage, e );
+ throw new RuntimeException(errorMessage, e);
+ }
+ }
+
+ public void setProducer(ClientProducer producer) {
+ this.producer = producer;
+ }
+
+}
Property changes on: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/RetryForeverErrorMechanism.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/KnowledgeSessionConfiguratorFactory.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/KnowledgeSessionConfiguratorFactory.java (rev 0)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/KnowledgeSessionConfiguratorFactory.java 2010-09-14 15:37:45 UTC (rev 35140)
@@ -0,0 +1,10 @@
+package org.drools.job.executor.session;
+
+import org.drools.executor.message.SessionConfiguratorType;
+
+public interface KnowledgeSessionConfiguratorFactory {
+
+ KnowledgeSessionLoader getKnowledgeSessionExecutor(SessionConfiguratorType sessionConfiguratorType,
+ Object sessionConfiguratiorData);
+
+}
Property changes on: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/KnowledgeSessionConfiguratorFactory.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/KnowledgeSessionConfiguratorFactoryImpl.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/KnowledgeSessionConfiguratorFactoryImpl.java (rev 0)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/KnowledgeSessionConfiguratorFactoryImpl.java 2010-09-14 15:37:45 UTC (rev 35140)
@@ -0,0 +1,28 @@
+package org.drools.job.executor.session;
+
+import org.drools.executor.message.SessionConfiguratorType;
+import org.drools.executor.message.spring.SpringKnowledgeSessionLoaderConfiguration;
+
+public class KnowledgeSessionConfiguratorFactoryImpl
+ implements
+ KnowledgeSessionConfiguratorFactory {
+
+ private SpringKnowledgeSessionLoader springKnowledgeSessionLoader;
+
+ public KnowledgeSessionLoader getKnowledgeSessionExecutor(SessionConfiguratorType sessionConfiguratorType,
+ Object sessionConfiguratiorData) {
+ switch ( sessionConfiguratorType ) {
+ case SPRING :
+ springKnowledgeSessionLoader
+ .setSessionLoaderConfiguration((SpringKnowledgeSessionLoaderConfiguration) sessionConfiguratiorData);
+ return springKnowledgeSessionLoader;
+ default :
+ throw new IllegalArgumentException( "Unsupported configuration type" );
+ }
+ }
+
+ public void setSpringKnowledgeSessionLoader(SpringKnowledgeSessionLoader springKnowledgeSessionLoader) {
+ this.springKnowledgeSessionLoader = springKnowledgeSessionLoader;
+ }
+
+}
Property changes on: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/KnowledgeSessionConfiguratorFactoryImpl.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/KnowledgeSessionLoader.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/KnowledgeSessionLoader.java (rev 0)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/KnowledgeSessionLoader.java 2010-09-14 15:37:45 UTC (rev 35140)
@@ -0,0 +1,8 @@
+package org.drools.job.executor.session;
+
+import org.drools.runtime.StatefulKnowledgeSession;
+
+public interface KnowledgeSessionLoader {
+
+ StatefulKnowledgeSession loadSession(int sessionId);
+}
\ No newline at end of file
Property changes on: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/KnowledgeSessionLoader.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/SpringKnowledgeSessionLoader.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/SpringKnowledgeSessionLoader.java (rev 0)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/SpringKnowledgeSessionLoader.java 2010-09-14 15:37:45 UTC (rev 35140)
@@ -0,0 +1,48 @@
+package org.drools.job.executor.session;
+
+import org.drools.KnowledgeBase;
+import org.drools.core.util.KnowledgeSessionRuntimeConfigurator;
+import org.drools.executor.message.spring.SpringKnowledgeSessionLoaderConfiguration;
+import org.drools.persistence.jpa.KnowledgeStoreService;
+import org.drools.runtime.Environment;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class SpringKnowledgeSessionLoader implements KnowledgeSessionLoader {
+
+ private static Logger logger = LoggerFactory.getLogger(SpringKnowledgeSessionLoader.class);
+ private ApplicationContext sessionContext;
+ private SpringKnowledgeSessionLoaderConfiguration sessionLoaderConfiguration;
+
+ public StatefulKnowledgeSession loadSession(int sessionId){
+ return loadSession(sessionId,
+ sessionLoaderConfiguration.getEnvironmentBeanName(),
+ sessionLoaderConfiguration.getKnowledgeBaseBeanName(),
+ sessionLoaderConfiguration.getKnowledgeStoreServiceBeanName(),
+ sessionLoaderConfiguration.getRuntimeSessionConfiguratorBeanName()
+ );
+ }
+
+ private StatefulKnowledgeSession loadSession(int sessionId, String envName, String kbaseName, String kstoreName, String configuratorName) {
+ Environment env = (Environment) sessionContext.getBean(envName);
+ KnowledgeStoreService kstore = (KnowledgeStoreService) sessionContext.getBean(kstoreName);
+ KnowledgeBase kbase = (KnowledgeBase) sessionContext.getBean(kbaseName);
+ KnowledgeSessionRuntimeConfigurator configurator = (KnowledgeSessionRuntimeConfigurator) sessionContext.getBean(configuratorName);
+ StatefulKnowledgeSession ksession = kstore.loadStatefulKnowledgeSession(sessionId, kbase, null, env);
+ configurator.configure(ksession);
+ return ksession;
+ }
+
+ public void setSessionContextLocation(String sessionContextLocation) {
+ logger.debug("creating session context at " + sessionContextLocation);
+ sessionContext = new ClassPathXmlApplicationContext(sessionContextLocation);
+ logger.debug("session context created");
+ }
+
+ public void setSessionLoaderConfiguration(SpringKnowledgeSessionLoaderConfiguration sessionConfiguratiorData) {
+ this.sessionLoaderConfiguration = sessionConfiguratiorData;
+ }
+}
Property changes on: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/SpringKnowledgeSessionLoader.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/timer/TimerJobExecutor.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/timer/TimerJobExecutor.java 2010-09-14 14:33:27 UTC (rev 35139)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/timer/TimerJobExecutor.java 2010-09-14 15:37:45 UTC (rev 35140)
@@ -1,80 +1,60 @@
package org.drools.job.executor.timer;
-import org.drools.KnowledgeBase;
import org.drools.command.impl.CommandBasedStatefulKnowledgeSession;
import org.drools.command.runtime.process.SignalEventCommand;
-import org.drools.core.util.KnowledgeSessionRuntimeConfigurator;
+import org.drools.executor.message.ExecutionJob;
+import org.drools.executor.message.timer.TimerJob;
import org.drools.job.executor.JobExecutor;
-import org.drools.persistence.jpa.KnowledgeStoreService;
+import org.drools.job.executor.session.KnowledgeSessionConfiguratorFactory;
import org.drools.process.instance.timer.TimerInstance;
-import org.drools.runtime.Environment;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.process.ProcessInstance;
-import org.drools.timer.message.TimerJob;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-public class TimerJobExecutor implements JobExecutor<TimerJob> {
+public class TimerJobExecutor implements JobExecutor {
- private static Logger logger = LoggerFactory.getLogger(TimerJobExecutor.class);
- private ApplicationContext sessionContext;
-
-
- public void execute(TimerJob job) {
- long processInstanceId = job.getProcessId();
- logger.info("executing timer job");
- logger.debug("Process instance to signal: " + processInstanceId);
- StatefulKnowledgeSession ksession = loadSession(
- job.getSessionId(),
- job.getEnvironmentBeanName(),
- job.getKnowledgeBaseBeanName(),
- job.getKnowledgeStoreServiceBeanName(),
- job.getRuntimeSessionConfiguratorBeanName(),
- getSessionContext());
-
- ProcessInstance processInstance = ksession.getProcessInstance(processInstanceId);
- if(null == processInstance){
- throw new IllegalArgumentException("unexistent process instance with ID: " + processInstanceId);
- }
-
-
- CommandBasedStatefulKnowledgeSession executorService = (CommandBasedStatefulKnowledgeSession) ksession;
+ private static Logger logger = LoggerFactory.getLogger(TimerJobExecutor.class);
+ private KnowledgeSessionConfiguratorFactory sessionConfiguratorFactory;
+
+ private void execute(TimerJob job) {
+ long processInstanceId = job.getProcessId();
+ logger.info("executing timer job");
+ logger.debug("Process instance to signal: " + processInstanceId);
+ StatefulKnowledgeSession ksession = sessionConfiguratorFactory.
+ getKnowledgeSessionExecutor(
+ job.getSessionConfiguratorType(),
+ job.getSessionConfiguratiorData())
+ .loadSession(job.getSessionId());
+
+ ProcessInstance processInstance = ksession.getProcessInstance(processInstanceId);
+ if(null == processInstance){
+ throw new IllegalArgumentException("unexistent process instance with ID: " + processInstanceId);
+ }
+
+ CommandBasedStatefulKnowledgeSession executorService = (CommandBasedStatefulKnowledgeSession) ksession;
- TimerInstance timerInstance = new TimerInstance();
- timerInstance.setId(job.getTimerId());
- timerInstance.setTimerId(job.getTimerId());
- timerInstance.setPeriod(job.getPeriod());
+ TimerInstance timerInstance = new TimerInstance();
+ timerInstance.setId(job.getTimerId());
+ timerInstance.setTimerId(job.getTimerId());
+ timerInstance.setPeriod(job.getPeriod());
- SignalEventCommand signalCommand = new SignalEventCommand();
- signalCommand.setProcessInstanceId(processInstanceId);
- signalCommand.setEventType("timerTriggered");
- signalCommand.setEvent(timerInstance);
-
- executorService.execute(signalCommand);
-
- ksession.dispose();
+ SignalEventCommand signalCommand = new SignalEventCommand();
+ signalCommand.setProcessInstanceId(processInstanceId);
+ signalCommand.setEventType("timerTriggered");
+ signalCommand.setEvent(timerInstance);
+
+ executorService.execute(signalCommand);
+
+ ksession.dispose();
- }
+ }
- public void setSessionContextLocation(String sessionContextLocation) {
- logger.debug("creating session context at " + sessionContextLocation);
- sessionContext = new ClassPathXmlApplicationContext(sessionContextLocation);
- logger.debug("session context created");
+ public void execute(ExecutionJob job) {
+ execute((TimerJob)job);
}
-
- private ApplicationContext getSessionContext(){
- return sessionContext;
+
+ public void setSessionConfiguratorFactory(KnowledgeSessionConfiguratorFactory sessionConfiguratorFactory) {
+ this.sessionConfiguratorFactory = sessionConfiguratorFactory;
}
-
- private StatefulKnowledgeSession loadSession(int sessionId, String envName, String kbaseName, String kstoreName, String configuratorName, ApplicationContext sessionContext) {
- Environment env = (Environment) sessionContext.getBean(envName);
- KnowledgeStoreService kstore = (KnowledgeStoreService) sessionContext.getBean(kstoreName);
- KnowledgeBase kbase = (KnowledgeBase) sessionContext.getBean(kbaseName);
- KnowledgeSessionRuntimeConfigurator configurator = (KnowledgeSessionRuntimeConfigurator) sessionContext.getBean(configuratorName);
- StatefulKnowledgeSession ksession = kstore.loadStatefulKnowledgeSession(sessionId, kbase, null, env);
- configurator.configure(ksession);
- return ksession;
- }
}
Modified: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/resources/executorContext.xml
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/resources/executorContext.xml 2010-09-14 14:33:27 UTC (rev 35139)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/resources/executorContext.xml 2010-09-14 15:37:45 UTC (rev 35140)
@@ -1,38 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:context="http://www.springframework.org/schema/context" xmlns:util="http://www.springframework.org/schema/util"
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
+ xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">
- <bean id="timerJobExecutorService" class="org.drools.job.executor.JobExecutorService">
+ <bean id="jobExecutorService" class="org.drools.job.executor.JobExecutorService">
<property name="consumer">
- <bean factory-bean="clientSession" factory-method="createConsumer" destroy-method="close">
+ <bean factory-bean="clientSession" factory-method="createConsumer"
+ destroy-method="close">
<constructor-arg value="executeTimerMessages" />
</bean>
</property>
- <property name="producer">
- <bean factory-bean="clientSession" factory-method="createProducer" destroy-method="close">
- <constructor-arg value="executeTimerMessages" />
+ <property name="translator" ref="messageTranslator" />
+ <property name="messageErrorMechanism">
+ <bean class="org.drools.job.executor.RetryForeverErrorMechanism">
+ <property name="producer">
+ <bean factory-bean="clientSession" factory-method="createProducer"
+ destroy-method="close">
+ <constructor-arg value="executeTimerMessages" />
+ </bean>
+ </property>
</bean>
</property>
-
- <property name="translator" ref="messageTranslator" />
- <property name="executor">
- <bean class="org.drools.job.executor.timer.TimerJobExecutor">
- <property name="sessionContextLocation" value="${sessioncontext.location}" />
+ <property name="executorFactory">
+ <bean class="org.drools.job.executor.JobExecutorFactoryImpl">
+ <property name="timerJobExecutor">
+ <bean class="org.drools.job.executor.timer.TimerJobExecutor">
+ <property name="sessionConfiguratorFactory">
+ <bean class="org.drools.job.executor.session.KnowledgeSessionConfiguratorFactoryImpl">
+ <property name="springKnowledgeSessionLoader">
+ <bean class="org.drools.job.executor.session.SpringKnowledgeSessionLoader">
+ <property name="sessionContextLocation" value="${sessioncontext.location}" />
+ </bean>
+ </property>
+ </bean>
+ </property>
+ </bean>
+ </property>
</bean>
</property>
</bean>
- <bean id="messageTranslator" class="org.drools.job.executor.utils.SerializedMessageTranslator">
+ <bean id="messageTranslator"
+ class="org.drools.job.executor.utils.SerializedMessageTranslator">
<property name="session" ref="clientSession" />
</bean>
<!-- client connection with the HornetQ server -->
- <bean id="clientSession" factory-bean="clientSessionFactory" factory-method="createSession" init-method="start" />
- <bean id="clientSessionFactory" class="org.hornetq.api.core.client.HornetQClient" factory-method="createClientSessionFactory"
- depends-on="hornetQServer">
+ <bean id="clientSession" factory-bean="clientSessionFactory"
+ factory-method="createSession" init-method="start" />
+ <bean id="clientSessionFactory" class="org.hornetq.api.core.client.HornetQClient"
+ factory-method="createClientSessionFactory" depends-on="hornetQServer">
<constructor-arg>
<bean class="org.hornetq.api.core.TransportConfiguration">
<constructor-arg>
@@ -42,7 +62,8 @@
<map>
<entry>
<key>
- <util:constant static-field="org.hornetq.integration.transports.netty.TransportConstants.PORT_PROP_NAME" />
+ <util:constant
+ static-field="org.hornetq.integration.transports.netty.TransportConstants.PORT_PROP_NAME" />
</key>
<value>5446</value>
</entry>
@@ -52,10 +73,11 @@
</constructor-arg>
</bean>
- <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
+ <bean id="propertyConfigurer"
+ class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:executor.properties" />
</bean>
<!-- dummy hornetQServer for override in tests -->
- <bean id="hornetQServer" class="java.lang.Object"/>
+ <bean id="hornetQServer" class="java.lang.Object" />
</beans>
\ No newline at end of file
Modified: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/TimerExecutorServiceTest.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/TimerExecutorServiceTest.java 2010-09-14 14:33:27 UTC (rev 35139)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/TimerExecutorServiceTest.java 2010-09-14 15:37:45 UTC (rev 35140)
@@ -1,11 +1,12 @@
package org.drools.job.executor.timer;
import java.util.Properties;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
import org.drools.KnowledgeBase;
import org.drools.core.util.KnowledgeSessionRuntimeConfigurator;
+import org.drools.executor.message.SessionConfiguratorType;
+import org.drools.executor.message.spring.SpringKnowledgeSessionLoaderConfiguration;
+import org.drools.executor.message.timer.TimerJob;
import org.drools.job.executor.HornetQMessageTranslator;
import org.drools.job.executor.JobExecutorService;
import org.drools.job.executor.utils.SerializedMessageTranslator;
@@ -13,7 +14,6 @@
import org.drools.runtime.Environment;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.process.ProcessInstance;
-import org.drools.timer.message.TimerJob;
import org.h2.tools.DeleteDbFiles;
import org.h2.tools.Server;
import org.hornetq.api.core.HornetQException;
@@ -50,6 +50,19 @@
DeleteDbFiles.execute( "", H2_DB_NAME, true );
}
+ /**
+ * This test checks what happens in the executor when an exception is throw.
+ * The current behavior is to re queue the message and retry until it completes
+ * successfully
+ * The process is
+ *
+ * start -> timer -> workitem which fail 5 attempts of completion -> end
+ *
+ * After scheduling the timer job and letting the executor do its work
+ * the process should be completed
+ * @throws InterruptedException
+ * @throws HornetQException
+ */
@Test
public void checkRetryExecution() throws InterruptedException, HornetQException{
String sessionContextLocation = "classpath:/retryExecutionProcessSession.xml";
@@ -68,7 +81,7 @@
//start the executor
AbstractApplicationContext executorContext = createExecutorContext(sessionContextLocation);
- JobExecutorService<TimerJob> timerJobExecutorService = startJobExecutor(executorContext);
+ JobExecutorService timerJobExecutorService = startJobExecutor(executorContext);
//start process
StatefulKnowledgeSession ksession = sessionManager.createSession();
@@ -123,7 +136,7 @@
//start the executor
AbstractApplicationContext executorContext = createExecutorContext(sessionContextLocation);
- JobExecutorService<TimerJob> timerJobExecutorService = startJobExecutor(executorContext);
+ JobExecutorService timerJobExecutorService = startJobExecutor(executorContext);
//start process
final StatefulKnowledgeSession ksession = sessionManager.createSession();
@@ -188,7 +201,7 @@
//start the executor
AbstractApplicationContext executorContext = createExecutorContext(sessionContextLocation);
- JobExecutorService<TimerJob> timerJobExecutorService = startJobExecutor(executorContext);
+ JobExecutorService timerJobExecutorService = startJobExecutor(executorContext);
//start process
StatefulKnowledgeSession ksession = sessionManager.createSession();
@@ -236,12 +249,9 @@
executorContext.close();
}
- private JobExecutorService<TimerJob> startJobExecutor(AbstractApplicationContext executorContext)
+ private JobExecutorService startJobExecutor(AbstractApplicationContext executorContext)
throws InterruptedException {
- @SuppressWarnings("unchecked")
- JobExecutorService<TimerJob> timerJobExecutorService = (JobExecutorService<TimerJob>) executorContext.getBean("timerJobExecutorService");
- //ExecutorService executor = Executors.newSingleThreadExecutor();
- //executor.execute(timerJobExecutorService);
+ JobExecutorService timerJobExecutorService = (JobExecutorService) executorContext.getBean("jobExecutorService");
new Thread(timerJobExecutorService, "executor").start();
Thread.sleep(1000); // executor doesn't guarantee you it'll run immediately
Assert.assertTrue(timerJobExecutorService.isRunning());
@@ -361,18 +371,19 @@
}
public void triggerTimerJob() throws HornetQException{
- TimerJob timerJob = new TimerJob();
+ SpringKnowledgeSessionLoaderConfiguration conf = new SpringKnowledgeSessionLoaderConfiguration();
+ conf.setKnowledgeStoreServiceBeanName(getKnowledgeStoreServiceBeanName());
+ conf.setRuntimeSessionConfiguratorBeanName(getKnowledgeSessionRuntimeConfiguratorBeanName());
+ conf.setEnvironmentBeanName(getEnvironmentBeanName());
+ conf.setKnowledgeBaseBeanName(getKnowledgeBaseBeanName());
+
+ TimerJob timerJob = new TimerJob(SessionConfiguratorType.SPRING, conf);
timerJob.setProcessId(getProcessId());
timerJob.setSessionId(getSessionId());
timerJob.setTimerId(getTimerId());
timerJob.setPeriod(getPeriod());
- timerJob.setKnowledgeStoreServiceBeanName(getKnowledgeStoreServiceBeanName());
- timerJob.setRuntimeSessionConfiguratorBeanName(getKnowledgeSessionRuntimeConfiguratorBeanName());
- timerJob.setEnvironmentBeanName(getEnvironmentBeanName());
- timerJob.setKnowledgeBaseBeanName(getKnowledgeBaseBeanName());
-
getProducer().send(getTranslator().writeMessage(timerJob));
}
Added: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/ExecutionJob.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/ExecutionJob.java (rev 0)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/ExecutionJob.java 2010-09-14 15:37:45 UTC (rev 35140)
@@ -0,0 +1,23 @@
+package org.drools.executor.message;
+
+import java.io.Serializable;
+
+public abstract class ExecutionJob implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+ private SessionConfiguratorType configuratorType;
+ private Object configuratorData;
+
+ public ExecutionJob(SessionConfiguratorType configuratorType, Object configuratorData) {
+ this.configuratorType = configuratorType;
+ this.configuratorData = configuratorData;
+ }
+
+ public SessionConfiguratorType getSessionConfiguratorType() {
+ return configuratorType;
+ }
+
+ public Object getSessionConfiguratiorData() {
+ return configuratorData;
+ }
+}
Property changes on: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/ExecutionJob.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/SessionConfiguratorType.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/SessionConfiguratorType.java (rev 0)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/SessionConfiguratorType.java 2010-09-14 15:37:45 UTC (rev 35140)
@@ -0,0 +1,6 @@
+package org.drools.executor.message;
+
+public enum SessionConfiguratorType {
+
+ SPRING;
+}
Property changes on: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/SessionConfiguratorType.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/spring/SpringKnowledgeSessionLoaderConfiguration.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/spring/SpringKnowledgeSessionLoaderConfiguration.java (rev 0)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/spring/SpringKnowledgeSessionLoaderConfiguration.java 2010-09-14 15:37:45 UTC (rev 35140)
@@ -0,0 +1,46 @@
+package org.drools.executor.message.spring;
+
+import java.io.Serializable;
+
+public class SpringKnowledgeSessionLoaderConfiguration implements Serializable{
+
+ private static final long serialVersionUID = 1L;
+
+ private String runtimeSessionConfiguratorBeanName;
+ private String knowledgeStoreServiceBeanName;
+ private String knowledgeBaseBeanName;
+ private String environmentBeanName;
+
+ 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;
+ }
+
+}
Property changes on: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/spring/SpringKnowledgeSessionLoaderConfiguration.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/timer/TimerJob.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/timer/TimerJob.java (rev 0)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/timer/TimerJob.java 2010-09-14 15:37:45 UTC (rev 35140)
@@ -0,0 +1,51 @@
+package org.drools.executor.message.timer;
+
+import org.drools.executor.message.ExecutionJob;
+import org.drools.executor.message.SessionConfiguratorType;
+
+public class TimerJob extends ExecutionJob {
+
+ private static final long serialVersionUID = 1L;
+ private long processId;
+ private int sessionId;
+ private long timerId;
+ private long period;
+
+ public TimerJob(SessionConfiguratorType configuratorType,
+ Object configuratorData) {
+ super( configuratorType,
+ configuratorData );
+ }
+
+ public long getProcessId() {
+ return processId;
+ }
+
+ public void setProcessId(long processId) {
+ this.processId = processId;
+ }
+
+ 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;
+ }
+
+ public long getPeriod() {
+ return period;
+ }
+
+ public void setPeriod(long period) {
+ this.period = period;
+ }
+}
Property changes on: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/timer/TimerJob.java
___________________________________________________________________
Name: svn:eol-style
+ native
Deleted: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/timer/message/TimerJob.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/timer/message/TimerJob.java 2010-09-14 14:33:27 UTC (rev 35139)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/timer/message/TimerJob.java 2010-09-14 15:37:45 UTC (rev 35140)
@@ -1,79 +0,0 @@
-package org.drools.timer.message;
-
-import java.io.Serializable;
-
-public class TimerJob implements Serializable{
-
- private long processId;
- private String runtimeSessionConfiguratorBeanName;
- private String knowledgeStoreServiceBeanName;
- private String knowledgeBaseBeanName;
- private String environmentBeanName;
- private int sessionId;
- private long timerId;
- private long period;
-
- public void setProcessId(long processId) {
- this.processId = processId;
- }
-
- public long getProcessId() {
- return processId;
- }
-
- public void setRuntimeSessionConfiguratorBeanName(String sessionConfiguratorBeanName) {
- this.runtimeSessionConfiguratorBeanName = sessionConfiguratorBeanName;
- }
-
- public String getRuntimeSessionConfiguratorBeanName() {
- return runtimeSessionConfiguratorBeanName;
- }
-
- public void setKnowledgeStoreServiceBeanName(String knowledgeStoreServiceBeanName) {
- this.knowledgeStoreServiceBeanName = knowledgeStoreServiceBeanName;
- }
-
- public String getKnowledgeStoreServiceBeanName() {
- return knowledgeStoreServiceBeanName;
- }
-
- public void setSessionId(int id) {
- this.sessionId = id;
- }
-
- public int getSessionId() {
- return sessionId;
- }
-
- public void setTimerId(long timerId) {
- this.timerId = timerId;
- }
-
- public void setPeriod(long period) {
- this.period = period;
- }
-
- public long getTimerId() {
- return timerId;
- }
-
- public long getPeriod() {
- return period;
- }
-
- 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;
- }
-}
Modified: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/job/TimerExecutorJob.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/job/TimerExecutorJob.java 2010-09-14 14:33:27 UTC (rev 35139)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/job/TimerExecutorJob.java 2010-09-14 15:37:45 UTC (rev 35140)
@@ -5,7 +5,9 @@
import java.io.ObjectOutputStream;
import java.util.Date;
-import org.drools.timer.message.TimerJob;
+import org.drools.executor.message.SessionConfiguratorType;
+import org.drools.executor.message.spring.SpringKnowledgeSessionLoaderConfiguration;
+import org.drools.executor.message.timer.TimerJob;
import org.drools.timer.persistence.TimerPersistence;
import org.hornetq.api.core.HornetQException;
import org.hornetq.api.core.client.ClientMessage;
@@ -69,17 +71,20 @@
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);
-
+
+ SpringKnowledgeSessionLoaderConfiguration conf = new SpringKnowledgeSessionLoaderConfiguration();
+ conf.setKnowledgeStoreServiceBeanName(knowledgeStoreServiceBeanName);
+ conf.setRuntimeSessionConfiguratorBeanName(runtimeSessionConfiguratorBeanName);
+ conf.setEnvironmentBeanName(environmentBeanName);
+ conf.setKnowledgeBaseBeanName(knowledgeBaseBeanName);
+
+ TimerJob timerJob = new TimerJob(SessionConfiguratorType.SPRING, conf);
+ timerJob.setProcessId(processInstanceId);
+ timerJob.setSessionId(sessionId);
+
+ timerJob.setTimerId(timerId);
+ timerJob.setPeriod(period);
+
oout.writeObject(timerJob);
ClientMessage message = session.createMessage(true);
message.getBodyBuffer().writeBytes(baos.toByteArray());
Modified: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/java/org/drools/timer/scheduler/TimerSchedulerServiceTest.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/java/org/drools/timer/scheduler/TimerSchedulerServiceTest.java 2010-09-14 14:33:27 UTC (rev 35139)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/java/org/drools/timer/scheduler/TimerSchedulerServiceTest.java 2010-09-14 15:37:45 UTC (rev 35140)
@@ -6,7 +6,7 @@
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
-import org.drools.timer.message.TimerJob;
+import org.drools.executor.message.timer.TimerJob;
import org.drools.timer.message.impl.InsertScheduledTimerMessage;
import org.drools.timer.persistence.model.TimerState;
import org.drools.timer.scheduler.utils.HornetQMessageTranslator;
More information about the jboss-svn-commits
mailing list