[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