Author: jbarrez
Date: 2009-12-20 07:42:36 -0500 (Sun, 20 Dec 2009)
New Revision: 6000
Added:
jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/bpmn/gateway/parallel/
jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/bpmn/gateway/parallel/ParallelGatewayTest.java
jbpm4/trunk/modules/examples/src/test/resources/org/jbpm/examples/bpmn/gateway/parallel/
jbpm4/trunk/modules/examples/src/test/resources/org/jbpm/examples/bpmn/gateway/parallel/parallel_gateway.bpmn.xml
Log:
JBPM-2662: parallel gateway
Added:
jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/bpmn/gateway/parallel/ParallelGatewayTest.java
===================================================================
---
jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/bpmn/gateway/parallel/ParallelGatewayTest.java
(rev 0)
+++
jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/bpmn/gateway/parallel/ParallelGatewayTest.java 2009-12-20
12:42:36 UTC (rev 6000)
@@ -0,0 +1,39 @@
+package org.jbpm.examples.bpmn.gateway.parallel;
+
+import java.util.List;
+
+import org.jbpm.api.NewDeployment;
+import org.jbpm.api.ProcessInstance;
+import org.jbpm.api.task.Task;
+import org.jbpm.test.JbpmTestCase;
+
+
+public class ParallelGatewayTest extends JbpmTestCase {
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ NewDeployment deployment = repositoryService.createDeployment();
+
deployment.addResourceFromClasspath("org/jbpm/examples/bpmn/gateway/parallel/parallel_gateway.bpmn.xml");
+ registerDeployment(deployment.deploy());
+ }
+
+ public void testParallelGateway() {
+ ProcessInstance processInstance =
executionService.startProcessInstanceByKey("parallelGateway");
+
+ List<Task> tasks = taskService.createTaskQuery().list();
+ assertEquals(2, tasks.size());
+
+ // Complete first task -> 1 still open
+ taskService.completeTask(tasks.get(0).getId());
+ assertProcessInstanceActive(processInstance);
+ Task secondTask = taskService.createTaskQuery().uniqueResult();
+ assertNotNull(secondTask);
+ assertTrue(secondTask.getName().equals("Prepare shipment") ||
secondTask.getName().equals("Bill customer"));
+
+ // Complete second task -> process ended
+ taskService.completeTask(secondTask.getId());
+ assertProcessInstanceEnded(processInstance);
+ }
+
+}
Added:
jbpm4/trunk/modules/examples/src/test/resources/org/jbpm/examples/bpmn/gateway/parallel/parallel_gateway.bpmn.xml
===================================================================
---
jbpm4/trunk/modules/examples/src/test/resources/org/jbpm/examples/bpmn/gateway/parallel/parallel_gateway.bpmn.xml
(rev 0)
+++
jbpm4/trunk/modules/examples/src/test/resources/org/jbpm/examples/bpmn/gateway/parallel/parallel_gateway.bpmn.xml 2009-12-20
12:42:36 UTC (rev 6000)
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions id="ExclusiveGatewayNormal"
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+
xsi:schemaLocation="http://schema.omg.org/spec/BPMN/2.0
../../../../../../../../../../bpmn/src/main/resources/BPMN20.xsd"
+
xmlns="http://schema.omg.org/spec/BPMN/2.0"
typeLanguage="http://www.w3.org/2001/XMLSchema"
+
expressionLanguage="http://www.w3.org/1999/XPath"
targetNamespace="http://jbpm.org/example/bpmn2/parallel_gateway"...
+
+ <process id="parallelGateway" name="BPMN2 example parallel
gatewar">
+
+ <startEvent id="Start" />
+
+ <sequenceFlow id="flow1" name="fromStartToSplit"
+ sourceRef="Start"
+ targetRef="parallelGatewaySplit" />
+
+ <parallelGateway id="parallelGatewaySplit" name="Split"
+ gatewayDirection="diverging"/>
+
+ <sequenceFlow id="flow2a" name="Leg 1"
+ sourceRef="parallelGatewaySplit"
+ targetRef="prepareShipment" />
+
+ <userTask id="prepareShipment" name="Prepare shipment"
implementation="other" />
+
+ <sequenceFlow id="flow2b" name="fromPrepareShipmentToJoin"
+ sourceRef="prepareShipment"
+ targetRef="parallelGatewayJoin" />
+
+ <sequenceFlow id="flow3a" name="Leg 2"
+ sourceRef="parallelGatewaySplit"
+ targetRef="billCustomer" />
+
+ <userTask id="billCustomer" name="Bill customer"
implementation="other" />
+
+ <sequenceFlow id="flow3b" name="fromLeg2ToJoin"
+ sourceRef="billCustomer"
+ targetRef="parallelGatewayJoin" />
+
+ <parallelGateway id="parallelGatewayJoin" name="Join"
+ gatewayDirection="converging"/>
+
+ <sequenceFlow id="flow4"
+ sourceRef="parallelGatewayJoin"
+ targetRef="End">
+ </sequenceFlow>
+
+ <endEvent id="End" name="End" />
+
+ </process>
+</definitions>