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>