[jboss-svn-commits] JBL Code SVN: r34636 - in labs/jbossrules/trunk: drools-core/src/main/java/org/drools/common and 7 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Aug 11 07:46:45 EDT 2010


Author: KrisVerlaenen
Date: 2010-08-11 07:46:44 -0400 (Wed, 11 Aug 2010)
New Revision: 34636

Added:
   labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/session/JpaJDKTimerService.java
Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/SessionConfiguration.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/TimerServiceFactory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/impl/JDKTimerService.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/time/impl/CronJobTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/time/impl/JDKTimerServiceTest.java
   labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/jpa/impl/KnowledgeStoreServiceImpl.java
   labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManager.java
   labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/session/SingleSessionCommandService.java
   labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/SingleSessionCommandServiceTest.java
Log:
JBRULES-2659: Rule timers are not executed as part of a transaction when using persistence
 - timers now execute as a command in case of persistence

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/SessionConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/SessionConfiguration.java	2010-08-11 10:32:54 UTC (rev 34635)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/SessionConfiguration.java	2010-08-11 11:46:44 UTC (rev 34636)
@@ -40,6 +40,7 @@
 import org.drools.runtime.conf.SingleValueKnowledgeSessionOption;
 import org.drools.runtime.conf.WorkItemHandlerOption;
 import org.drools.runtime.process.WorkItemHandler;
+import org.drools.time.TimerService;
 import org.drools.util.ChainedProperties;
 import org.drools.util.ClassLoaderUtil;
 import org.mvel2.MVEL;
@@ -83,6 +84,7 @@
     private SignalManagerFactory          processSignalManagerFactory;
     private WorkItemManagerFactory        workItemManagerFactory;
     private CommandService                commandService;
+    private TimerService 				  timerService;
 
     private transient ClassLoader         classLoader;
 
@@ -437,6 +439,43 @@
         }
     }
 
