[jboss-svn-commits] JBL Code SVN: r29804 - in labs/jbossrules/trunk: drools-core/src/main/java/org/drools/process/instance/impl and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Oct 25 16:37:31 EDT 2009


Author: KrisVerlaenen
Date: 2009-10-25 16:37:31 -0400 (Sun, 25 Oct 2009)
New Revision: 29804

Added:
   labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/EventsProcess.rf
Modified:
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/process/ProcessRuntime.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/impl/ProcessInstanceImpl.java
   labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/PersistentStatefulSessionTest.java
Log:
 - added persistence test for events

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/process/ProcessRuntime.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/process/ProcessRuntime.java	2009-10-25 09:12:47 UTC (rev 29803)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/process/ProcessRuntime.java	2009-10-25 20:37:31 UTC (rev 29804)
@@ -13,6 +13,10 @@
     void signalEvent(String type,
                      Object event);
 
+    void signalEvent(String type,
+                     Object event,
+                     long processInstanceId);
+
     Collection<ProcessInstance> getProcessInstances();
 
     ProcessInstance getProcessInstance(long id);

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/impl/ProcessInstanceImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/impl/ProcessInstanceImpl.java	2009-10-25 09:12:47 UTC (rev 29803)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/impl/ProcessInstanceImpl.java	2009-10-25 20:37:31 UTC (rev 29804)
@@ -47,7 +47,7 @@
     private int state = STATE_PENDING;
     private Map<String, ContextInstance> contextInstances = new HashMap<String, ContextInstance>();
     private Map<String, List<ContextInstance>> subContextInstances = new HashMap<String, List<ContextInstance>>();
-    private InternalWorkingMemory workingMemory;
+    private transient InternalWorkingMemory workingMemory;
 
     public void setId(final long id) {
         this.id = id;

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-10-25 09:12:47 UTC (rev 29803)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/PersistentStatefulSessionTest.java	2009-10-25 20:37:31 UTC (rev 29804)
@@ -372,6 +372,54 @@
         assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
     }
     
+    public void testPersistenceEvents() {
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+        kbuilder.add( new ClassPathResource( "EventsProcess.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();
+        
+        ProcessInstance processInstance = ksession.startProcess( "org.drools.test.TestProcess" );
+        System.out.println( "Started process instance " + processInstance.getId() );
+
+        TestWorkItemHandler handler = TestWorkItemHandler.getInstance();
+        WorkItem 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 );
+        
+        ksession = JPAKnowledgeService.loadStatefulKnowledgeSession( id, kbase, null, env );
+        processInstance = ksession.getProcessInstance( processInstance.getId() );
+        assertNotNull( processInstance );
+
+        ksession.signalEvent("MyEvent1", null, processInstance.getId());
+
+        ksession = JPAKnowledgeService.loadStatefulKnowledgeSession( id, kbase, null, env );
+        processInstance = ksession.getProcessInstance( processInstance.getId() );
+        assertNotNull( processInstance );
+
+        ksession.signalEvent("MyEvent2", null, processInstance.getId());
+        
+        ksession = JPAKnowledgeService.loadStatefulKnowledgeSession( id, kbase, null, env );
+        processInstance = ksession.getProcessInstance( processInstance.getId() );
+        assertNull( processInstance );
+    }
+    
     public void testProcessListener() {
         KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
         kbuilder.add( new ClassPathResource( "WorkItemsProcess.rf" ),

Added: labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/EventsProcess.rf
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/EventsProcess.rf	                        (rev 0)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/EventsProcess.rf	2009-10-25 20:37:31 UTC (rev 29804)
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?> 
+<process xmlns="http://drools.org/drools-5.0/process"
+         xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
+         xs:schemaLocation="http://drools.org/drools-5.0/process drools-processes-5.0.xsd"
+         type="RuleFlow" name="TestProcess" id="org.drools.test.TestProcess" package-name="org.drools.test" >
+
+  <header>
+  </header>
+
+  <nodes>
+    <start id="1" name="Start" />
+    <workItem id="2" name="WorkItem1" >
+      <work name="MyWork" >
+      </work>
+    </workItem>
+    <eventNode id="3" name="Message" >
+      <eventFilters>
+        <eventFilter type="eventType" eventType="MyEvent1" />
+      </eventFilters>
+    </eventNode>
+    <actionNode id="4" name="Action1" >
+        <action type="expression" dialect="java" >System.out.println("Executed action1");</action>
+    </actionNode>
+    <eventNode id="5" name="Message" >
+      <eventFilters>
+        <eventFilter type="eventType" eventType="MyEvent2" />
+      </eventFilters>
+    </eventNode>
+    <actionNode id="6" name="Action2" >
+        <action type="expression" dialect="java" >System.out.println("Executed action2");</action>
+    </actionNode>
+    <join id="7" name="AND" type="1" />
+    <end id="8" name="End" />
+  </nodes>
+
+  <connections>
+    <connection from="1" to="2" />
+    <connection from="2" to="7" />
+    <connection from="3" to="4" />
+    <connection from="4" to="7" />
+    <connection from="5" to="6" />
+    <connection from="6" to="7" />
+    <connection from="7" to="8" />
+  </connections>
+
+</process>
\ No newline at end of file



More information about the jboss-svn-commits mailing list