AnsweredAssumed Answered

Parallel gateway does not activate

Question asked by mahavirj on Feb 20, 2011
Latest reply on Feb 23, 2011 by mahavirj
Since <inclusiveGateway> is not supported as yet, a combination of divergent parallelGateway + exclusiveGateway has to be used to get that functionality. In one specific scenario, however, a convergent parallelGateway does not activate. I could reproduce this issue by adding this scenario to the SubProcessTest.fixSystemFailureProcess.bpmn20.xml that comes with the examples in activiti R5.2.  Does this scenario violate BPMN2, or is this a bug?

See the process flow below. The sequence between the "Begin/End POC Sequence" comments is the scenario added for this test. "subProcessJoin" does not activate (all intermediate tasks were completed)

    <subProcess id="subProcess">
   
      <startEvent id="subProcessStart" />
      <sequenceFlow id="flow2" sourceRef="subProcessStart" targetRef="subProcessFork" />
     
      <parallelGateway id="subProcessFork" />
      <sequenceFlow id="flow3" sourceRef="subProcessFork" targetRef="task1" />
      <sequenceFlow id="flow4" sourceRef="subProcessFork" targetRef="task2" />
     
      <userTask id="task1" name="Investigate hardware" activiti:assignee="kermit" />
      <sequenceFlow id="flow5" sourceRef="task1" targetRef="subProcessJoin" />
     
      <userTask id="task2" name="Investigate software" activiti:assignee="kermit" />
      <sequenceFlow id="flow6" sourceRef="task2" targetRef="subProcessJoin" />
     
      <!– Begin POC Sequence –>     
      <userTask id="poc_task3" name="Task Foo" activiti:assignee="kermit" />
      <userTask id="poc_task4" name="Task Moo" activiti:assignee="kermit" />
      <exclusiveGateway id="poc_eg1" />
      <exclusiveGateway id="poc_eg2" />
      <parallelGateway id="poc_pg1" />
                 
      <sequenceFlow id="sp3_flow29" name="" sourceRef="task2"  targetRef="poc_eg1" ></sequenceFlow>
      <sequenceFlow id="sp3_flow301" name="" sourceRef="poc_eg1" targetRef="poc_pg1" >
            <conditionExpression xsi:type="tFormalExpression"><![CDATA[${1 == 1}]]></conditionExpression>
      </sequenceFlow>     
      <sequenceFlow id="sp3_flow302" name="" sourceRef="poc_eg1" targetRef="subProcessJoin" >
            <conditionExpression xsi:type="tFormalExpression"><![CDATA[${1 == 2}]]></conditionExpression>
      </sequenceFlow>     
      <sequenceFlow id="sp3_flow303" name="" sourceRef="poc_pg1"  targetRef="poc_task3" ></sequenceFlow>
      <sequenceFlow id="sp3_flow304" name="" sourceRef="poc_pg1"  targetRef="poc_eg2" ></sequenceFlow>
      <sequenceFlow id="sp3_flow305" name="" sourceRef="poc_eg2" targetRef="poc_task4">
               <conditionExpression xsi:type="tFormalExpression"><![CDATA[${ 1 == 1 }]]></conditionExpression>
      </sequenceFlow>
      <sequenceFlow id="sp3_flow306" name="" sourceRef="poc_eg2" targetRef="subProcessJoin">
               <conditionExpression xsi:type="tFormalExpression"><![CDATA[${ 1 == 2 }]]></conditionExpression>
      </sequenceFlow> 
      <sequenceFlow id="sp3_flow34" name="" sourceRef="poc_task3" targetRef="subProcessJoin"></sequenceFlow>
      <sequenceFlow id="sp3_flow35" name="" sourceRef="poc_task4" targetRef="subProcessJoin"></sequenceFlow>                  
     
      <!– End POC Sequence –>
     
      <parallelGateway id="subProcessJoin" />
      <sequenceFlow id="flow7" sourceRef="subProcessJoin" targetRef="subProcessEnd" />
      <endEvent id="subProcessEnd" />
   
    </subProcess>

Outcomes