+	public TimerService newTimerService() {
+		String className = this.chainedProperties.getProperty(
+			"drools.timerService",
+			"org.drools.time.impl.JDKTimerService");
+		if (className == null) {
+			return null;
+		}
+
+		Class<TimerService> clazz = null;
+		try {
+			clazz = (Class<TimerService>) Thread.currentThread()
+					.getContextClassLoader().loadClass(className);
+		} catch (ClassNotFoundException e) {
+		}
+
+		if (clazz == null) {
+			try {
+				clazz = (Class<TimerService>) SessionConfiguration.class
+					.getClassLoader().loadClass(className);
+			} catch (ClassNotFoundException e) {
+			}
+		}
+
+		if (clazz != null) {
+			try {
+				return clazz.newInstance();
+			} catch (Exception e) {
+				throw new IllegalArgumentException(
+					"Unable to instantiate timer service '" + className
+							+ "'", e);
+			}
+		} else {
+			throw new IllegalArgumentException("Timer service '" + className
+					+ "' not found");
+		}
+	}
+
     @SuppressWarnings("unchecked")
     public <T extends SingleValueKnowledgeSessionOption> T getOption(Class<T> option) {
         if ( ClockTypeOption.class.equals( option ) ) {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java	2010-08-11 10:32:54 UTC (rev 34635)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java	2010-08-11 11:46:44 UTC (rev 34636)
@@ -367,7 +367,7 @@
         this.processInstanceManager = config.getProcessInstanceManagerFactory().createProcessInstanceManager( this );
         this.timeMachine = new TimeMachine();
 
-        TimerService timerService = TimerServiceFactory.getTimerService( this.config.getClockType() );
+        TimerService timerService = TimerServiceFactory.getTimerService( this.config );
         this.timerManager = new TimerManager( this,
                                               timerService );
         this.signalManager = config.getSignalManagerFactory().createSignalManager( this );

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/TimerServiceFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/TimerServiceFactory.java	2010-08-11 10:32:54 UTC (rev 34635)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/TimerServiceFactory.java	2010-08-11 11:46:44 UTC (rev 34636)
@@ -16,16 +16,15 @@
 
 package org.drools.time;
 
-import org.drools.ClockType;
-import org.drools.time.impl.JDKTimerService;
+import org.drools.SessionConfiguration;
 import org.drools.time.impl.PseudoClockScheduler;
 
 public class TimerServiceFactory {
     
-    public static TimerService getTimerService( ClockType type ) {
-        switch( type ) {
+    public static TimerService getTimerService( SessionConfiguration config ) {
+        switch( config.getClockType() ) {
             case REALTIME_CLOCK:
-                return new JDKTimerService();
+            	return config.newTimerService();
             case PSEUDO_CLOCK:
                 return new PseudoClockScheduler();
         }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/impl/JDKTimerService.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/impl/JDKTimerService.java	2010-08-11 10:32:54 UTC (rev 34635)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/impl/JDKTimerService.java	2010-08-11 11:46:44 UTC (rev 34636)
@@ -40,7 +40,7 @@
     TimerService,
     SessionClock {
     
-    private ScheduledThreadPoolExecutor scheduler;
+    protected ScheduledThreadPoolExecutor scheduler;
 
     public JDKTimerService() {
         this( 1 );
@@ -72,11 +72,11 @@
         Date date = trigger.nextFireTime();
 
         if ( date != null ) {
-            JDKCallableJob callableJob = new JDKCallableJob( job,
-                                                             ctx,
-                                                             trigger,
-                                                             jobHandle,
-                                                             this.scheduler );
+        	Callable<Void> callableJob = createCallableJob( job,
+                                                            ctx,
+                                                            trigger,
+                                                            jobHandle,
+                                                            this.scheduler );
             ScheduledFuture future = schedule( date,
                                                callableJob,
                                                this.scheduler );
@@ -87,13 +87,25 @@
             return null;
         }
     }
+    
+    protected Callable<Void> createCallableJob(Job job,
+									           JobContext ctx,
+									           Trigger trigger,
+									           JDKJobHandle handle,
+									           ScheduledThreadPoolExecutor scheduler) {
+    	return new JDKCallableJob( job,
+					               ctx,
+					               trigger,
+					               handle,
+					               this.scheduler );
+    }
 
     public boolean removeJob(JobHandle jobHandle) {
         return this.scheduler.remove( (Runnable) ((JDKJobHandle) jobHandle).getFuture() );
     }
 
     private static ScheduledFuture schedule(Date date,
-                                            JDKCallableJob callableJob,
+    		                                Callable<Void> callableJob,
                                             ScheduledThreadPoolExecutor scheduler) {
         long then = date.getTime();
         long now = System.currentTimeMillis();

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/time/impl/CronJobTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/time/impl/CronJobTest.java	2010-08-11 10:32:54 UTC (rev 34635)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/time/impl/CronJobTest.java	2010-08-11 11:46:44 UTC (rev 34636)
@@ -24,6 +24,7 @@
 import junit.framework.TestCase;
 
 import org.drools.ClockType;
+import org.drools.SessionConfiguration;
 import org.drools.time.TimerServiceFactory;
 import org.drools.time.impl.JDKTimerServiceTest.HelloWorldJob;
 import org.drools.time.impl.JDKTimerServiceTest.HelloWorldJobContext;
@@ -31,7 +32,9 @@
 
 public class CronJobTest extends TestCase {
     public void testCronTriggerJob() throws Exception {
-        PseudoClockScheduler timeService = ( PseudoClockScheduler ) TimerServiceFactory.getTimerService( ClockType.PSEUDO_CLOCK ); 
+    	SessionConfiguration config = new SessionConfiguration();
+    	config.setClockType(ClockType.PSEUDO_CLOCK);
+        PseudoClockScheduler timeService = ( PseudoClockScheduler ) TimerServiceFactory.getTimerService( config ); 
         
         DateFormat df = new SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ss.SSSZ" );
         Date date = df.parse( "2009-01-01T00:00:00.000-0000" );

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/time/impl/JDKTimerServiceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/time/impl/JDKTimerServiceTest.java	2010-08-11 10:32:54 UTC (rev 34635)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/time/impl/JDKTimerServiceTest.java	2010-08-11 11:46:44 UTC (rev 34636)
@@ -19,18 +19,15 @@
 import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
-import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
 import java.util.Stack;
-import java.util.concurrent.TimeUnit;
 
 import junit.framework.TestCase;
 
 import org.drools.ClockType;
+import org.drools.SessionConfiguration;
 import org.drools.time.Job;
 import org.drools.time.JobContext;
 import org.drools.time.JobHandle;
@@ -41,7 +38,9 @@
 public class JDKTimerServiceTest extends TestCase {
     
     public void testSingleExecutionJob() throws Exception {
-        TimerService timeService = TimerServiceFactory.getTimerService( ClockType.REALTIME_CLOCK ); 
+    	SessionConfiguration config = new SessionConfiguration();
+    	config.setClockType(ClockType.REALTIME_CLOCK);
+        TimerService timeService = TimerServiceFactory.getTimerService( config ); 
         Trigger trigger = new DelayedTrigger( 100 );
         HelloWorldJobContext ctx = new HelloWorldJobContext( "hello world", timeService);
         timeService.scheduleJob( new HelloWorldJob(), ctx,  trigger);        
@@ -51,7 +50,9 @@
     }    
     
     public void testRepeatedExecutionJob() throws Exception {
-        TimerService timeService = TimerServiceFactory.getTimerService( ClockType.REALTIME_CLOCK ); 
+    	SessionConfiguration config = new SessionConfiguration();
+    	config.setClockType(ClockType.REALTIME_CLOCK);
+        TimerService timeService = TimerServiceFactory.getTimerService( config ); 
         Trigger trigger = new DelayedTrigger(  new long[] { 100, 100, 100} );
         HelloWorldJobContext ctx = new HelloWorldJobContext( "hello world", timeService);
         timeService.scheduleJob( new HelloWorldJob(), ctx,  trigger);        
@@ -62,7 +63,9 @@
         
     
 	public void testRepeatedExecutionJobWithRemove() throws Exception {
-	    TimerService timeService = TimerServiceFactory.getTimerService( ClockType.REALTIME_CLOCK );
+    	SessionConfiguration config = new SessionConfiguration();
+    	config.setClockType(ClockType.REALTIME_CLOCK);
+        TimerService timeService = TimerServiceFactory.getTimerService( config ); 
 		Trigger trigger = new DelayedTrigger( new long[] { 100, 100, 100, 100, 100 } );
 		HelloWorldJobContext ctx = new HelloWorldJobContext( "hello world", timeService);
 		ctx.setLimit( 3 );

Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/jpa/impl/KnowledgeStoreServiceImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/jpa/impl/KnowledgeStoreServiceImpl.java	2010-08-11 10:32:54 UTC (rev 34635)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/jpa/impl/KnowledgeStoreServiceImpl.java	2010-08-11 11:46:44 UTC (rev 34636)
@@ -12,6 +12,7 @@
 import org.drools.persistence.processinstance.JPAProcessInstanceManagerFactory;
 import org.drools.persistence.processinstance.JPASignalManagerFactory;
 import org.drools.persistence.processinstance.JPAWorkItemManagerFactory;
+import org.drools.persistence.session.JpaJDKTimerService;
 import org.drools.persistence.session.SingleSessionCommandService;
 import org.drools.process.instance.ProcessInstanceManagerFactory;
 import org.drools.process.instance.WorkItemManagerFactory;
@@ -20,6 +21,7 @@
 import org.drools.runtime.Environment;
 import org.drools.runtime.KnowledgeSessionConfiguration;
 import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.time.TimerService;
 
 public class KnowledgeStoreServiceImpl
     implements
@@ -29,6 +31,7 @@
     private Class< ? extends ProcessInstanceManagerFactory> processInstanceManagerFactoryClass;
     private Class< ? extends WorkItemManagerFactory>        workItemManagerFactoryClass;
     private Class< ? extends SignalManagerFactory>          processSignalManagerFactoryClass;
+    private Class< ? extends TimerService>                  timerServiceClass;
 
     private Properties                                      configProps = new Properties();
 
@@ -41,6 +44,7 @@
         setProcessInstanceManagerFactoryClass( JPAProcessInstanceManagerFactory.class );
         setWorkItemManagerFactoryClass( JPAWorkItemManagerFactory.class );
         setProcessSignalManagerFactoryClass( JPASignalManagerFactory.class );
+        setTimerServiceClass( JpaJDKTimerService.class );
     }
 
     public StatefulKnowledgeSession newStatefulKnowledgeSession(KnowledgeBase kbase,
@@ -159,6 +163,18 @@
         return commandServiceClass;
     }
 
+    public void setTimerServiceClass(Class< ? extends TimerService> timerServiceClass) {
+        if ( timerServiceClass != null ) {
+            this.timerServiceClass = timerServiceClass;
+            configProps.put( "drools.timerService",
+            		         timerServiceClass.getName() );
+        }
+    }
+
+    public Class< ? extends TimerService> getTimerServiceClass() {
+        return timerServiceClass;
+    }
+
     public void setProcessInstanceManagerFactoryClass(Class< ? extends ProcessInstanceManagerFactory> processInstanceManagerFactoryClass) {
         if ( processInstanceManagerFactoryClass != null ) {
             this.processInstanceManagerFactoryClass = processInstanceManagerFactoryClass;

Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManager.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManager.java	2010-08-11 10:32:54 UTC (rev 34635)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManager.java	2010-08-11 11:46:44 UTC (rev 34636)
@@ -7,24 +7,15 @@
 import javax.persistence.Query;
 
 import org.drools.WorkingMemory;
-import org.drools.command.CommandService;
-import org.drools.command.runtime.process.SignalEventCommand;
 import org.drools.process.instance.event.DefaultSignalManager;
 import org.drools.runtime.EnvironmentName;
-import org.drools.runtime.process.ProcessInstance;
 
 public class JPASignalManager extends DefaultSignalManager {
 
-	private CommandService commandService;
-
     public JPASignalManager(WorkingMemory workingMemory) {
         super(workingMemory);
     }
     
-    public void setCommandService(CommandService commandService) {
-    	this.commandService = commandService;
-    }
-    
     public void signalEvent(String type,
                             Object event) {
         for ( long id : getProcessInstancesForEvent( type ) ) {
@@ -34,16 +25,6 @@
                            event );
     }
 
-    public void signalEvent(long processInstanceId,
-                            String type,
-                            Object event) {
-    	SignalEventCommand command = new SignalEventCommand();
-    	command.setProcessInstanceId(processInstanceId);
-    	command.setEventType(type);
-    	command.setEvent(event);
-    	commandService.execute(command);
-    }
-
     @SuppressWarnings("unchecked")
     private List<Long> getProcessInstancesForEvent(String type) {
         EntityManager em = (EntityManager) getWorkingMemory().getEnvironment().get( EnvironmentName.CMD_SCOPED_ENTITY_MANAGER );

Added: labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/session/JpaJDKTimerService.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/session/JpaJDKTimerService.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/session/JpaJDKTimerService.java	2010-08-11 11:46:44 UTC (rev 34636)
@@ -0,0 +1,106 @@
+/**
+ * Copyright 2010 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.drools.persistence.session;
+
+import java.util.concurrent.Callable;
+import java.util.concurrent.ScheduledThreadPoolExecutor;
+
+import org.drools.command.CommandService;
+import org.drools.command.Context;
+import org.drools.command.impl.GenericCommand;
+import org.drools.time.Job;
+import org.drools.time.JobContext;
+import org.drools.time.Trigger;
+import org.drools.time.impl.JDKTimerService;
+
+/**
+ * A default Scheduler implementation that uses the
+ * JDK built-in ScheduledThreadPoolExecutor as the
+ * scheduler and the system clock as the clock.
+ * 
+ */
+public class JpaJDKTimerService extends JDKTimerService {
+    
+	private CommandService commandService;
+
+    public void setCommandService(CommandService commandService) {
+    	this.commandService = commandService;
+    }
+    
+    public JpaJDKTimerService() {
+        this(1);
+    }
+
+    public JpaJDKTimerService(int size) {
+        super(size);
+    }
+
+    protected Callable<Void> createCallableJob(Job job,
+									           JobContext ctx,
+									           Trigger trigger,
+									           JDKJobHandle handle,
+									           ScheduledThreadPoolExecutor scheduler) {
+    	return new JpaJDKCallableJob( job,
+                ctx,
+                trigger,
+                handle,
+                this.scheduler );
+    }
+
+	public class JpaJDKCallableJob extends JDKCallableJob {
+
+		public JpaJDKCallableJob(Job job,
+					             JobContext ctx,
+					             Trigger trigger,
+					             JDKJobHandle handle,
+					             ScheduledThreadPoolExecutor scheduler) {
+			super(job, ctx, trigger, handle, scheduler);
+		}
+
+        public Void call() throws Exception {
+        	JDKCallableJobCommand command = new JDKCallableJobCommand(this);
+        	commandService.execute(command);
+        	return null;
+        }
+        
+        private Void internalCall() throws Exception {
+        	return super.call();
+        }
+    }
+    
+    public static class JDKCallableJobCommand implements GenericCommand<Void> {
+
+		private static final long serialVersionUID = 4L;
+		
+		private JpaJDKCallableJob job;
+    	
+    	public JDKCallableJobCommand(JpaJDKCallableJob job) {
+    		this.job = job;
+    	}
+    	
+    	public Void execute(Context context) {
+    		try {
+    			return job.internalCall();
+    		} catch (Exception e) {
+    			e.printStackTrace();
+    		}
+    		return null;
+    	}
+    	
+    }
+
+}

Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/session/SingleSessionCommandService.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/session/SingleSessionCommandService.java	2010-08-11 10:32:54 UTC (rev 34635)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/session/SingleSessionCommandService.java	2010-08-11 11:46:44 UTC (rev 34636)
@@ -19,7 +19,6 @@
 import org.drools.impl.KnowledgeBaseImpl;
 import org.drools.impl.StatefulKnowledgeSessionImpl;
 import org.drools.persistence.processinstance.JPAProcessInstanceManager;
-import org.drools.persistence.processinstance.JPASignalManager;
 import org.drools.persistence.processinstance.JPAWorkItemManager;
 import org.drools.reteoo.ReteooStatefulSession;
 import org.drools.reteoo.ReteooWorkingMemory;
@@ -107,7 +106,8 @@
                                                      this.ksession,
                                                      null );
 
-        ((JPASignalManager) ((StatefulKnowledgeSessionImpl) ksession).session.getSignalManager()).setCommandService( this );
+        ((JpaJDKTimerService) ((StatefulKnowledgeSessionImpl) ksession).session.getTimerService()).setCommandService( this );
+        
         this.marshallingHelper = new JPASessionMarshallingHelper( this.ksession,
                                                                   conf );
         this.sessionInfo.setJPASessionMashallingHelper( this.marshallingHelper );
@@ -201,7 +201,7 @@
 
         ((StatefulKnowledgeSessionImpl) this.ksession).session.setEndOperationListener( new EndOperationListenerImpl( this.sessionInfo ) );
 
-        ((JPASignalManager) ((StatefulKnowledgeSessionImpl) ksession).session.getSignalManager()).setCommandService( this );
+        ((JpaJDKTimerService) ((StatefulKnowledgeSessionImpl) ksession).session.getTimerService()).setCommandService( this );
         
         if ( this.kContext == null ) {
             // this should only happen when this class is first constructed

Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/SingleSessionCommandServiceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/SingleSessionCommandServiceTest.java	2010-08-11 10:32:54 UTC (rev 34635)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/SingleSessionCommandServiceTest.java	2010-08-11 11:46:44 UTC (rev 34636)
@@ -132,6 +132,8 @@
                                 "org.drools.persistence.processinstance.JPAWorkItemManagerFactory" );
         properties.setProperty( "drools.processSignalManagerFactory",
                                 "org.drools.persistence.processinstance.JPASignalManagerFactory" );
+        properties.setProperty( "drools.timerService",
+        						"org.drools.persistence.session.JpaJDKTimerService" );
         SessionConfiguration config = new SessionConfiguration( properties );
 
         SingleSessionCommandService service = new SingleSessionCommandService( kbase,
@@ -246,6 +248,8 @@
                                 "org.drools.persistence.processinstance.JPAWorkItemManagerFactory" );
         properties.setProperty( "drools.processSignalManagerFactory",
                                 "org.drools.persistence.processinstance.JPASignalManagerFactory" );
+        properties.setProperty( "drools.timerService",
+								"org.drools.persistence.session.JpaJDKTimerService" );
         SessionConfiguration config = new SessionConfiguration( properties );
 
         SingleSessionCommandService service = new SingleSessionCommandService( kbase,
@@ -446,6 +450,8 @@
                                 "org.drools.persistence.processinstance.JPAWorkItemManagerFactory" );
         properties.setProperty( "drools.processSignalManagerFactory",
                                 "org.drools.persistence.processinstance.JPASignalManagerFactory" );
+        properties.setProperty( "drools.timerService",
+								"org.drools.persistence.session.JpaJDKTimerService" );
         SessionConfiguration config = new SessionConfiguration( properties );
 
         RuleBase ruleBase = RuleBaseFactory.newRuleBase();
@@ -618,6 +624,8 @@
                                 "org.drools.persistence.processinstance.JPAWorkItemManagerFactory" );
         properties.setProperty( "drools.processSignalManagerFactory",
                                 "org.drools.persistence.processinstance.JPASignalManagerFactory" );
+        properties.setProperty( "drools.timerService",
+								"org.drools.persistence.session.JpaJDKTimerService" );
         SessionConfiguration config = new SessionConfiguration( properties );
 
         KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
@@ -722,6 +730,8 @@
                                 "org.drools.persistence.processinstance.JPAWorkItemManagerFactory" );
         properties.setProperty( "drools.processSignalManagerFactory",
                                 "org.drools.persistence.processinstance.JPASignalManagerFactory" );
+        properties.setProperty( "drools.timerService",
+								"org.drools.persistence.session.JpaJDKTimerService" );
         SessionConfiguration config = new SessionConfiguration( properties );
 
         KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();



More information about the jboss-svn-commits mailing list