[jbpm-commits] JBoss JBPM SVN: r5311 - jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/activities.
do-not-reply at jboss.org
do-not-reply at jboss.org
Thu Jul 16 07:07:23 EDT 2009
Author: jbarrez
Date: 2009-07-16 07:07:23 -0400 (Thu, 16 Jul 2009)
New Revision: 5311
Modified:
jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/activities/ForkTest.java
Log:
JBPM-2040 : added testcase to see if unstructured fork/join with one path leading to end-state is possible
Modified: jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/activities/ForkTest.java
===================================================================
--- jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/activities/ForkTest.java 2009-07-16 09:26:01 UTC (rev 5310)
+++ jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/activities/ForkTest.java 2009-07-16 11:07:23 UTC (rev 5311)
@@ -24,6 +24,7 @@
*/
package org.jbpm.test.activities;
+import org.jbpm.api.history.HistoryProcessInstance;
import org.jbpm.api.task.Task;
import org.jbpm.test.JbpmTestCase;
@@ -69,5 +70,103 @@
assertProcessInstanceEnded(processInstanceId);
}
+
+
+ private static final String UNSTRUCTURED_CONCURRENT_PROCESS =
+ "<process name='unstructuredConcurrency' xmlns='http://jbpm.org/4.0/jpdl'>" +
+ "<start name='start'> " +
+ " <transition to='theFork'/> " +
+ "</start> " +
+ "<fork name='theFork'> " +
+ " <transition name='pathA' to='A'/> " +
+ " <transition name='pathB' to='B'/> " +
+ "</fork> " +
+ "<task name='A'> " +
+ " <transition to='theJoin'/> " +
+ "</task> " +
+ "<task name='B'> " +
+ " <transition to='end2'/> " +
+ "</task> " +
+ "<join name='theJoin'> " +
+ " <transition to='waitState'/> " +
+ "</join> " +
+ "<state name='waitState'>" +
+ " <transition to='end1' />" +
+ "</state>" +
+ "<end name='end1'/> " +
+ "<end name='end2'/> " +
+ "</process>";
+
+ // Test for JBPM-2040
+ public void testDefaultUnstructuredForkBehaviour() {
+ deployJpdlXmlString(UNSTRUCTURED_CONCURRENT_PROCESS);
+ String processInstanceId = executionService.startProcessInstanceByKey("unstructuredConcurrency").getId();
+
+ Task taskA = taskService.createTaskQuery().activityName("A").uniqueResult();
+ taskService.completeTask(taskA.getId());
+ assertActivitiesActive(processInstanceId, "waitState", "B");
+
+ Task taskB = taskService.createTaskQuery().activityName("B").uniqueResult();
+ taskService.completeTask(taskB.getId());
+ assertProcessInstanceEnded(processInstanceId);
+ }
+
+ //Test for JBPM-2040
+ public void testDefaultUnstructuredForkBehaviour2() {
+ deployJpdlXmlString(UNSTRUCTURED_CONCURRENT_PROCESS);
+ String processInstanceId = executionService.startProcessInstanceByKey("unstructuredConcurrency").getId();
+
+ Task taskB = taskService.createTaskQuery().activityName("B").uniqueResult();
+ taskService.completeTask(taskB.getId());
+ assertProcessInstanceEnded(processInstanceId);
+
+ assertTrue("There are still open tasks left",
+ taskService.createTaskQuery().processInstanceId(processInstanceId).list().isEmpty());
+ }
+
+ //Test for JBPM-2040
+ public void testUnstructuredForkBehaviourWhenEndingExecutionOnly() {
+ // We're now changing the default end behaviour to ending
+ // only the execution instead of the process instance
+ deployJpdlXmlString(addEndExecutionToConcurrentProcess());
+ String processInstanceId = executionService.startProcessInstanceByKey("unstructuredConcurrency").getId();
+
+ Task taskB = taskService.createTaskQuery().activityName("B").uniqueResult();
+ taskService.completeTask(taskB.getId());
+
+ assertProcessInstanceActive(processInstanceId);
+ assertActivityActive(processInstanceId, "A");
+
+ Task taskA = taskService.createTaskQuery().activityName("A").uniqueResult();
+ taskService.completeTask(taskA.getId());
+ assertActivityActive(processInstanceId, "waitState");
+ assertProcessInstanceActive(processInstanceId);
+
+ executionService.signalExecutionById(
+ executionService.findExecutionById(processInstanceId)
+ .findActiveExecutionIn("waitState").getId());
+ assertProcessInstanceEnded(processInstanceId);
+ }
+
+ //Test for JBPM-2040
+ public void testUnstructuredForkBehaviourWhenEndingExecutionOnly2() {
+ // We're now changing the default end behaviour to ending
+ // only the execution instead of the process instance
+ deployJpdlXmlString(addEndExecutionToConcurrentProcess());
+ String processInstanceId = executionService.startProcessInstanceByKey("unstructuredConcurrency").getId();
+
+ Task taskA = taskService.createTaskQuery().activityName("A").uniqueResult();
+ taskService.completeTask(taskA.getId());
+ assertActivitiesActive(processInstanceId, "B", "waitState");
+
+ Task taskB = taskService.createTaskQuery().activityName("B").uniqueResult();
+ taskService.completeTask(taskB.getId());
+ assertProcessInstanceActive(processInstanceId);
+ }
+
+ private String addEndExecutionToConcurrentProcess() {
+ return UNSTRUCTURED_CONCURRENT_PROCESS.replace("<end name='end1'/>", "<end name='end1' ends='execution'/>")
+ .replace("<end name='end2'/>", "<end name='end2' ends='execution'/>");
+ }
}
More information about the jbpm-commits
mailing list