cancel
Showing results for 
Search instead for 
Did you mean: 

Problems using parallel gateway together with exclusive gateway

risto45
Champ in-the-making
Champ in-the-making
I have a process model where after exclusive gateway comes parallel gateway, but when parallel gateway is reached, process doesn't create tasks. Process is automatically ended. No errors are thrown. If I use ONLY parallel gateway or ONLY exclusive gateway, then everything works. But if both are used, then it doesn't work.

Does any one have an idea why such process definition doesn't work or what has to be changed?
Basically this is my process definition:

<startEvent id="theStart"/>

<sequenceFlow id="flow1" sourceRef="theStart" targetRef="task1" />

<userTask id="task1" name="Task 1">
   <extensionElements>
      <activiti:taskListener event="create" delegateExpression="${customTaskListener}" />
   </extensionElements>
</userTask>

<sequenceFlow id="flow2" sourceRef="task1" targetRef="exclusiveGw1" />

<exclusiveGateway id="exclusiveGw1" name="Exclusive Gateway 1" />

<sequenceFlow id="flow2" sourceRef="exclusiveGw1" targetRef="task2">
   <conditionExpression xsi:type="tFormalExpression">${isValid}</conditionExpression>
</sequenceFlow>

<sequenceFlow id="flow3" sourceRef="exclusiveGw1" targetRef="task3"/>

<userTask id="task2" name="Task 2">
   <extensionElements>
      <activiti:taskListener event="create" delegateExpression="${customTaskListener}" />
   </extensionElements>
</userTask>

<sequenceFlow id="flow4" sourceRef="task2" targetRef="fork" />

<serviceTask id="task3" name="Task 3" activiti:expression="#{myService.myMethod(param)}" />

<sequenceFlow id="flow5" sourceRef="task3" targetRef="fork" />

<parallelGateway id="fork" />
<sequenceFlow id="flow6" sourceRef="fork" targetRef="task4" />
<sequenceFlow id="flow7" sourceRef="fork" targetRef="waitTask" />

<userTask id="task4" name="Task 4">
   <extensionElements>
      <activiti:taskListener event="create" delegateExpression="${customTaskListener}" />
   </extensionElements>
</userTask>

<sequenceFlow id="flow8" sourceRef="task4" targetRef="join" />

<receiveTask id="waitTask" name="Wait task"/>

<sequenceFlow id="flow9" sourceRef="waitTask" targetRef="task5" />

<userTask id="task5" name="Task 5">
   <extensionElements>
      <activiti:taskListener event="create" delegateExpression="${customTaskListener}" />
   </extensionElements>
</userTask>

<sequenceFlow id="flow10" sourceRef="task5" targetRef="join" />

<parallelGateway id="join" />

<sequenceFlow id="flow11" sourceRef="join" targetRef="theEnd"/>

<endEvent id="theEnd" />


Rgs,
Risto
1 REPLY 1

frederikherema1
Star Contributor
Star Contributor
Can you perhaps create a failing unit-test (see sticky in the forum) that highlight the problem? Really difficult to check this way…