Show pageOld revisionsBacklinksCopy this pageBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== Don't use converging inclusive gateways without a paired exclusive gateway ====== {{tag>gateway inclusive_gateway}} The use of a converging inclusive gateway without a paired diverging one is redundant and is not recommended. ===== ✔ How to ===== <bpmnio type="bpmn"> <?xml version="1.0" encoding="UTF-8"?> <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="sid-38422fae-e03e-43a3-bef4-bd33b32041b2" targetNamespace="http://bpmn.io/bpmn" exporter="http://bpmn.io" exporterVersion="0.10.1"> <process id="Process_1wcoogl"> <exclusiveGateway id="Gateway_1oldu18"> <outgoing>Flow_0s2x71d</outgoing> <outgoing>Flow_0r8sh7a</outgoing> </exclusiveGateway> <task id="Activity_1msbof5"> <incoming>Flow_0s2x71d</incoming> <outgoing>Flow_0w3f70i</outgoing> </task> <sequenceFlow id="Flow_0s2x71d" sourceRef="Gateway_1oldu18" targetRef="Activity_1msbof5" /> <task id="Activity_1yuh0l8"> <incoming>Flow_0r8sh7a</incoming> <outgoing>Flow_1yzbpp9</outgoing> </task> <sequenceFlow id="Flow_0r8sh7a" sourceRef="Gateway_1oldu18" targetRef="Activity_1yuh0l8" /> <exclusiveGateway id="Gateway_1oih979"> <incoming>Flow_1yzbpp9</incoming> <incoming>Flow_0w3f70i</incoming> </exclusiveGateway> <sequenceFlow id="Flow_1yzbpp9" sourceRef="Activity_1yuh0l8" targetRef="Gateway_1oih979" /> <sequenceFlow id="Flow_0w3f70i" sourceRef="Activity_1msbof5" targetRef="Gateway_1oih979" /> </process> <bpmndi:BPMNDiagram id="BpmnDiagram_1"> <bpmndi:BPMNPlane id="BpmnPlane_1" bpmnElement="Process_1wcoogl"> <bpmndi:BPMNShape id="Gateway_1oldu18_di" bpmnElement="Gateway_1oldu18" isMarkerVisible="true"> <omgdc:Bounds x="285" y="135" width="50" height="50" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_1msbof5_di" bpmnElement="Activity_1msbof5"> <omgdc:Bounds x="360" y="50" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_1yuh0l8_di" bpmnElement="Activity_1yuh0l8"> <omgdc:Bounds x="360" y="190" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Gateway_1oih979_di" bpmnElement="Gateway_1oih979" isMarkerVisible="true"> <omgdc:Bounds x="485" y="135" width="50" height="50" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="Flow_0s2x71d_di" bpmnElement="Flow_0s2x71d"> <omgdi:waypoint x="310" y="135" /> <omgdi:waypoint x="310" y="90" /> <omgdi:waypoint x="360" y="90" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0r8sh7a_di" bpmnElement="Flow_0r8sh7a"> <omgdi:waypoint x="310" y="185" /> <omgdi:waypoint x="310" y="230" /> <omgdi:waypoint x="360" y="230" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1yzbpp9_di" bpmnElement="Flow_1yzbpp9"> <omgdi:waypoint x="460" y="230" /> <omgdi:waypoint x="510" y="230" /> <omgdi:waypoint x="510" y="185" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0w3f70i_di" bpmnElement="Flow_0w3f70i"> <omgdi:waypoint x="460" y="90" /> <omgdi:waypoint x="510" y="90" /> <omgdi:waypoint x="510" y="135" /> </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> </definitions> </bpmnio> ===== ✘ How NOT to ===== <bpmnio type="bpmn"> <?xml version="1.0" encoding="UTF-8"?> <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="sid-38422fae-e03e-43a3-bef4-bd33b32041b2" targetNamespace="http://bpmn.io/bpmn" exporter="http://bpmn.io" exporterVersion="0.10.1"> <process id="Process_1wcoogl"> <exclusiveGateway id="Gateway_1oldu18"> <outgoing>Flow_0s2x71d</outgoing> <outgoing>Flow_0r8sh7a</outgoing> </exclusiveGateway> <task id="Activity_1msbof5"> <incoming>Flow_0s2x71d</incoming> <outgoing>Flow_0w3f70i</outgoing> </task> <sequenceFlow id="Flow_0s2x71d" sourceRef="Gateway_1oldu18" targetRef="Activity_1msbof5" /> <task id="Activity_1yuh0l8"> <incoming>Flow_0r8sh7a</incoming> <outgoing>Flow_1yzbpp9</outgoing> </task> <sequenceFlow id="Flow_0r8sh7a" sourceRef="Gateway_1oldu18" targetRef="Activity_1yuh0l8" /> <sequenceFlow id="Flow_1yzbpp9" sourceRef="Activity_1yuh0l8" targetRef="Gateway_1oih979" /> <sequenceFlow id="Flow_0w3f70i" sourceRef="Activity_1msbof5" targetRef="Gateway_1oih979" /> <inclusiveGateway id="Gateway_1oih979"> <incoming>Flow_1yzbpp9</incoming> <incoming>Flow_0w3f70i</incoming> </inclusiveGateway> </process> <bpmndi:BPMNDiagram id="BpmnDiagram_1"> <bpmndi:BPMNPlane id="BpmnPlane_1" bpmnElement="Process_1wcoogl"> <bpmndi:BPMNShape id="Gateway_1oldu18_di" bpmnElement="Gateway_1oldu18" isMarkerVisible="true"> <omgdc:Bounds x="285" y="135" width="50" height="50" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_1msbof5_di" bpmnElement="Activity_1msbof5"> <omgdc:Bounds x="360" y="50" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_1yuh0l8_di" bpmnElement="Activity_1yuh0l8"> <omgdc:Bounds x="360" y="190" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Gateway_1bl2jrt_di" bpmnElement="Gateway_1oih979"> <omgdc:Bounds x="485" y="135" width="50" height="50" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="Flow_0s2x71d_di" bpmnElement="Flow_0s2x71d"> <omgdi:waypoint x="310" y="135" /> <omgdi:waypoint x="310" y="90" /> <omgdi:waypoint x="360" y="90" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0r8sh7a_di" bpmnElement="Flow_0r8sh7a"> <omgdi:waypoint x="310" y="185" /> <omgdi:waypoint x="310" y="230" /> <omgdi:waypoint x="360" y="230" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1yzbpp9_di" bpmnElement="Flow_1yzbpp9"> <omgdi:waypoint x="460" y="230" /> <omgdi:waypoint x="510" y="230" /> <omgdi:waypoint x="510" y="185" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0w3f70i_di" bpmnElement="Flow_0w3f70i"> <omgdi:waypoint x="460" y="90" /> <omgdi:waypoint x="510" y="90" /> <omgdi:waypoint x="510" y="135" /> </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> </definitions> </bpmnio> ===== Notes ===== According to [[https://www.omg.org/spec/BPMN/2.0.2/PDF | BPMN specification]] (p. 291), > A converging Inclusive Gateway is used to merge a combination of alternative and parallel paths. A control flow token arriving at an Inclusive Gateway MAY be synchronized with some other tokens that arrive later at this Gateway. Since the behavior of unpaired converging inclusive gateway isn't preceicely defined, it's better to avoid such usage. ===== Exceptions ===== Inclusive gateway is the only means to synchronize conditional flows: <bpmnio type="bpmn"> <?xml version="1.0" encoding="UTF-8"?> <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="sid-38422fae-e03e-43a3-bef4-bd33b32041b2" targetNamespace="http://bpmn.io/bpmn" exporter="http://bpmn.io" exporterVersion="0.10.1"> <process id="Process_1fohfju"> <task id="Activity_0dz3i2m" default="Flow_0yhgogy"> <outgoing>Flow_0yhgogy</outgoing> <outgoing>Flow_17w8cch</outgoing> <outgoing>Flow_1erz2cg</outgoing> </task> <sequenceFlow id="Flow_0yhgogy" sourceRef="Activity_0dz3i2m" targetRef="Activity_0px2wls" /> <inclusiveGateway id="Gateway_14rc2cm"> <incoming>Flow_0xdfiky</incoming> <incoming>Flow_1bwpf18</incoming> <incoming>Flow_00a1mlo</incoming> </inclusiveGateway> <task id="Activity_0px2wls"> <incoming>Flow_0yhgogy</incoming> <outgoing>Flow_0xdfiky</outgoing> </task> <sequenceFlow id="Flow_0xdfiky" sourceRef="Activity_0px2wls" targetRef="Gateway_14rc2cm" /> <task id="Activity_0poa1n1"> <incoming>Flow_17w8cch</incoming> <outgoing>Flow_00a1mlo</outgoing> </task> <sequenceFlow id="Flow_17w8cch" sourceRef="Activity_0dz3i2m" targetRef="Activity_0poa1n1"> <conditionExpression xsi:type="tFormalExpression" /> </sequenceFlow> <task id="Activity_08papqw"> <incoming>Flow_1erz2cg</incoming> <outgoing>Flow_1bwpf18</outgoing> </task> <sequenceFlow id="Flow_1erz2cg" sourceRef="Activity_0dz3i2m" targetRef="Activity_08papqw"> <conditionExpression xsi:type="tFormalExpression" /> </sequenceFlow> <sequenceFlow id="Flow_1bwpf18" sourceRef="Activity_08papqw" targetRef="Gateway_14rc2cm" /> <sequenceFlow id="Flow_00a1mlo" sourceRef="Activity_0poa1n1" targetRef="Gateway_14rc2cm" /> </process> <bpmndi:BPMNDiagram id="BpmnDiagram_1"> <bpmndi:BPMNPlane id="BpmnPlane_1" bpmnElement="Process_1fohfju"> <bpmndi:BPMNShape id="Activity_0dz3i2m_di" bpmnElement="Activity_0dz3i2m"> <omgdc:Bounds x="350" y="200" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Gateway_1biwend_di" bpmnElement="Gateway_14rc2cm"> <omgdc:Bounds x="655" y="215" width="50" height="50" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_0px2wls_di" bpmnElement="Activity_0px2wls"> <omgdc:Bounds x="510" y="200" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_0poa1n1_di" bpmnElement="Activity_0poa1n1"> <omgdc:Bounds x="510" y="70" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_08papqw_di" bpmnElement="Activity_08papqw"> <omgdc:Bounds x="510" y="320" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="Flow_0yhgogy_di" bpmnElement="Flow_0yhgogy"> <omgdi:waypoint x="450" y="240" /> <omgdi:waypoint x="510" y="240" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0xdfiky_di" bpmnElement="Flow_0xdfiky"> <omgdi:waypoint x="610" y="240" /> <omgdi:waypoint x="655" y="240" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_17w8cch_di" bpmnElement="Flow_17w8cch"> <omgdi:waypoint x="400" y="200" /> <omgdi:waypoint x="400" y="110" /> <omgdi:waypoint x="510" y="110" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1erz2cg_di" bpmnElement="Flow_1erz2cg"> <omgdi:waypoint x="400" y="280" /> <omgdi:waypoint x="400" y="360" /> <omgdi:waypoint x="510" y="360" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1bwpf18_di" bpmnElement="Flow_1bwpf18"> <omgdi:waypoint x="610" y="360" /> <omgdi:waypoint x="680" y="360" /> <omgdi:waypoint x="680" y="265" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_00a1mlo_di" bpmnElement="Flow_00a1mlo"> <omgdi:waypoint x="610" y="110" /> <omgdi:waypoint x="680" y="110" /> <omgdi:waypoint x="680" y="215" /> </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> </definitions> </bpmnio> ===== See also ===== * [[en:rule:do_not_use_conditional_flows]] ===== Author(s) ===== --- //[[user:bell|Anatoly Belaychuk]] 2024-01-25 09:24// Last modified: 2024-01-25 09:42(external edit)