| Both sides previous revision Previous revision Next revision | Previous revision |
| en:rule:do_not_use_converging_inclusive_gateway [2024-01-25 09:41] – removed - external edit (Unknown date) 127.0.0.1 | en:rule:do_not_use_converging_inclusive_gateway [2024-01-25 09:42] (current) – Anatoly Belaychuk |
|---|
| | ====== 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// |