[jboss-svn-commits] JBL Code SVN: r25939 - in labs/jbossrules/trunk/drools-persistence-jpa/src: main/java/org/drools/persistence/session and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sat Apr 4 21:23:00 EDT 2009
Author: KrisVerlaenen
Date: 2009-04-04 21:23:00 -0400 (Sat, 04 Apr 2009)
New Revision: 25939
Modified:
labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManager.java
labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAWorkItemManager.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/PersistentStatefulSessionTest.java
labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/SingleSessionCommandServiceTest.java
Log:
JBRULES-2042: Problems with persistence of processes
- made local entity manager scoped to transaction
- added caching of process instance and work item in transaction
Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManager.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManager.java 2009-04-05 01:12:27 UTC (rev 25938)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManager.java 2009-04-05 01:23:00 UTC (rev 25939)
@@ -2,6 +2,8 @@
import java.util.ArrayList;
import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import javax.persistence.EntityManager;
@@ -19,6 +21,7 @@
ProcessInstanceManager {
private WorkingMemory workingMemory;
+ private transient Map<Long, ProcessInstance> processInstances;
public void setWorkingMemory(WorkingMemory workingMemory) {
this.workingMemory = workingMemory;
@@ -30,12 +33,25 @@
em.persist( processInstanceInfo );
((ProcessInstance) processInstance).setId( processInstanceInfo.getId() );
processInstanceInfo.updateLastReadDate();
+ internalAddProcessInstance(processInstance);
}
public void internalAddProcessInstance(ProcessInstance processInstance) {
+ if (this.processInstances == null) {
+ this.processInstances = new HashMap<Long, ProcessInstance>();
+ }
+ processInstances.put(processInstance.getId(), processInstance);
}
public ProcessInstance getProcessInstance(long id) {
+ ProcessInstance processInstance = null;
+ if (this.processInstances != null) {
+ processInstance = this.processInstances.get(id);
+ if (processInstance != null) {
+ return processInstance;
+ }
+ }
+
EntityManager em = (EntityManager) this.workingMemory.getEnvironment().get( EnvironmentName.ENTITY_MANAGER );
ProcessInstanceInfo processInstanceInfo = em.find( ProcessInstanceInfo.class,
id );
@@ -43,7 +59,7 @@
return null;
}
processInstanceInfo.updateLastReadDate();
- ProcessInstance processInstance = (ProcessInstance)
+ processInstance = (ProcessInstance)
processInstanceInfo.getProcessInstance(workingMemory);
Process process = ((InternalRuleBase) workingMemory.getRuleBase()).getProcess( processInstance.getProcessId() );
if ( process == null ) {
@@ -68,9 +84,19 @@
if ( processInstanceInfo != null ) {
em.remove( processInstanceInfo );
}
+ internalRemoveProcessInstance(processInstance);
}
public void internalRemoveProcessInstance(ProcessInstance processInstance) {
+ if (this.processInstances != null) {
+ processInstances.remove( processInstance.getId() );
+ }
}
+
+ public void clearProcessInstances() {
+ if (processInstances != null) {
+ processInstances.clear();
+ }
+ }
}
Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAWorkItemManager.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAWorkItemManager.java 2009-04-05 01:12:27 UTC (rev 25938)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAWorkItemManager.java 2009-04-05 01:23:00 UTC (rev 25939)
@@ -19,6 +19,7 @@
private WorkingMemory workingMemory;
private Map<String, WorkItemHandler> workItemHandlers = new HashMap<String, WorkItemHandler>();
+ private transient Map<Long, WorkItemInfo> workItems;
public JPAWorkItemManager(WorkingMemory workingMemory) {
this.workingMemory = workingMemory;
@@ -32,6 +33,12 @@
em.persist(workItemInfo);
((WorkItemImpl) workItem).setId(workItemInfo.getId());
workItemInfo.update();
+
+ if (this.workItems == null) {
+ this.workItems = new HashMap<Long, WorkItemInfo>();
+ }
+ workItems.put(workItem.getId(), workItemInfo);
+
WorkItemHandler handler = (WorkItemHandler) this.workItemHandlers.get(workItem.getName());
if (handler != null) {
handler.executeWorkItem(workItem, this);
@@ -53,6 +60,7 @@
} else {
System.err.println("Could not find work item handler for " + workItem.getName());
}
+ workItems.remove(id);
em.remove(workItemInfo);
}
}
@@ -63,10 +71,21 @@
public void completeWorkItem(long id, Map<String, Object> results) {
EntityManager em = (EntityManager) this.workingMemory.getEnvironment().get( EnvironmentName.ENTITY_MANAGER );
- WorkItemInfo workItemInfo = em.find(WorkItemInfo.class, id);
- // work item may have been aborted
+ WorkItemInfo workItemInfo = null;
+ if (this.workItems != null) {
+ workItemInfo = this.workItems.get(id);
+ if (workItemInfo != null) {
+ workItemInfo = em.merge(workItemInfo);
+ }
+ }
+
+ if (workItemInfo == null) {
+ workItemInfo = em.find(WorkItemInfo.class, id);
+ }
+
+ // work item may have been aborted
if (workItemInfo != null) {
- WorkItemImpl workItem = (WorkItemImpl) workItemInfo.getWorkItem();
+ WorkItem workItem = (WorkItemImpl) workItemInfo.getWorkItem();
workItem.setResults(results);
ProcessInstance processInstance = workingMemory.getProcessInstance(workItem.getProcessInstanceId());
workItem.setState(WorkItem.COMPLETED);
@@ -75,6 +94,9 @@
processInstance.signalEvent("workItemCompleted", workItem);
}
em.remove(workItemInfo);
+ if (workItems != null) {
+ this.workItems.remove(workItem.getId());
+ }
workingMemory.fireAllRules();
}
}
@@ -82,10 +104,19 @@
public void abortWorkItem(long id) {
EntityManager em = (EntityManager) this.workingMemory.getEnvironment().get( EnvironmentName.ENTITY_MANAGER );
- WorkItemInfo workItemInfo = em.find(WorkItemInfo.class, id);
- // work item may have been aborted
+ WorkItemInfo workItemInfo = null;
+ if (this.workItems != null) {
+ workItemInfo = this.workItems.get(id);
+ em.merge(workItemInfo);
+ }
+
+ if (workItemInfo == null) {
+ workItemInfo = em.find(WorkItemInfo.class, id);
+ }
+
+ // work item may have been aborted
if (workItemInfo != null) {
- WorkItemImpl workItem = (WorkItemImpl) workItemInfo.getWorkItem();
+ WorkItem workItem = (WorkItemImpl) workItemInfo.getWorkItem();
ProcessInstance processInstance = workingMemory.getProcessInstance(workItem.getProcessInstanceId());
workItem.setState(WorkItem.ABORTED);
// process instance may have finished already
@@ -93,15 +124,25 @@
processInstance.signalEvent("workItemAborted", workItem);
}
em.remove(workItemInfo);
+ if (workItems != null) {
+ workItems.remove(workItem.getId());
+ }
workingMemory.fireAllRules();
}
}
public WorkItem getWorkItem(long id) {
- EntityManager em = (EntityManager) this.workingMemory.getEnvironment().get( EnvironmentName.ENTITY_MANAGER );
-
- WorkItemInfo workItemInfo = em.find(WorkItemInfo.class, id);
+ WorkItemInfo workItemInfo = null;
+ if (this.workItems != null) {
+ workItemInfo = this.workItems.get(id);
+ }
+
if (workItemInfo == null) {
+ EntityManager em = (EntityManager) this.workingMemory.getEnvironment().get( EnvironmentName.ENTITY_MANAGER );
+ workItemInfo = em.find(WorkItemInfo.class, id);
+ }
+
+ if (workItemInfo == null) {
return null;
}
return workItemInfo.getWorkItem();
@@ -115,4 +156,10 @@
this.workItemHandlers.put(workItemName, handler);
}
+ public void clearWorkItems() {
+ if (workItems != null) {
+ workItems.clear();
+ }
+ }
+
}
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 2009-04-05 01:12:27 UTC (rev 25938)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/session/SingleSessionCommandService.java 2009-04-05 01:23:00 UTC (rev 25939)
@@ -19,7 +19,9 @@
import org.drools.StatefulSession;
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.process.command.Command;
import org.drools.process.command.CommandService;
import org.drools.reteoo.ReteooStatefulSession;
@@ -60,6 +62,16 @@
env );
}
+ public SingleSessionCommandService(int sessionId,
+ RuleBase ruleBase,
+ SessionConfiguration conf,
+ Environment env) {
+ this( sessionId,
+ new KnowledgeBaseImpl( ruleBase ),
+ (SessionConfiguration) conf,
+ env );
+ }
+
public SingleSessionCommandService(KnowledgeBase kbase,
KnowledgeSessionConfiguration conf,
Environment env) {
@@ -140,13 +152,8 @@
ut.begin();
registerRollbackSync();
this.em.joinTransaction();
-
- sessionInfo = this.em.find( SessionInfo.class,
- sessionId );
-
- // System.out.println("committing");
+ sessionInfo = this.em.find( SessionInfo.class, sessionId );
ut.commit();
- // System.out.println("commit complete");
} catch ( Throwable t1 ) {
try {
if ( ut != null ) {
@@ -160,21 +167,11 @@
}
}
- this.session = ((KnowledgeBaseImpl) kbase).ruleBase.newStatefulSession( (SessionConfiguration) conf,
- this.env );
-
- // update the session id to be the same as the session info id
- ((ReteooStatefulSession) this.session).setId( sessionId );
-
- this.ksession = new StatefulKnowledgeSessionImpl( (ReteooWorkingMemory) session );
- ((JPASignalManager) this.session.getSignalManager()).setCommandService( this );
-
this.marshallingHelper = new JPASessionMarshallingHelper( this.sessionInfo,
kbase,
conf,
env );
-
this.sessionInfo.setJPASessionMashallingHelper( this.marshallingHelper );
this.ksession = this.marshallingHelper.getObject();
this.session = (StatefulSession) ((StatefulKnowledgeSessionImpl) ksession).session;
@@ -205,9 +202,11 @@
localTransaction = true;
}
- EntityManager localEm = this.emf.createEntityManager(); // no need to call joinTransaction as it will do so if one already exists
- this.env.set( EnvironmentName.ENTITY_MANAGER,
- localEm );
+ EntityManager localEm = (EntityManager) env.get( EnvironmentName.ENTITY_MANAGER );
+ if (localEm == null || !localEm.isOpen()) {
+ localEm = this.emf.createEntityManager(); // no need to call joinTransaction as it will do so if one already exists
+ this.env.set( EnvironmentName.ENTITY_MANAGER, localEm );
+ }
if ( this.em == null ) {
// there must have been a rollback to lazily re-initialise the state
@@ -222,20 +221,27 @@
}
this.em.joinTransaction();
- //System.out.println( "1) exec ver : " + this.sessionInfo.getVersion() );
this.sessionInfo.setDirty();
- //System.out.println( "2) exec ver : " + this.sessionInfo.getVersion() );
registerRollbackSync();
T result = command.execute( ( ReteooWorkingMemory ) session );
- //System.out.println( "3) exec ver : " + this.sessionInfo.getVersion() );
if ( localTransaction ) {
// it's a locally created transaction so commit
ut.commit();
- }
+ // cleanup local entity manager
+ if ( localEm.isOpen() ) {
+ localEm.close();
+ }
+ this.env.set( EnvironmentName.ENTITY_MANAGER, null );
+
+ // clean up cached process and work item instances
+ ((JPAProcessInstanceManager) ((ReteooWorkingMemory) session).getProcessInstanceManager()).clearProcessInstances();
+ ((JPAWorkItemManager) ((ReteooWorkingMemory) session).getWorkItemManager()).clearWorkItems();
+ }
+
return result;
} catch ( Throwable t1 ) {
@@ -274,7 +280,7 @@
return sessionInfo.getId();
}
- public void registerRollbackSync() throws IllegalStateException,
+ private void registerRollbackSync() throws IllegalStateException,
RollbackException,
SystemException {
TransactionManager txm = (TransactionManager) env.get( EnvironmentName.TRANSACTION_MANAGER );
@@ -290,8 +296,7 @@
}
if ( map.get( this ) == null ) {
- txm.getTransaction().registerSynchronization( new SynchronizationImpl( env,
- this ) );
+ txm.getTransaction().registerSynchronization( new SynchronizationImpl() );
map.put( this,
this );
}
@@ -305,36 +310,30 @@
// }
}
- public static class SynchronizationImpl
+ private class SynchronizationImpl
implements
Synchronization {
- private Environment env;
- private SingleSessionCommandService cmdService;
- public SynchronizationImpl(Environment env,
- SingleSessionCommandService cmdService) {
- this.env = env;
- this.cmdService = cmdService;
- }
-
public void afterCompletion(int status) {
if ( status != Status.STATUS_COMMITTED ) {
- cmdService.rollback();
- System.out.println( "after with local rollback: " + status );
+ rollback();
}
// always cleanup thread local whatever the result
//rollbackRegistered.remove();
- System.out.println( "cleanedup rollback sychronisation" );
Map map = (Map) env.get( "synchronizations" );
- map.remove( cmdService );
+ map.remove( SingleSessionCommandService.this );
- // cleanup local resource entity manager, normally an EntityManager should be closed with the transaction it was bound to,
- // if it was created inside the scope of the transaction, but adding this anyway just in case.
- EntityManager localEm = (EntityManager) this.env.get( EnvironmentName.ENTITY_MANAGER );
+ // cleanup local entity manager
+ EntityManager localEm = (EntityManager) env.get( EnvironmentName.ENTITY_MANAGER );
if ( localEm != null && localEm.isOpen() ) {
localEm.close();
}
+ env.set( EnvironmentName.ENTITY_MANAGER, null );
+
+ // clean up cached process and work item instances
+ ((JPAProcessInstanceManager) ((ReteooWorkingMemory) session).getProcessInstanceManager()).clearProcessInstances();
+ ((JPAWorkItemManager) ((ReteooWorkingMemory) session).getWorkItemManager()).clearWorkItems();
}
@@ -375,7 +374,7 @@
// }
//}
- public void rollback() {
+ private void rollback() {
// with em null, if someone tries to use this session it'll first restore it's state
this.em.close();
this.em = null;
Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/PersistentStatefulSessionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/PersistentStatefulSessionTest.java 2009-04-05 01:12:27 UTC (rev 25938)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/PersistentStatefulSessionTest.java 2009-04-05 01:23:00 UTC (rev 25939)
@@ -28,6 +28,7 @@
import org.drools.io.ResourceFactory;
import org.drools.io.impl.ClassPathResource;
import org.drools.persistence.jpa.JPAKnowledgeService;
+import org.drools.process.instance.impl.demo.SystemOutWorkItemHandler;
import org.drools.runtime.Environment;
import org.drools.runtime.EnvironmentName;
import org.drools.runtime.StatefulKnowledgeSession;
@@ -275,6 +276,96 @@
}
+ public void testPersistenceWorkItems2() throws Exception {
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add( new ClassPathResource( "WorkItemsProcess.rf" ),
+ ResourceType.DRF );
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+ EntityManagerFactory emf = Persistence.createEntityManagerFactory( "org.drools.persistence.jpa" );
+ Environment env = KnowledgeBaseFactory.newEnvironment();
+ env.set( EnvironmentName.ENTITY_MANAGER_FACTORY,
+ emf );
+
+ env.set( EnvironmentName.GLOBALS, new MapGlobalResolver() );
+
+ StatefulKnowledgeSession ksession = JPAKnowledgeService.newStatefulKnowledgeSession( kbase, null, env );
+ int id = ksession.getId();
+
+ UserTransaction ut = (UserTransaction) new InitialContext().lookup( "java:comp/UserTransaction" );
+ ut.begin();
+
+ ProcessInstance processInstance = ksession.startProcess( "org.drools.test.TestProcess" );
+ ksession.insert( "TestString" );
+ System.out.println( "Started process instance " + processInstance.getId() );
+
+ TestWorkItemHandler handler = TestWorkItemHandler.getInstance();
+ WorkItem workItem = handler.getWorkItem();
+ assertNotNull( workItem );
+
+ ksession.getWorkItemManager().completeWorkItem( workItem.getId(),
+ null );
+
+ workItem = handler.getWorkItem();
+ assertNotNull( workItem );
+
+ ut.commit();
+
+ ksession = JPAKnowledgeService.loadStatefulKnowledgeSession( id, kbase, null, env );
+ processInstance = ksession.getProcessInstance( processInstance.getId() );
+ assertNotNull( processInstance );
+
+ ksession = JPAKnowledgeService.loadStatefulKnowledgeSession( id, kbase, null, env );
+ ksession.getWorkItemManager().completeWorkItem( workItem.getId(),
+ null );
+
+ workItem = handler.getWorkItem();
+ assertNotNull( workItem );
+
+ ksession = JPAKnowledgeService.loadStatefulKnowledgeSession( id, kbase, null, env );
+ processInstance = ksession.getProcessInstance( processInstance.getId() );
+ assertNotNull( processInstance );
+
+ ksession = JPAKnowledgeService.loadStatefulKnowledgeSession( id, kbase, null, env );
+ ksession.getWorkItemManager().completeWorkItem( workItem.getId(),
+ null );
+
+ workItem = handler.getWorkItem();
+ assertNull( workItem );
+
+ ksession = JPAKnowledgeService.loadStatefulKnowledgeSession( id, kbase, null, env );
+ processInstance = ksession.getProcessInstance( processInstance.getId() );
+ assertEquals( 1,
+ ksession.getObjects().size() );
+ for ( Object o : ksession.getObjects() ) {
+ System.out.println( o );
+ }
+ assertNull( processInstance );
+
+ }
+
+ public void testPersistenceWorkItems3() {
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add( new ClassPathResource( "WorkItemsProcess.rf" ),
+ ResourceType.DRF );
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+ EntityManagerFactory emf = Persistence.createEntityManagerFactory( "org.drools.persistence.jpa" );
+ Environment env = KnowledgeBaseFactory.newEnvironment();
+ env.set( EnvironmentName.ENTITY_MANAGER_FACTORY,
+ emf );
+
+ env.set( EnvironmentName.GLOBALS, new MapGlobalResolver() );
+
+ StatefulKnowledgeSession ksession = JPAKnowledgeService.newStatefulKnowledgeSession( kbase, null, env );
+ ksession.getWorkItemManager().registerWorkItemHandler("MyWork", new SystemOutWorkItemHandler());
+ ProcessInstance processInstance = ksession.startProcess( "org.drools.test.TestProcess" );
+ ksession.insert( "TestString" );
+ assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
+ }
+
public void testProcessListener() {
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add( new ClassPathResource( "WorkItemsProcess.rf" ),
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 2009-04-05 01:12:27 UTC (rev 25938)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/SingleSessionCommandServiceTest.java 2009-04-05 01:23:00 UTC (rev 25939)
@@ -17,16 +17,19 @@
import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
import org.drools.SessionConfiguration;
+import org.drools.audit.WorkingMemoryConsoleLogger;
import org.drools.compiler.PackageBuilder;
import org.drools.compiler.ProcessBuilder;
import org.drools.definition.KnowledgePackage;
import org.drools.definitions.impl.KnowledgePackageImp;
+import org.drools.event.RuleFlowEventListener;
import org.drools.process.command.CompleteWorkItemCommand;
import org.drools.process.command.GetProcessInstanceCommand;
import org.drools.process.command.StartProcessCommand;
import org.drools.process.core.Work;
import org.drools.process.core.impl.WorkImpl;
import org.drools.process.core.timer.Timer;
+import org.drools.process.instance.impl.demo.SystemOutWorkItemHandler;
import org.drools.rule.Package;
import org.drools.ruleflow.core.RuleFlowProcess;
import org.drools.ruleflow.instance.RuleFlowProcessInstance;
@@ -81,7 +84,7 @@
Environment env = KnowledgeBaseFactory.newEnvironment();
env.set( EnvironmentName.ENTITY_MANAGER_FACTORY,
emf );
- env.set( "drools.TransactionManager",
+ env.set( EnvironmentName.TRANSACTION_MANAGER,
TransactionManagerServices.getTransactionManager() );
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
@@ -195,7 +198,7 @@
Environment env = KnowledgeBaseFactory.newEnvironment();
env.set( EnvironmentName.ENTITY_MANAGER_FACTORY,
emf );
- env.set( "drools.TransactionManager",
+ env.set( EnvironmentName.TRANSACTION_MANAGER,
TransactionManagerServices.getTransactionManager() );
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
@@ -398,7 +401,7 @@
Environment env = KnowledgeBaseFactory.newEnvironment();
env.set( EnvironmentName.ENTITY_MANAGER_FACTORY,
emf );
- env.set( "drools.TransactionManager",
+ env.set( EnvironmentName.TRANSACTION_MANAGER,
TransactionManagerServices.getTransactionManager() );
Properties properties = new Properties();
@@ -419,6 +422,7 @@
SingleSessionCommandService service = new SingleSessionCommandService( ruleBase,
config,
env );
+ int sessionId = service.getSessionId();
StartProcessCommand startProcessCommand = new StartProcessCommand();
startProcessCommand.setProcessId( "org.drools.test.TestProcess" );
RuleFlowProcessInstance processInstance = (RuleFlowProcessInstance) service.execute( startProcessCommand );
@@ -430,7 +434,8 @@
assertNotNull( workItem );
service.dispose();
- service = new SingleSessionCommandService( ruleBase,
+ service = new SingleSessionCommandService( sessionId,
+ ruleBase,
config,
env );
GetProcessInstanceCommand getProcessInstanceCommand = new GetProcessInstanceCommand();
@@ -449,7 +454,8 @@
assertNotNull( subProcessInstance );
service.dispose();
- service = new SingleSessionCommandService( ruleBase,
+ service = new SingleSessionCommandService( sessionId,
+ ruleBase,
config,
env );
CompleteWorkItemCommand completeWorkItemCommand = new CompleteWorkItemCommand();
@@ -457,7 +463,8 @@
service.execute( completeWorkItemCommand );
service.dispose();
- service = new SingleSessionCommandService( ruleBase,
+ service = new SingleSessionCommandService( sessionId,
+ ruleBase,
config,
env );
getProcessInstanceCommand = new GetProcessInstanceCommand();
@@ -565,7 +572,7 @@
Environment env = KnowledgeBaseFactory.newEnvironment();
env.set( EnvironmentName.ENTITY_MANAGER_FACTORY,
emf );
- env.set( "drools.TransactionManager",
+ env.set( EnvironmentName.TRANSACTION_MANAGER,
TransactionManagerServices.getTransactionManager() );
Properties properties = new Properties();
@@ -668,7 +675,7 @@
Environment env = KnowledgeBaseFactory.newEnvironment();
env.set( EnvironmentName.ENTITY_MANAGER_FACTORY,
emf );
- env.set( "drools.TransactionManager",
+ env.set( EnvironmentName.TRANSACTION_MANAGER,
TransactionManagerServices.getTransactionManager() );
Properties properties = new Properties();
More information about the jboss-svn-commits
mailing list