[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