[jbpm-commits] JBoss JBPM SVN: r6428 - in jbpm4/trunk/modules: test-db/src/test/java/org/jbpm/test/activity/foreach and 1 other directory.

do-not-reply at jboss.org do-not-reply at jboss.org
Tue Jun 22 12:55:56 EDT 2010


Author: swiderski.maciej
Date: 2010-06-22 12:55:56 -0400 (Tue, 22 Jun 2010)
New Revision: 6428

Modified:
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java
   jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/activity/foreach/ForEachTest.java
Log:
JBPM-2414: added fix for multi executions left test case, changed order of operations, first skip task then remove execution from its parent

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java	2010-06-21 11:39:59 UTC (rev 6427)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java	2010-06-22 16:55:56 UTC (rev 6428)
@@ -367,7 +367,7 @@
     
 
     if (parent!=null) {
-      parent.removeExecution(this);
+      
       if (dbSession!=null) {
         
         // make sure task attached to this execution are completed or skipped
@@ -378,6 +378,7 @@
         
         dbSession.delete(this);
       }
+      parent.removeExecution(this);
     }
     else {
       // this is a process instance

Modified: jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/activity/foreach/ForEachTest.java
===================================================================
--- jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/activity/foreach/ForEachTest.java	2010-06-21 11:39:59 UTC (rev 6427)
+++ jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/activity/foreach/ForEachTest.java	2010-06-22 16:55:56 UTC (rev 6428)
@@ -435,4 +435,61 @@
     assertEquals(1, historyTasks.size());
     assertEquals(HistoryTask.STATE_OBSOLETE, historyTasks.get(0).getState());
   }
-}
+
+  public void testForEachJoinMultiplicityLeftTasks() {
+    deployJpdlXmlString(""
+      + "<process name='ForEachJoinMultiplicity' xmlns='http://jbpm.org/jpdl/4.4'>"
+      + "   <start g='179,17,32,29' name='start1'>"
+      + "      <transition g='-43,-18' name='to foreach1' to='foreach1'/>"
+      + "   </start>"
+      + "   <foreach g='185,95,49,50' name='foreach1' var='assign' in='#{actors}'>"
+      + "      <transition name='left' to='task1' g='-44,-18'/>"
+      + "   </foreach>"
+      + "   <task name='task1' g='90,177,73,44' assignee='#{assign}'>"
+      + "      <transition name='to state' to='join2' g='-43,-18'/>"
+      + "   </task>"
+      + "   <join name='join2' g='192,511,57,44' multiplicity='#{actors.size()-2}'>"
+      + "      <transition name='to Big car' to='Big car' g='-42,-18'/>"
+      + "   </join>"
+      + "   <!
 state name='Big car' > "
+      + "   <transition name='to end1' to='end1' g='-43,-18'/>"
+      + "   </state> "
+      + "   <end g='193,606,38,33' name='end1'/>"
+      + "</process>");
+
+    Map<String, ?> variables = Collections.singletonMap("actors", Arrays.asList("alex", "mike", "bob"));
+    ProcessInstance processInstance = executionService.startProcessInstanceByKey("ForEachJoinMultiplicity", variables);
+
+    Task taskAlex = taskService.createTaskQuery().assignee("alex").uniqueResult();
+    assertEquals("task1", taskAlex.getActivityName());
+    taskService.completeTask(taskAlex.getId());
+
+    Task taskMike = taskService.createTaskQuery().assignee("mike").uniqueResult();
+    assertNull(taskMike);
+    
+    Task taskBob = taskService.createTaskQuery().assignee("bob").uniqueResult();
+    assertNull(taskBob);
+    
+    processInstance = executionService.findProcessInstanceById(processInstance.getId());
+    
+    executionService.signalExecutionById(processI!
 nstance.getId());
+
+    HistoryProcessInstance history = hist!
 oryServi
ce.createHistoryProcessInstanceQuery()
+      .processInstanceId(processInstance.getId())
+      .uniqueResult();
+    assertEquals(ProcessInstance.STATE_ENDED, history.getState());
+    assertEquals("end1", history.getEndActivityName());
+    
+    List<HistoryTask> historyTasks = historyService.createHistoryTaskQuery().assignee("alex").list();
+    assertEquals(1, historyTasks.size());
+    assertEquals(HistoryTask.STATE_COMPLETED, historyTasks.get(0).getState());
+    
+    historyTasks = historyService.createHistoryTaskQuery().assignee("mike").list();
+    assertEquals(1, historyTasks.size());
+    assertEquals(HistoryTask.STATE_OBSOLETE, historyTasks.get(0).getState());
+    
+    historyTasks = historyService.createHistoryTaskQuery().assignee("bob").list();
+    assertEquals(1, historyTasks.size());
+    assertEquals(HistoryTask.STATE_OBSOLETE, historyTasks.get(0).getState());
+  }
+}
\ No newline at end of file



More information about the jbpm-commits mailing list