[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