[jboss-svn-commits] JBL Code SVN: r35044 - in labs/jbossrules/branches/diega_esteban_jpm_integration_r34940: drools-process/drools-persistent-timer/drools-timer-executor and 5 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Sep 7 10:50:16 EDT 2010
Author: diegoll
Date: 2010-09-07 10:50:15 -0400 (Tue, 07 Sep 2010)
New Revision: 35044
Added:
labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/BrokeFixedTimesWorkItemHandler.java
labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/test/resources/brokenProcess.rf
labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/test/resources/retryExecutionProcessSession.xml
Modified:
labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-core/src/main/java/org/drools/time/impl/JDKTimerService.java
labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/pom.xml
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/MockProcessTimerPersistenceStrategy.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
labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/test/resources/log4j.xml
Log:
[JBRULES-2616] added retry method on executor failure
Modified: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-core/src/main/java/org/drools/time/impl/JDKTimerService.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-core/src/main/java/org/drools/time/impl/JDKTimerService.java 2010-09-07 13:11:13 UTC (rev 35043)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-core/src/main/java/org/drools/time/impl/JDKTimerService.java 2010-09-07 14:50:15 UTC (rev 35044)
@@ -86,7 +86,8 @@
if ( date != null ) {
if( null != getProcessTimerPersistenceStrategy() && ctx.getJobHandle().isLongTermJob()){
- return getProcessTimerPersistenceStrategy().save(ctx, (IntervalTrigger) trigger);
+ JobHandle processHandle = getProcessTimerPersistenceStrategy().save(ctx, (IntervalTrigger) trigger);
+ return processHandle;
}else {
Callable<Void> callableJob = createCallableJob( job,
ctx,
Modified: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/pom.xml
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/pom.xml 2010-09-07 13:11:13 UTC (rev 35043)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/pom.xml 2010-09-07 14:50:15 UTC (rev 35044)
@@ -84,7 +84,7 @@
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
- <version>1.4.2</version>
+ <version>1.6.1</version>
<scope>runtime</scope>
</dependency>
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-07 13:11:13 UTC (rev 35043)
+++ 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-07 14:50:15 UTC (rev 35044)
@@ -6,6 +6,7 @@
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;
@@ -14,26 +15,31 @@
private static Logger logger = LoggerFactory.getLogger(JobExecutorService.class);
private ClientConsumer consumer;
+ private ClientProducer producer;
private AtomicBoolean running = new AtomicBoolean(false);
private HornetQMessageTranslator<T> translator;
private JobExecutor<T> executor;
public void run() {
running.set(true);
- try {
+ try{
while (running.get()) {
ClientMessage clientMessage = consumer.receive();
if (clientMessage!=null) {
- T job = translator.readMessage(clientMessage);
- executor.execute(job);
+ 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);
+ }
}
}
- } catch(HornetQException hqe) {
- logger.error("HornetQ error code: "+hqe.getCode());
- } catch (Exception e) {
- logger.error("Error running job executor service", e);
- } finally{
- running.set(false);
+ } catch (HornetQException hqe){
+ logger.error("HornetQ error code: "+hqe.getCode(), hqe);
+ } finally {
+ running.set(false);
}
}
@@ -60,4 +66,8 @@
this.executor = executor;
}
+ public void setProducer(ClientProducer producer) {
+ this.producer = producer;
+ }
+
}
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-07 13:11:13 UTC (rev 35043)
+++ 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-07 14:50:15 UTC (rev 35044)
@@ -3,6 +3,7 @@
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.job.executor.JobExecutor;
import org.drools.persistence.jpa.KnowledgeStoreService;
import org.drools.process.instance.timer.TimerInstance;
@@ -30,6 +31,7 @@
job.getEnvironmentBeanName(),
job.getKnowledgeBaseBeanName(),
job.getKnowledgeStoreServiceBeanName(),
+ job.getRuntimeSessionConfiguratorBeanName(),
getSessionContext());
ProcessInstance processInstance = ksession.getProcessInstance(processInstanceId);
@@ -66,11 +68,13 @@
return sessionContext;
}
- private StatefulKnowledgeSession loadSession(int sessionId, String envName, String kbaseName, String kstoreName, ApplicationContext sessionContext) {
+ 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-07 13:11:13 UTC (rev 35043)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/resources/executorContext.xml 2010-09-07 14:50:15 UTC (rev 35044)
@@ -7,10 +7,16 @@
<bean id="timerJobExecutorService" class="org.drools.job.executor.JobExecutorService">
<property name="consumer">
- <bean id="timerMessagesConsumer" 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" />
+ </bean>
+ </property>
+
<property name="translator" ref="messageTranslator" />
<property name="executor">
<bean class="org.drools.job.executor.timer.TimerJobExecutor">
Added: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/BrokeFixedTimesWorkItemHandler.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/BrokeFixedTimesWorkItemHandler.java (rev 0)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/BrokeFixedTimesWorkItemHandler.java 2010-09-07 14:50:15 UTC (rev 35044)
@@ -0,0 +1,39 @@
+package org.drools.job.executor.timer;
+
+import org.drools.process.instance.WorkItemHandler;
+import org.drools.runtime.process.WorkItem;
+import org.drools.runtime.process.WorkItemManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class BrokeFixedTimesWorkItemHandler implements WorkItemHandler{
+
+ private static final Logger logger = LoggerFactory.getLogger(BrokeFixedTimesWorkItemHandler.class);
+
+ private int brokesBound;
+ static private int executionCount;
+
+ public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
+ executionCount++;
+// if(executionCount == 1){
+// return;
+// }
+ if(executionCount < getBrokesBound()){
+ throw new RuntimeException("Explosion number "+ executionCount + " of " + getBrokesBound());
+ }
+ logger.info("Completing workitem after {} explosions", getBrokesBound());
+ manager.completeWorkItem(workItem.getId(), null);
+ }
+
+ public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
+ }
+
+ public int getBrokesBound() {
+ return brokesBound;
+ }
+
+ public void setBrokesBound(int brokesBound) {
+ this.brokesBound = brokesBound;
+ }
+
+}
Property changes on: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/BrokeFixedTimesWorkItemHandler.java
___________________________________________________________________
Name: svn:eol-style
+ native
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/MockProcessTimerPersistenceStrategy.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/MockProcessTimerPersistenceStrategy.java 2010-09-07 13:11:13 UTC (rev 35043)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/MockProcessTimerPersistenceStrategy.java 2010-09-07 14:50:15 UTC (rev 35044)
@@ -10,7 +10,12 @@
public JobHandle save(JobContext processContext,
IntervalTrigger intervalTrigger) {
- return null;
+ return new JobHandle() {
+
+ public boolean isLongTermJob() {
+ return true;
+ }
+ };
}
public boolean remove(JobHandle jobHandle) {
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-07 13:11:13 UTC (rev 35043)
+++ 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-07 14:50:15 UTC (rev 35044)
@@ -50,6 +50,61 @@
DeleteDbFiles.execute( "", H2_DB_NAME, true );
}
+ @Test
+ public void checkRetryExecution() throws InterruptedException, HornetQException{
+ String sessionContextLocation = "classpath:/retryExecutionProcessSession.xml";
+ String sessionConfiguratorBeanName = "sessionConfigurator";
+ String knowledgeStoreServiceBeanName = "kstore";
+ String knowledgeBaseBeanName = "kbase";
+ String environmentBeanName = "env";
+
+ StatefulKnowledgeSessionManager sessionManager = new StatefulKnowledgeSessionManager()
+ .setSessionConfiguratorBeanName(sessionConfiguratorBeanName)
+ .setKnowledgeStoreServiceBeanName(knowledgeStoreServiceBeanName)
+ .setKnowledgeBaseBeanName(knowledgeBaseBeanName)
+ .setEnvironmentBeanName(environmentBeanName)
+ .setDroolsApplicationContext(new ClassPathXmlApplicationContext(sessionContextLocation))
+ ;
+
+ //start the executor
+ AbstractApplicationContext executorContext = createExecutorContext(sessionContextLocation);
+ JobExecutorService<TimerJob> timerJobExecutorService = startJobExecutor(executorContext);
+
+ //start process
+ StatefulKnowledgeSession ksession = sessionManager.createSession();
+ int sessionId = ksession.getId();
+
+ ProcessInstance processInstance = ksession.startProcess("brokenProcess");
+ long processId = processInstance.getId();
+ ksession.dispose();
+
+ ClientProducer producer = (ClientProducer)executorContext.getBean("timerMessageProducer");
+ @SuppressWarnings("unchecked")
+ HornetQMessageTranslator<TimerJob> timerJobMessageTranslator = (HornetQMessageTranslator<TimerJob>) executorContext.getBean("messageTranslator");
+ MockJobScheduler scheduler =
+ new MockJobScheduler(timerJobMessageTranslator, producer)
+ .setKnowledgeSessionRuntimeConfiguratorBeanName(sessionConfiguratorBeanName)
+ .setKnowledgeStoreServiceBeanName(knowledgeStoreServiceBeanName)
+ .setKnowledgeBaseBeanName(knowledgeBaseBeanName)
+ .setEnvironmentBeanName(environmentBeanName)
+ .setSessionId(sessionId)
+ .setProcessId(processId)
+ .setTimerId(1)
+ .setPeriod(1000); // any value != 0
+
+ scheduler.triggerTimerJob();
+ Thread.sleep(10000);
+
+ ksession = sessionManager.loadSession(sessionId);
+ processInstance = ksession.getProcessInstance(processId);
+ Assert.assertNull(processInstance); // this mean the process was completed elsewhere
+
+ //close everything
+ timerJobExecutorService.cancel();
+ producer.close();
+ executorContext.close();
+ }
+
@Test
public void checkTriggerCompletedProcess() throws InterruptedException, HornetQException{
String sessionContextLocation = "classpath:/completedProcessSession.xml";
@@ -80,8 +135,8 @@
ClientProducer producer = (ClientProducer)executorContext.getBean("timerMessageProducer");
@SuppressWarnings("unchecked")
HornetQMessageTranslator<TimerJob> timerJobMessageTranslator = (HornetQMessageTranslator<TimerJob>) executorContext.getBean("messageTranslator");
- TimerSchedulerSimulator scheduler =
- new TimerSchedulerSimulator(timerJobMessageTranslator, producer)
+ MockJobScheduler scheduler =
+ new MockJobScheduler(timerJobMessageTranslator, producer)
.setKnowledgeSessionRuntimeConfiguratorBeanName(sessionConfiguratorBeanName)
.setKnowledgeStoreServiceBeanName(knowledgeStoreServiceBeanName)
.setKnowledgeBaseBeanName(knowledgeBaseBeanName)
@@ -146,8 +201,8 @@
ClientProducer producer = (ClientProducer)executorContext.getBean("timerMessageProducer");
@SuppressWarnings("unchecked")
HornetQMessageTranslator<TimerJob> timerJobMessageTranslator = (SerializedMessageTranslator<TimerJob>) executorContext.getBean("messageTranslator");
- TimerSchedulerSimulator scheduler =
- new TimerSchedulerSimulator(timerJobMessageTranslator, producer)
+ MockJobScheduler scheduler =
+ new MockJobScheduler(timerJobMessageTranslator, producer)
.setKnowledgeSessionRuntimeConfiguratorBeanName(sessionConfiguratorBeanName)
.setKnowledgeStoreServiceBeanName(knowledgeStoreServiceBeanName)
.setKnowledgeBaseBeanName(knowledgeBaseBeanName)
@@ -185,9 +240,10 @@
throws InterruptedException {
@SuppressWarnings("unchecked")
JobExecutorService<TimerJob> timerJobExecutorService = (JobExecutorService<TimerJob>) executorContext.getBean("timerJobExecutorService");
- ExecutorService executor = Executors.newSingleThreadExecutor();
- executor.execute(timerJobExecutorService);
- Thread.sleep(1500); // executor doesn't guarantee you it'll run immediately
+ //ExecutorService executor = Executors.newSingleThreadExecutor();
+ //executor.execute(timerJobExecutorService);
+ new Thread(timerJobExecutorService, "executor").start();
+ Thread.sleep(1000); // executor doesn't guarantee you it'll run immediately
Assert.assertTrue(timerJobExecutorService.isRunning());
return timerJobExecutorService;
}
@@ -283,7 +339,7 @@
}
- private static class TimerSchedulerSimulator {
+ private static class MockJobScheduler {
private HornetQMessageTranslator<TimerJob> translator;
private ClientProducer producer;
@@ -299,7 +355,7 @@
private String knowledgeBaseBeanName;
private String environmentBeanName;
- public TimerSchedulerSimulator(HornetQMessageTranslator<TimerJob> translator, ClientProducer producer){
+ public MockJobScheduler(HornetQMessageTranslator<TimerJob> translator, ClientProducer producer){
this.translator = translator;
this.producer = producer;
}
@@ -324,7 +380,7 @@
return processId;
}
- public TimerSchedulerSimulator setProcessId(long processId) {
+ public MockJobScheduler setProcessId(long processId) {
this.processId = processId;
return this;
}
@@ -333,7 +389,7 @@
return sessionId;
}
- public TimerSchedulerSimulator setSessionId(int sessionId) {
+ public MockJobScheduler setSessionId(int sessionId) {
this.sessionId = sessionId;
return this;
}
@@ -342,7 +398,7 @@
return timerId;
}
- public TimerSchedulerSimulator setTimerId(long timerId) {
+ public MockJobScheduler setTimerId(long timerId) {
this.timerId = timerId;
return this;
}
@@ -351,7 +407,7 @@
return period;
}
- public TimerSchedulerSimulator setPeriod(long period) {
+ public MockJobScheduler setPeriod(long period) {
this.period = period;
return this;
}
@@ -360,7 +416,7 @@
return knowledgeStoreServiceBeanName;
}
- public TimerSchedulerSimulator setKnowledgeStoreServiceBeanName(
+ public MockJobScheduler setKnowledgeStoreServiceBeanName(
String knowledgeStoreServiceBeanName) {
this.knowledgeStoreServiceBeanName = knowledgeStoreServiceBeanName;
return this;
@@ -370,7 +426,7 @@
return knowledgeSessionRuntimeConfiguratorBeanName;
}
- public TimerSchedulerSimulator setKnowledgeSessionRuntimeConfiguratorBeanName(
+ public MockJobScheduler setKnowledgeSessionRuntimeConfiguratorBeanName(
String knowledgeSessionRuntimeConfiguratorBeanName) {
this.knowledgeSessionRuntimeConfiguratorBeanName = knowledgeSessionRuntimeConfiguratorBeanName;
return this;
@@ -380,7 +436,7 @@
return knowledgeBaseBeanName;
}
- public TimerSchedulerSimulator setKnowledgeBaseBeanName(String knowledgeBaseBeanName) {
+ public MockJobScheduler setKnowledgeBaseBeanName(String knowledgeBaseBeanName) {
this.knowledgeBaseBeanName = knowledgeBaseBeanName;
return this;
}
@@ -389,7 +445,7 @@
return environmentBeanName;
}
- public TimerSchedulerSimulator setEnvironmentBeanName(String environmentBeanName) {
+ public MockJobScheduler setEnvironmentBeanName(String environmentBeanName) {
this.environmentBeanName = environmentBeanName;
return this;
}
Added: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/test/resources/brokenProcess.rf
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/test/resources/brokenProcess.rf (rev 0)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/test/resources/brokenProcess.rf 2010-09-07 14:50:15 UTC (rev 35044)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<process xmlns="http://drools.org/drools-5.0/process"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
+ xs:schemaLocation="http://drools.org/drools-5.0/process drools-processes-5.0.xsd"
+ type="RuleFlow" name="org.drools.timer.BrokenProcess" id="brokenProcess" package-name="org.drools.timer" >
+
+ <header>
+ </header>
+
+ <nodes>
+ <start id="1" name="Start" x="60" y="96" width="48" height="48" />
+ <end id="4" name="End" x="480" y="96" width="48" height="48" />
+ <timerNode id="6" name="Timer" x="156" y="96" width="48" height="48" delay="1000" period="1000" />
+ <workItem id="7" name="Log" x="252" y="96" width="97" height="48" >
+ <work name="broke5times" >
+ </work>
+ </workItem>
+ </nodes>
+
+ <connections>
+ <connection from="7" to="4" />
+ <connection from="1" to="6" />
+ <connection from="6" to="7" />
+ </connections>
+
+</process>
\ 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/test/resources/brokenProcess.rf
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/test/resources/log4j.xml
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/test/resources/log4j.xml 2010-09-07 13:11:13 UTC (rev 35043)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/test/resources/log4j.xml 2010-09-07 14:50:15 UTC (rev 35044)
@@ -14,14 +14,17 @@
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out"/>
<layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern" value="%-5p %d{dd-MM HH:mm:ss,SSS} (%F:%M:%L) \t %m%n"/>
+ <param name="ConversionPattern" value="%-5p [%t] %d{HH:mm:ss,SSS} (%F:%M:%L) \t %m%n"/>
</layout>
</appender>
+ <logger name="org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager">
+ <level value="INFO"/>
+ </logger>
<logger name="org.drools">
<level value="DEBUG"/>
</logger>
<logger name="org.hibernate.SQL">
- <level value="DEBUG"/>
+ <level value="INFO"/>
</logger>
<root>
<priority value="ERROR"/>
Added: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/test/resources/retryExecutionProcessSession.xml
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/test/resources/retryExecutionProcessSession.xml (rev 0)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/test/resources/retryExecutionProcessSession.xml 2010-09-07 14:50:15 UTC (rev 35044)
@@ -0,0 +1,83 @@
+<?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"
+ xmlns:drools="http://drools.org/schema/drools-spring"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
+ http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd
+ http://drools.org/schema/drools-spring http://drools.org/schema/drools-spring.xsd">
+
+ <!-- drools configuration -->
+
+ <bean id="sessionConfigurator" class="org.drools.core.util.KnowledgeSessionRuntimeConfiguratorImpl">
+ <property name="workItemHandlers">
+ <map>
+ <entry key="broke5times">
+ <bean class="org.drools.job.executor.timer.BrokeFixedTimesWorkItemHandler" >
+ <property name="brokesBound" value="5" />
+ </bean>
+ </entry>
+ </map>
+ </property>
+ </bean>
+
+ <drools:kstore id="kstore" />
+
+ <drools:connection id="connection1" type="local" />
+ <drools:execution-node id="node1" connection="connection1" />
+
+ <drools:kbase id="kbase">
+ <drools:resources>
+ <drools:resource type="DRF" source="classpath:brokenProcess.rf" />
+ </drools:resources>
+ </drools:kbase>
+
+ <bean id="env" class="org.drools.container.spring.beans.EnvironmentFactoryBean">
+ <property name="environment">
+ <map>
+ <entry>
+ <key>
+ <util:constant static-field="org.drools.runtime.EnvironmentName.ENTITY_MANAGER_FACTORY"/>
+ </key>
+ <ref bean="entityManagerFactory"/>
+ </entry>
+ <entry>
+ <key>
+ <util:constant static-field="org.drools.runtime.EnvironmentName.TRANSACTION_MANAGER"/>
+ </key>
+ <ref bean="transactionManager"/>
+ </entry>
+ <entry>
+ <key>
+ <util:constant static-field="org.drools.runtime.EnvironmentName.GLOBALS"/>
+ </key>
+ <bean class="org.drools.base.MapGlobalResolver"/>
+ </entry>
+ <entry>
+ <key>
+ <util:constant static-field="org.drools.runtime.EnvironmentName.PROCESS_TIMER_STRATEGY"/>
+ </key>
+ <bean class="org.drools.job.executor.timer.MockProcessTimerPersistenceStrategy" />
+ </entry>
+ </map>
+ </property>
+ </bean>
+
+ <!-- persistence configuration -->
+ <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
+ <property name="driverClassName" value="org.h2.Driver" />
+ <property name="url" value="jdbc:h2:tcp://localhost/persistentTimersTest" />
+ <property name="username" value="sa" />
+ <property name="password" value="" />
+ </bean>
+
+ <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
+ <property name="dataSource" ref="dataSource" />
+ <property name="persistenceUnitName" value="org.drools.persistence.jpa.local" />
+ </bean>
+
+ <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
+ <property name="entityManagerFactory" ref="entityManagerFactory" />
+ </bean>
+</beans>
\ 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/test/resources/retryExecutionProcessSession.xml
___________________________________________________________________
Name: svn:eol-style
+ native
More information about the jboss-svn-commits
mailing list