[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