[jboss-svn-commits] JBL Code SVN: r34633 - in labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer: drools-timer-executor/src/test/java/org/drools/job/executor/timer and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Aug 11 01:09:55 EDT 2010


Author: diegoll
Date: 2010-08-11 01:09:55 -0400 (Wed, 11 Aug 2010)
New Revision: 34633

Added:
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/Buddy.java
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/MockProcessTimerPersistenceStrategy.java
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/resources/timerProcess.rf
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/resources/timerProcessSession.xml
Modified:
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/timer/TimerJobExecutor.java
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/TimerExecutorServiceTest.java
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/timer/message/TimerJob.java
Log:
[JBRULES-2616] basic test working. Must move Environment creation using spring config. Abstract the current way of revivify the ksession to support other ways different to Spring

Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/timer/TimerJobExecutor.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/timer/TimerJobExecutor.java	2010-08-11 05:06:41 UTC (rev 34632)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/timer/TimerJobExecutor.java	2010-08-11 05:09:55 UTC (rev 34633)
@@ -39,7 +39,11 @@
 	    
 	    StatefulKnowledgeSessionImpl sessionImpl = (StatefulKnowledgeSessionImpl) ((KnowledgeCommandContext) ((CommandBasedStatefulKnowledgeSession)ksession).getCommandService().getContext()).getStatefulKnowledgesession();
 	    SignalManager signalManager = sessionImpl.getInternalWorkingMemory().getSignalManager();
-	    TimerInstance timerInstance = null; //FIXME serialize timer instance information 
+	    
+	    TimerInstance timerInstance = new TimerInstance();
+	    timerInstance.setId(job.getTimerId());
+	    timerInstance.setPeriod(job.getPeriod());
+	    
         signalManager.signalEvent( processInstanceId, "timerTriggered",  timerInstance );
 	    ksession.dispose();
 
@@ -61,6 +65,7 @@
         env.set( EnvironmentName.ENTITY_MANAGER_FACTORY, sessionContext.getBean( "entityManagerFactory" ));
         env.set( EnvironmentName.TRANSACTION_MANAGER, txManager);
         env.set( EnvironmentName.GLOBALS, new MapGlobalResolver() );
