[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