+        env.set(EnvironmentName.PROCESS_TIMER_STRATEGY, new MockProcessTimerPersistenceStrategy());
         KnowledgeStoreService kstore = (KnowledgeStoreService) sessionContext.getBean(kstoreName);
         KnowledgeBase kbase = (KnowledgeBase) sessionContext.getBean("kbase");
         StatefulKnowledgeSession ksession = kstore.loadStatefulKnowledgeSession(sessionId, kbase, null, env);

Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/Buddy.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/Buddy.java	                        (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/Buddy.java	2010-08-11 05:09:55 UTC (rev 34633)
@@ -0,0 +1,7 @@
+package org.drools.job.executor.timer;
+
+import java.io.Serializable;
+
+public class Buddy implements Serializable{
+
+}


Property changes on: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/Buddy.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/MockProcessTimerPersistenceStrategy.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/MockProcessTimerPersistenceStrategy.java	                        (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/MockProcessTimerPersistenceStrategy.java	2010-08-11 05:09:55 UTC (rev 34633)
@@ -0,0 +1,19 @@
+package org.drools.job.executor.timer;
+
+import org.drools.process.instance.timer.TimerManager.ProcessJobContext;
+import org.drools.time.ProcessTimerPersistenceStrategy;
+import org.drools.time.impl.IntervalTrigger;
+import org.drools.time.impl.ProcessJobHandle;
+
+public class MockProcessTimerPersistenceStrategy implements
+        ProcessTimerPersistenceStrategy {
+
+    public void save(ProcessJobContext processContext,
+            IntervalTrigger intervalTrigger) {
+    }
+
+    public boolean remove(ProcessJobHandle jobHandle) {
+        return true;
+    }
+
+}


Property changes on: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/MockProcessTimerPersistenceStrategy.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/TimerExecutorServiceTest.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/TimerExecutorServiceTest.java	2010-08-11 05:06:41 UTC (rev 34632)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/TimerExecutorServiceTest.java	2010-08-11 05:09:55 UTC (rev 34633)
@@ -8,12 +8,14 @@
 import org.drools.KnowledgeBaseFactory;
 import org.drools.base.MapGlobalResolver;
 import org.drools.core.util.KnowledgeSessionRuntimeConfigurator;
+import org.drools.job.executor.HornetQMessageTranslator;
 import org.drools.job.executor.JobExecutorService;
 import org.drools.job.executor.utils.SerializedMessageTranslator;
 import org.drools.persistence.jpa.KnowledgeStoreService;
 import org.drools.runtime.Environment;
 import org.drools.runtime.EnvironmentName;
 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;
@@ -26,6 +28,7 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
+import org.springframework.context.ApplicationContext;
 import org.springframework.context.support.AbstractApplicationContext;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 import org.springframework.transaction.PlatformTransactionManager;
@@ -80,7 +83,7 @@
 		//create timer job to consume
 		TimerJob timerJob = new TimerJob();
 		ClientProducer producer = (ClientProducer)context.getBean("timerMessageProducer");
-		SerializedMessageTranslator<TimerJob> timerJobMessageTranslator = (SerializedMessageTranslator<TimerJob>) context.getBean("messageTranslator");
+		HornetQMessageTranslator<TimerJob> timerJobMessageTranslator = (HornetQMessageTranslator<TimerJob>) context.getBean("messageTranslator");
 		producer.send(timerJobMessageTranslator.writeMessage(timerJob));
 		
 		//check timer succesfully executed
@@ -88,6 +91,21 @@
 		context.destroy();
 	}
 	
+	/**
+	 * this test uses the following process:
+	 * start -> timer -> action (insert Buddy) -> wait until 5 Buddies inserted -> end
+	 * 
+	 * start process
+	 * simulate timer triggered
+	 * check process still active
+	 * simulate timer triggered 4 times (total Buddies inserted 5)
+	 * check process id is not in the session anymore (it has finished)
+	 * 
+	 * voila
+	 * 
+	 * @throws InterruptedException
+	 * @throws HornetQException
+	 */
 	@Test
 	public void checkTriggerCompletedProcess() throws InterruptedException, HornetQException{
 	    String sessionContextLocation = "classpath:/completedProcessSession.xml";
@@ -105,6 +123,7 @@
         //start process
         AbstractApplicationContext sessionContext = new ClassPathXmlApplicationContext(sessionContextLocation);
 	    final StatefulKnowledgeSession ksession = createSession(knowledgeStoreServiceBeanName, sessionContext);
+	    int sessionId = ksession.getId();
         KnowledgeSessionRuntimeConfigurator sessionConfigurator = (KnowledgeSessionRuntimeConfigurator) sessionContext.getBean(sessionConfiguratorBeanName);
 	    sessionConfigurator.configure(ksession);
 	    
@@ -118,15 +137,18 @@
             }
         });
 	    
-	    //send message to executor (emulates scheduler)
 	    ClientProducer producer = (ClientProducer)executorContext.getBean("timerMessageProducer");
-        SerializedMessageTranslator<TimerJob> timerJobMessageTranslator = (SerializedMessageTranslator<TimerJob>) executorContext.getBean("messageTranslator");
-        TimerJob timerJob = new TimerJob();
-        timerJob.setSessionId(ksession.getId());
-        timerJob.setProcessId(processId);
-        timerJob.setKnowledgeStoreServiceBeanName(knowledgeStoreServiceBeanName);
-        timerJob.setRuntimeSessionConfiguratorBeanName(sessionConfiguratorBeanName);
-        producer.send(timerJobMessageTranslator.writeMessage(timerJob));
+        HornetQMessageTranslator<TimerJob> timerJobMessageTranslator = (HornetQMessageTranslator<TimerJob>) executorContext.getBean("messageTranslator");
+        TimerSchedulerSimulator scheduler = new TimerSchedulerSimulator(timerJobMessageTranslator, producer);
+        scheduler.setKnowledgeSessionRuntimeConfiguratorBeanName(sessionConfiguratorBeanName);
+        scheduler.setKnowledgeStoreServiceBeanName(knowledgeStoreServiceBeanName);
+        scheduler.setSessionId(sessionId);
+        scheduler.setProcessId(processId);
+        scheduler.setTimerId(1);
+        scheduler.setPeriod(1000); // any value != 0
+        
+        scheduler.triggerTimerJob();
+        Thread.sleep(1000);
 
 	    //close everything
         timerJobExecutorService.cancel();
@@ -134,7 +156,75 @@
 	    sessionContext.close();
 	    executorContext.close();
 	}
+	
+	
+	   @Test
+	    public void checkTriggerTimer() throws InterruptedException, HornetQException{
+	        String sessionContextLocation = "classpath:/timerProcessSession.xml";
+	        String sessionConfiguratorBeanName = "sessionConfigurator";
+	        String knowledgeStoreServiceBeanName = "kstore";
 
+	        //start the executor
+	        AbstractApplicationContext executorContext = createExecutorContext(sessionContextLocation);
+	        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
+	        Assert.assertTrue(timerJobExecutorService.isRunning());
+
+	        //start process
+	        AbstractApplicationContext sessionContext = new ClassPathXmlApplicationContext(sessionContextLocation);
+	        StatefulKnowledgeSession ksession = createSession(knowledgeStoreServiceBeanName, sessionContext);
+	        int sessionId = ksession.getId();
+	        KnowledgeSessionRuntimeConfigurator sessionConfigurator = (KnowledgeSessionRuntimeConfigurator) sessionContext.getBean(sessionConfiguratorBeanName);
+	        sessionConfigurator.configure(ksession);
+	        
+            long processId = ksession.startProcess("timerProcess").getId();
+            ksession.dispose();
+	        
+            //create scheduler simulator
+            ClientProducer producer = (ClientProducer)executorContext.getBean("timerMessageProducer");
+            @SuppressWarnings("unchecked")
+            HornetQMessageTranslator<TimerJob> timerJobMessageTranslator = (SerializedMessageTranslator<TimerJob>) executorContext.getBean("messageTranslator");
+            TimerSchedulerSimulator scheduler = new TimerSchedulerSimulator(timerJobMessageTranslator, producer);
+            scheduler.setKnowledgeSessionRuntimeConfiguratorBeanName(sessionConfiguratorBeanName);
+            scheduler.setKnowledgeStoreServiceBeanName(knowledgeStoreServiceBeanName);
+            scheduler.setSessionId(sessionId);
+            scheduler.setProcessId(processId);
+            scheduler.setTimerId(1);
+            scheduler.setPeriod(1000); // any value != 0
+            
+            scheduler.triggerTimerJob();
+            Thread.sleep(1000);
+
+            ksession = loadSession(sessionId, knowledgeStoreServiceBeanName, sessionContext);  
+            ProcessInstance processInstance = ksession.getProcessInstance(processId);
+            Assert.assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState());
+            ksession.dispose();
+
+            scheduler.triggerTimerJob();
+            scheduler.triggerTimerJob();
+            scheduler.triggerTimerJob();
+            scheduler.triggerTimerJob();
+            Thread.sleep(4000);
+            
+            ksession = loadSession(sessionId, knowledgeStoreServiceBeanName, sessionContext);  
+            processInstance = ksession.getProcessInstance(processId);
+            Assert.assertNull(processInstance);
+            
+            //close everything
+            timerJobExecutorService.cancel();
+            producer.close();
+            sessionContext.close();
+            executorContext.close();
+
+	        //close everything
+	        timerJobExecutorService.cancel();
+	        producer.close();
+	        sessionContext.close();
+	        executorContext.close();
+	    }
+
     private AbstractApplicationContext createExecutorContext(String sessionContextLocation) {
         PropertyPlaceholderConfigurer configurer = new PropertyPlaceholderConfigurer();
         Properties properties = new Properties();
@@ -151,15 +241,121 @@
         return context;
     }
 
-    private StatefulKnowledgeSession createSession(String kstoreName, AbstractApplicationContext sessionContext) {
-        PlatformTransactionManager txManager = (PlatformTransactionManager) sessionContext.getBean( "transactionManager" );
-	    Environment env = KnowledgeBaseFactory.newEnvironment();
-	    env.set( EnvironmentName.ENTITY_MANAGER_FACTORY, sessionContext.getBean( "entityManagerFactory" ));
-	    env.set( EnvironmentName.TRANSACTION_MANAGER, txManager);
-	    env.set( EnvironmentName.GLOBALS, new MapGlobalResolver() );
+    private StatefulKnowledgeSession createSession(String kstoreName, ApplicationContext sessionContext) {
+        Environment env = getEnvironment(sessionContext);
 	    KnowledgeStoreService kstore = (KnowledgeStoreService) sessionContext.getBean(kstoreName);
 	    KnowledgeBase kbase = (KnowledgeBase) sessionContext.getBean("kbase");
 	    StatefulKnowledgeSession ksession = kstore.newStatefulKnowledgeSession(kbase, null, env);
         return ksession;
     }
+    
+    private StatefulKnowledgeSession loadSession(int sessionId, String kstoreName, ApplicationContext sessionContext) {
+        Environment env = getEnvironment(sessionContext);
+        KnowledgeStoreService kstore = (KnowledgeStoreService) sessionContext.getBean(kstoreName);
+        KnowledgeBase kbase = (KnowledgeBase) sessionContext.getBean("kbase");
+        StatefulKnowledgeSession ksession = kstore.loadStatefulKnowledgeSession(sessionId, kbase, null, env);
+        return ksession;
+    }
+    
+    private Environment getEnvironment(ApplicationContext sessionContext) {
+        Environment env = KnowledgeBaseFactory.newEnvironment();
+        env.set( EnvironmentName.ENTITY_MANAGER_FACTORY, sessionContext.getBean( "entityManagerFactory" ));
+        env.set( EnvironmentName.TRANSACTION_MANAGER, (PlatformTransactionManager) sessionContext.getBean( "transactionManager" ));
+        env.set( EnvironmentName.GLOBALS, new MapGlobalResolver() );
+        env.set(EnvironmentName.PROCESS_TIMER_STRATEGY, new MockProcessTimerPersistenceStrategy());
+        return env;
+    }
+
+    
+    private static class TimerSchedulerSimulator {
+        
+        private HornetQMessageTranslator<TimerJob> translator;
+        private ClientProducer producer;
+        
+        private long processId;
+        private int sessionId;
+
+        private long timerId;
+        private long period;
+        
+        private String knowledgeStoreServiceBeanName;
+        private String knowledgeSessionRuntimeConfiguratorBeanName;
+
+        public TimerSchedulerSimulator(HornetQMessageTranslator<TimerJob> translator, ClientProducer producer){
+            this.translator = translator;
+            this.producer = producer;
+        }
+        
+        public void triggerTimerJob() throws HornetQException{
+            TimerJob timerJob = new TimerJob();
+            timerJob.setProcessId(getProcessId());
+            timerJob.setSessionId(getSessionId());
+            
+            timerJob.setTimerId(getTimerId());
+            timerJob.setPeriod(getPeriod());
+            
+            timerJob.setKnowledgeStoreServiceBeanName(getKnowledgeStoreServiceBeanName());
+            timerJob.setRuntimeSessionConfiguratorBeanName(getKnowledgeSessionRuntimeConfiguratorBeanName());
+            
+            producer.send(getTranslator().writeMessage(timerJob));
+        }
+
+        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;
+        }
+
+        public String getKnowledgeStoreServiceBeanName() {
+            return knowledgeStoreServiceBeanName;
+        }
+
+        public void setKnowledgeStoreServiceBeanName(
+                String knowledgeStoreServiceBeanName) {
+            this.knowledgeStoreServiceBeanName = knowledgeStoreServiceBeanName;
+        }
+
+        public String getKnowledgeSessionRuntimeConfiguratorBeanName() {
+            return knowledgeSessionRuntimeConfiguratorBeanName;
+        }
+
+        public void setKnowledgeSessionRuntimeConfiguratorBeanName(
+                String knowledgeSessionRuntimeConfiguratorBeanName) {
+            this.knowledgeSessionRuntimeConfiguratorBeanName = knowledgeSessionRuntimeConfiguratorBeanName;
+        }
+
+        public HornetQMessageTranslator<TimerJob> getTranslator() {
+            return translator;
+        }
+
+        public ClientProducer getProducer() {
+            return producer;
+        }
+    }
 }

Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/resources/timerProcess.rf
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/resources/timerProcess.rf	                        (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/resources/timerProcess.rf	2010-08-11 05:09:55 UTC (rev 34633)
@@ -0,0 +1,33 @@
+<?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.TimerProcess" id="timerProcess" package-name="org.drools.timer" version="1" >
+
+  <header>
+    <imports>
+      <import name="org.drools.job.executor.timer.Buddy" />
+    </imports>
+  </header>
+
+  <nodes>
+    <start id="1" name="Start" x="96" y="96" width="48" height="48" />
+    <timerNode id="2" name="Timer" x="228" y="96" width="48" height="48" delay="800ms"  period="200ms" />
+    <actionNode id="3" name="Action" x="348" y="96" width="80" height="48" >
+        <action type="expression" dialect="java" >System.out.println("Triggered");
+insert( new Buddy() );</action>
+    </actionNode>
+    <milestone id="4" name="Wait" x="504" y="96" width="80" height="48" >
+      <constraint type="rule" dialect="mvel" >Number( intValue &gt;= 5 ) from accumulate ( b: Buddy( ), count( b ) )</constraint>
+    </milestone>
+    <end id="5" name="End" x="648" y="96" width="48" height="48" />
+  </nodes>
+
+  <connections>
+    <connection from="1" to="2" />
+    <connection from="2" to="3" />
+    <connection from="3" to="4" />
+    <connection from="4" to="5" />
+  </connections>
+
+</process>
\ No newline at end of file


Property changes on: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/resources/timerProcess.rf
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/resources/timerProcessSession.xml
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/resources/timerProcessSession.xml	                        (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/resources/timerProcessSession.xml	2010-08-11 05:09:55 UTC (rev 34633)
@@ -0,0 +1,50 @@
+<?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://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="nothing">
+          <bean class="org.drools.process.instance.impl.demo.DoNothingWorkItemHandler" />
+        </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:timerProcess.rf" />
+    </drools:resources>
+  </drools:kbase>
+
+  <!-- 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/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/resources/timerProcessSession.xml
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/timer/message/TimerJob.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/timer/message/TimerJob.java	2010-08-11 05:06:41 UTC (rev 34632)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/timer/message/TimerJob.java	2010-08-11 05:09:55 UTC (rev 34633)
@@ -8,6 +8,8 @@
     private String runtimeSessionConfiguratorBeanName;
     private String knowledgeStoreServiceBeanName;
     private int sessionId;
+    private long timerId;
+    private long period;
 
     public void setProcessId(long processId) {
         this.processId = processId;
@@ -40,4 +42,20 @@
     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;
+    }
 }



More information about the jboss-svn-commits mailing list