Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
en:rule:control_branch [2023-09-10 12:09] – [Use a subprocess with the control branch as an alternative to the attached event] Anatoly Belaychuken:rule:control_branch [2024-11-02 13:36] (current) – [Edit diagram] Anatoly Belaychuk
Line 1: Line 1:
-====== Use a subprocess with the control branch as an alternative to the attached event ======+====== subprocess and a control branch may be used as an alternative to the attached event ======
  
-{{tag>subprocess gateway "attached event"}} +{{tag>subprocess event attached_event terminate_event}}
- +
-{{en:underconstruction.png?nolink&200|}}+
  
 Use a subprocess containing the control branch to implement versatile event processing logic. Use a subprocess containing the control branch to implement versatile event processing logic.
- 
 ===== ✔ How to ===== ===== ✔ How to =====
  
-Let's assume that we need to obtain payment from the client, watch the deadline and talk with the customer in case of delay. Use the following steps:+Let's assume that we need to obtain payment from the client, watch the payment due date and talk with the customer in case of delay. Use the following technique:
  
-  - Surround the "Obtain payment" task with subprocess.+  - Put the "Obtain payment" task into subprocess.
   - Start the subprocess with the parallel gateway followed by two branches, "working" and "control".   - Start the subprocess with the parallel gateway followed by two branches, "working" and "control".
-  - Put the "Obtain payment" to the working branch. +  - Put the "Obtain payment" at the working branch. 
-  - Put the timer to the control branch. +  - Put the timer at the control branch. 
-  - End both the working and control branch with terminate events.+  - End both the working and control branch with the terminate event.
  
 <bpmnio type="bpmn"> <bpmnio type="bpmn">
Line 168: Line 165:
 ===== ✘ How NOT to ===== ===== ✘ How NOT to =====
  
-Attached timer, while a better alternative in simple scenarios, won'do the job because we shouldn't interrupt the "Obtain payment" task untill discussing the issue with the client:+Interrupting attached timer won'let discussing the issue with client while still trying to obtain the payment:
  
 <bpmnio type="bpmn"> <bpmnio type="bpmn">
Line 178: Line 175:
       <outgoing>Flow_0b5yo8b</outgoing>       <outgoing>Flow_0b5yo8b</outgoing>
     </task>     </task>
 +    <startEvent id="Event_0jid81n">
 +      <outgoing>Flow_1mqvexf</outgoing>
 +    </startEvent>
 +    <sequenceFlow id="Flow_1mqvexf" sourceRef="Event_0jid81n" targetRef="Activity_1mnvjuz" />
 +    <endEvent id="Event_1k1tn88" name="Paid">
 +      <incoming>Flow_0b5yo8b</incoming>
 +    </endEvent>
 +    <sequenceFlow id="Flow_0b5yo8b" sourceRef="Activity_1mnvjuz" targetRef="Event_1k1tn88" />
     <boundaryEvent id="Event_0r0tew3" name="Payment due date" attachedToRef="Activity_1mnvjuz">     <boundaryEvent id="Event_0r0tew3" name="Payment due date" attachedToRef="Activity_1mnvjuz">
-      <outgoing>Flow_1fkn8r9</outgoing> +      <outgoing>Flow_0xmx632</outgoing> 
-      <timerEventDefinition id="TimerEventDefinition_1akyg21" />+      <timerEventDefinition id="TimerEventDefinition_0f85qyr" />
     </boundaryEvent>     </boundaryEvent>
 +    <sequenceFlow id="Flow_0xmx632" sourceRef="Event_0r0tew3" targetRef="Event_04k06ga" />
 +    <endEvent id="Event_04k06ga" name="Not paid">
 +      <incoming>Flow_0xmx632</incoming>
 +    </endEvent>
 +  </process>
 +  <bpmndi:BPMNDiagram id="BpmnDiagram_1">
 +    <bpmndi:BPMNPlane id="BpmnPlane_1" bpmnElement="Process_0kf0077">
 +      <bpmndi:BPMNShape id="Activity_1mnvjuz_di" bpmnElement="Activity_1mnvjuz">
 +        <omgdc:Bounds x="200" y="-160" width="100" height="80" />
 +        <bpmndi:BPMNLabel />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Event_0jid81n_di" bpmnElement="Event_0jid81n">
 +        <omgdc:Bounds x="112" y="-138" width="36" height="36" />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Event_0ok4f4i_di" bpmnElement="Event_1k1tn88">
 +        <omgdc:Bounds x="352" y="-138" width="36" height="36" />
 +        <bpmndi:BPMNLabel>
 +          <omgdc:Bounds x="359" y="-95" width="23" height="14" />
 +        </bpmndi:BPMNLabel>
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Event_0u9z69r_di" bpmnElement="Event_04k06ga">
 +        <omgdc:Bounds x="232" y="-8" width="36" height="36" />
 +        <bpmndi:BPMNLabel>
 +          <omgdc:Bounds x="230" y="35" width="41" height="14" />
 +        </bpmndi:BPMNLabel>
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Event_0sh9f2p_di" bpmnElement="Event_0r0tew3">
 +        <omgdc:Bounds x="232" y="-98" width="36" height="36" />
 +        <bpmndi:BPMNLabel>
 +          <omgdc:Bounds x="205" y="-55" width="90" height="14" />
 +        </bpmndi:BPMNLabel>
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNEdge id="Flow_1mqvexf_di" bpmnElement="Flow_1mqvexf">
 +        <omgdi:waypoint x="148" y="-120" />
 +        <omgdi:waypoint x="200" y="-120" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_0b5yo8b_di" bpmnElement="Flow_0b5yo8b">
 +        <omgdi:waypoint x="300" y="-120" />
 +        <omgdi:waypoint x="352" y="-120" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_0xmx632_di" bpmnElement="Flow_0xmx632">
 +        <omgdi:waypoint x="250" y="-62" />
 +        <omgdi:waypoint x="250" y="-8" />
 +      </bpmndi:BPMNEdge>
 +    </bpmndi:BPMNPlane>
 +  </bpmndi:BPMNDiagram>
 +</definitions>
 +</bpmnio>
 +
 +Non-interrupting looks better but it won't let resetting the timer to the new due date:
 +
 +<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_0kf0077">
 +    <task id="Activity_1mnvjuz" name="Obtain payment">
 +      <incoming>Flow_1mqvexf</incoming>
 +      <outgoing>Flow_0b5yo8b</outgoing>
 +    </task>
     <startEvent id="Event_0jid81n">     <startEvent id="Event_0jid81n">
       <outgoing>Flow_1mqvexf</outgoing>       <outgoing>Flow_1mqvexf</outgoing>
     </startEvent>     </startEvent>
     <sequenceFlow id="Flow_1mqvexf" sourceRef="Event_0jid81n" targetRef="Activity_1mnvjuz" />     <sequenceFlow id="Flow_1mqvexf" sourceRef="Event_0jid81n" targetRef="Activity_1mnvjuz" />
-    <sequenceFlow id="Flow_1fkn8r9" sourceRef="Event_0r0tew3" targetRef="Event_04k06ga" /> +    <sequenceFlow id="Flow_1fkn8r9" sourceRef="Event_0r0tew3" targetRef="Activity_1skmlnn" /> 
-    <endEvent id="Event_04k06ga" name="Not paid">+    <sequenceFlow id="Flow_0b5yo8b" sourceRef="Activity_1mnvjuz" targetRef="Event_1k1tn88" /> 
 +    <boundaryEvent id="Event_0r0tew3" name="Payment due date" cancelActivity="false" attachedToRef="Activity_1mnvjuz"> 
 +      <outgoing>Flow_1fkn8r9</outgoing> 
 +      <timerEventDefinition id="TimerEventDefinition_1u44tv6" /> 
 +    </boundaryEvent> 
 +    <task id="Activity_1skmlnn" name="Clarify delay with the client">
       <incoming>Flow_1fkn8r9</incoming>       <incoming>Flow_1fkn8r9</incoming>
 +      <outgoing>Flow_0gsynar</outgoing>
 +    </task>
 +    <sequenceFlow id="Flow_0gsynar" sourceRef="Activity_1skmlnn" targetRef="Gateway_1sygjo0" />
 +    <exclusiveGateway id="Gateway_1sygjo0" name="Wait more?">
 +      <incoming>Flow_0gsynar</incoming>
 +      <outgoing>Flow_0jzxjdu</outgoing>
 +      <outgoing>Flow_16a0qq5</outgoing>
 +    </exclusiveGateway>
 +    <sequenceFlow id="Flow_0jzxjdu" name="no" sourceRef="Gateway_1sygjo0" targetRef="Event_04k06ga" />
 +    <endEvent id="Event_04k06ga" name="Not paid">
 +      <incoming>Flow_0jzxjdu</incoming>
 +      <terminateEventDefinition id="TerminateEventDefinition_1uvti5o" />
 +    </endEvent>
 +    <endEvent id="Event_1ltc3ao" name="Overdue">
 +      <incoming>Flow_16a0qq5</incoming>
     </endEvent>     </endEvent>
 +    <sequenceFlow id="Flow_16a0qq5" name="yes" sourceRef="Gateway_1sygjo0" targetRef="Event_1ltc3ao" />
     <endEvent id="Event_1k1tn88" name="Paid">     <endEvent id="Event_1k1tn88" name="Paid">
       <incoming>Flow_0b5yo8b</incoming>       <incoming>Flow_0b5yo8b</incoming>
 +      <terminateEventDefinition id="TerminateEventDefinition_1srmvcb" />
     </endEvent>     </endEvent>
-    <sequenceFlow id="Flow_0b5yo8b" sourceRef="Activity_1mnvjuz" targetRef="Event_1k1tn88" /> 
   </process>   </process>
   <bpmndi:BPMNDiagram id="BpmnDiagram_1">   <bpmndi:BPMNDiagram id="BpmnDiagram_1">
Line 204: Line 289:
         <omgdc:Bounds x="112" y="-138" width="36" height="36" />         <omgdc:Bounds x="112" y="-138" width="36" height="36" />
       </bpmndi:BPMNShape>       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Event_0a3e20c_di" bpmnElement="Event_04k06ga"> +      <bpmndi:BPMNShape id="Activity_1skmlnn_di" bpmnElement="Activity_1skmlnn"> 
-        <omgdc:Bounds x="232" y="-8" width="36" height="36" />+        <omgdc:Bounds x="200" y="-10" width="100" height="80" /> 
 +        <bpmndi:BPMNLabel /> 
 +      </bpmndi:BPMNShape> 
 +      <bpmndi:BPMNShape id="Gateway_1sygjo0_di" bpmnElement="Gateway_1sygjo0" isMarkerVisible="true"> 
 +        <omgdc:Bounds x="345" y="5" width="50" height="50" />
         <bpmndi:BPMNLabel>         <bpmndi:BPMNLabel>
-          <omgdc:Bounds x="229" y="35" width="42" height="14" />+          <omgdc:Bounds x="342" y="-19" width="55" height="14" />
         </bpmndi:BPMNLabel>         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Event_0ok4f4i_di" bpmnElement="Event_1k1tn88">+      <bpmndi:BPMNShape id="Event_08w64xf_di" bpmnElement="Event_04k06ga"> 
 +        <omgdc:Bounds x="452" y="12" width="36" height="36" /> 
 +        <bpmndi:BPMNLabel> 
 +          <omgdc:Bounds x="450" y="55" width="41" height="14" /> 
 +        </bpmndi:BPMNLabel> 
 +      </bpmndi:BPMNShape> 
 +      <bpmndi:BPMNShape id="Event_1ltc3ao_di" bpmnElement="Event_1ltc3ao"> 
 +        <omgdc:Bounds x="352" y="112" width="36" height="36" /> 
 +        <bpmndi:BPMNLabel> 
 +          <omgdc:Bounds x="349" y="155" width="43" height="14" /> 
 +        </bpmndi:BPMNLabel> 
 +      </bpmndi:BPMNShape> 
 +      <bpmndi:BPMNShape id="Event_05jo8b9_di" bpmnElement="Event_1k1tn88">
         <omgdc:Bounds x="352" y="-138" width="36" height="36" />         <omgdc:Bounds x="352" y="-138" width="36" height="36" />
         <bpmndi:BPMNLabel>         <bpmndi:BPMNLabel>
Line 216: Line 317:
         </bpmndi:BPMNLabel>         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Event_0lg3tjq_di" bpmnElement="Event_0r0tew3">+      <bpmndi:BPMNShape id="Event_0am8is2_di" bpmnElement="Event_0r0tew3">
         <omgdc:Bounds x="232" y="-98" width="36" height="36" />         <omgdc:Bounds x="232" y="-98" width="36" height="36" />
         <bpmndi:BPMNLabel>         <bpmndi:BPMNLabel>
Line 228: Line 329:
       <bpmndi:BPMNEdge id="Flow_1fkn8r9_di" bpmnElement="Flow_1fkn8r9">       <bpmndi:BPMNEdge id="Flow_1fkn8r9_di" bpmnElement="Flow_1fkn8r9">
         <omgdi:waypoint x="250" y="-62" />         <omgdi:waypoint x="250" y="-62" />
-        <omgdi:waypoint x="250" y="-8" />+        <omgdi:waypoint x="250" y="-10" />
       </bpmndi:BPMNEdge>       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_0b5yo8b_di" bpmnElement="Flow_0b5yo8b">       <bpmndi:BPMNEdge id="Flow_0b5yo8b_di" bpmnElement="Flow_0b5yo8b">
         <omgdi:waypoint x="300" y="-120" />         <omgdi:waypoint x="300" y="-120" />
         <omgdi:waypoint x="352" y="-120" />         <omgdi:waypoint x="352" y="-120" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_0gsynar_di" bpmnElement="Flow_0gsynar">
 +        <omgdi:waypoint x="300" y="30" />
 +        <omgdi:waypoint x="345" y="30" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_0jzxjdu_di" bpmnElement="Flow_0jzxjdu">
 +        <omgdi:waypoint x="395" y="30" />
 +        <omgdi:waypoint x="452" y="30" />
 +        <bpmndi:BPMNLabel>
 +          <omgdc:Bounds x="417" y="12" width="13" height="14" />
 +        </bpmndi:BPMNLabel>
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_16a0qq5_di" bpmnElement="Flow_16a0qq5">
 +        <omgdi:waypoint x="370" y="55" />
 +        <omgdi:waypoint x="370" y="112" />
 +        <bpmndi:BPMNLabel>
 +          <omgdc:Bounds x="377" y="78" width="17" height="14" />
 +        </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>     </bpmndi:BPMNPlane>
Line 238: Line 357:
 </definitions> </definitions>
 </bpmnio> </bpmnio>
 +===== Notes =====
  
-Utilising exclusive event-based gateway is a rather common mistake. What'missed in the diagram below is that the payment may arrive while we are discussing the issue with the clientIf this happensthe message won't be catched and the process will hang on the gateway.+  Although it'usually better to use [[en:rule:collapsed_subprocess|collapsed representation of a subprocess]] to isolate its internals, it may make sence to depict the subprocess expanded in this technique to make the logic clear. 
 +  - As an exception to the [[en:rule:explicit_parallel_split|general rule]]one may initiate work and control flows directly from the start event:
  
 <bpmnio type="bpmn"> <bpmnio type="bpmn">
Line 245: Line 366:
 <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"> <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_0kf0077">   <process id="Process_0kf0077">
-    <intermediateCatchEvent id="Event_0r0tew3name="Payment due date"> +    <subProcess id="Activity_1tn5n73"
-      <incoming>Flow_0opoyid</incoming+      <startEvent id="Event_13ec10q"> 
-      <outgoing>Flow_1tv5ius</outgoing> +        <outgoing>Flow_1qbujp7</outgoing
-      <timerEventDefinition id="TimerEventDefinition_1a77cp0" /> +        <outgoing>Flow_1v8e8eg</outgoing> 
-    </intermediateCatchEvent+      </startEvent> 
-    <intermediateCatchEvent id="Event_09tpike" name="Payment obtained"> +      <task id="Activity_1mnvjuzname="Obtain payment"> 
-      <incoming>Flow_11x2rmj</incoming> +        <incoming>Flow_1qbujp7</incoming
-      <outgoing>Flow_1j4cmln</outgoing> +        <outgoing>Flow_0xinlw8</outgoing
-      <messageEventDefinition id="MessageEventDefinition_0j2tmjq" /> +      </task> 
-    </intermediateCatchEvent> +      <intermediateCatchEvent id="Event_0r0tew3" name="Payment due date"> 
-    <eventBasedGateway id="Gateway_0qwge4c"> +        <incoming>Flow_0tjh6sh</incoming> 
-      <incoming>Flow_1elj1ik</incoming> +        <outgoing>Flow_0vj1spf</outgoing> 
-      <outgoing>Flow_11x2rmj</outgoing+        <timerEventDefinition id="TimerEventDefinition_1a77cp0" /> 
-      <outgoing>Flow_0opoyid</outgoing> +      </intermediateCatchEvent> 
-    </eventBasedGateway+      <exclusiveGateway id="Gateway_1jxup79"> 
-    <sequenceFlow id="Flow_11x2rmj" sourceRef="Gateway_0qwge4c" targetRef="Event_09tpike" /> +        <incoming>Flow_1fpmuu7</incoming> 
-    <sequenceFlow id="Flow_0opoyid" sourceRef="Gateway_0qwge4c" targetRef="Event_0r0tew3" /> +        <incoming>Flow_1v8e8eg</incoming
-    <startEvent id="Event_01ljcuy"> +        <outgoing>Flow_0tjh6sh</outgoing> 
-      <outgoing>Flow_104xfj6</outgoing+      </exclusiveGateway
-    </startEvent> +      <sequenceFlow id="Flow_0tjh6sh" sourceRef="Gateway_1jxup79" targetRef="Event_0r0tew3" /> 
-    <sequenceFlow id="Flow_1j4cmln" sourceRef="Event_09tpike" targetRef="Event_1k1tn88" /> +      <sequenceFlow id="Flow_0xinlw8" sourceRef="Activity_1mnvjuz" targetRef="Event_1k1tn88" /> 
-    <task id="Activity_12mr8cn" name="Clarify delay with the client"> +      <endEvent id="Event_1k1tn88" name="Paid"> 
-      <incoming>Flow_1tv5ius</incoming> +        <incoming>Flow_0xinlw8</incoming
-      <outgoing>Flow_06rckk1</outgoing> +        <terminateEventDefinition id="TerminateEventDefinition_0ku242o" /> 
-    </task> +      </endEvent> 
-    <sequenceFlow id="Flow_1tv5ius" sourceRef="Event_0r0tew3" targetRef="Activity_12mr8cn" /> +      <task id="Activity_12mr8cn" name="Clarify delay with the client"> 
-    <exclusiveGateway id="Gateway_0gfb7mo" name="Wait more?"> +        <incoming>Flow_0vj1spf</incoming> 
-      <incoming>Flow_06rckk1</incoming> +        <outgoing>Flow_0v7giyt</outgoing> 
-      <outgoing>Flow_0eyb0h5</outgoing> +      </task> 
-      <outgoing>Flow_083x67t</outgoing> +      <sequenceFlow id="Flow_0vj1spf" sourceRef="Event_0r0tew3" targetRef="Activity_12mr8cn" /> 
-    </exclusiveGateway> +      <exclusiveGateway id="Gateway_0gfb7mo" name="Wait more?"> 
-    <sequenceFlow id="Flow_06rckk1" sourceRef="Activity_12mr8cn" targetRef="Gateway_0gfb7mo" /> +        <incoming>Flow_0v7giyt</incoming> 
-    <sequenceFlow id="Flow_0eyb0h5" name="no" sourceRef="Gateway_0gfb7mo" targetRef="Event_04k06ga" /> +        <outgoing>Flow_0xssdyb</outgoing> 
-    <endEvent id="Event_1k1tn88" name="Paid"> +        <outgoing>Flow_1fpmuu7</outgoing> 
-      <incoming>Flow_1j4cmln</incoming> +      </exclusiveGateway> 
-    </endEvent> +      <sequenceFlow id="Flow_0v7giyt" sourceRef="Activity_12mr8cn" targetRef="Gateway_0gfb7mo" /> 
-    <endEvent id="Event_04k06ga" name="Not paid"> +      <sequenceFlow id="Flow_0xssdyb" name="no" sourceRef="Gateway_0gfb7mo" targetRef="Event_04k06ga" /> 
-      <incoming>Flow_0eyb0h5</incoming> +      <sequenceFlow id="Flow_1fpmuu7" name="yessourceRef="Gateway_0gfb7mo" targetRef="Gateway_1jxup79" /
-    </endEvent> +      <endEvent id="Event_04k06ga" name="Not paid"> 
-    <exclusiveGateway id="Gateway_057c6r5"+        <incoming>Flow_0xssdyb</incoming> 
-      <incoming>Flow_104xfj6</incoming+        <terminateEventDefinition id="TerminateEventDefinition_0jd5cs4" /> 
-      <incoming>Flow_083x67t</incoming+      </endEvent
-      <outgoing>Flow_1elj1ik</outgoing> +      <sequenceFlow id="Flow_1qbujp7" sourceRef="Event_13ec10q" targetRef="Activity_1mnvjuz" /> 
-    </exclusiveGateway> +      <sequenceFlow id="Flow_1v8e8eg" sourceRef="Event_13ec10q" targetRef="Gateway_1jxup79" /> 
-    <sequenceFlow id="Flow_104xfj6" sourceRef="Event_01ljcuy" targetRef="Gateway_057c6r5" /> +    </subProcess>
-    <sequenceFlow id="Flow_1elj1ik" sourceRef="Gateway_057c6r5" targetRef="Gateway_0qwge4c" /> +
-    <sequenceFlow id="Flow_083x67t" name="yes" sourceRef="Gateway_0gfb7mo" targetRef="Gateway_057c6r5" />+
   </process>   </process>
   <bpmndi:BPMNDiagram id="BpmnDiagram_1">   <bpmndi:BPMNDiagram id="BpmnDiagram_1">
     <bpmndi:BPMNPlane id="BpmnPlane_1" bpmnElement="Process_0kf0077">     <bpmndi:BPMNPlane id="BpmnPlane_1" bpmnElement="Process_0kf0077">
-      <bpmndi:BPMNShape id="Gateway_182m8yn_di" bpmnElement="Gateway_0qwge4c"> +      <bpmndi:BPMNShape id="Activity_1tn5n73_di" bpmnElement="Activity_1tn5n73" isExpanded="true"> 
-        <omgdc:Bounds x="395" y="-145" width="50" height="50" />+        <omgdc:Bounds x="350" y="-620" width="580" height="330" />
       </bpmndi:BPMNShape>       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Event_0lccgc3_di" bpmnElement="Event_09tpike"> +      <bpmndi:BPMNShape id="Activity_1mnvjuz_di" bpmnElement="Activity_1mnvjuz"> 
-        <omgdc:Bounds x="512" y="-138" width="36" height="36" />+        <omgdc:Bounds x="490" y="-410" width="100" height="80" /> 
 +        <bpmndi:BPMNLabel /> 
 +      </bpmndi:BPMNShape> 
 +      <bpmndi:BPMNShape id="Event_1f2yzhy_di" bpmnElement="Event_0r0tew3"> 
 +        <omgdc:Bounds x="522" y="-498" width="36" height="36" />
         <bpmndi:BPMNLabel>         <bpmndi:BPMNLabel>
-          <omgdc:Bounds x="486" y="-95" width="89" height="14" />+          <omgdc:Bounds x="495" y="-455" width="90" height="14" />
         </bpmndi:BPMNLabel>         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Event_1f2yzhy_di" bpmnElement="Event_0r0tew3"> +      <bpmndi:BPMNShape id="Event_0s7eoii_di" bpmnElement="Event_1k1tn88"> 
-        <omgdc:Bounds x="512" y="-258" width="36" height="36" />+        <omgdc:Bounds x="652" y="-388" width="36" height="36" />
         <bpmndi:BPMNLabel>         <bpmndi:BPMNLabel>
-          <omgdc:Bounds x="485" y="-215" width="90" height="14" />+          <omgdc:Bounds x="659" y="-345" width="23" height="14" />
         </bpmndi:BPMNLabel>         </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape> 
-      <bpmndi:BPMNShape id="Event_01ljcuy_di" bpmnElement="Event_01ljcuy"> 
-        <omgdc:Bounds x="212" y="-138" width="36" height="36" /> 
       </bpmndi:BPMNShape>       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_12mr8cn_di" bpmnElement="Activity_12mr8cn">       <bpmndi:BPMNShape id="Activity_12mr8cn_di" bpmnElement="Activity_12mr8cn">
-        <omgdc:Bounds x="600" y="-280" width="100" height="80" />+        <omgdc:Bounds x="620" y="-520" width="100" height="80" />
         <bpmndi:BPMNLabel />         <bpmndi:BPMNLabel />
       </bpmndi:BPMNShape>       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Gateway_0gfb7mo_di" bpmnElement="Gateway_0gfb7mo" isMarkerVisible="true">       <bpmndi:BPMNShape id="Gateway_0gfb7mo_di" bpmnElement="Gateway_0gfb7mo" isMarkerVisible="true">
-        <omgdc:Bounds x="755" y="-265" width="50" height="50" />+        <omgdc:Bounds x="765" y="-505" width="50" height="50" />
         <bpmndi:BPMNLabel>         <bpmndi:BPMNLabel>
-          <omgdc:Bounds x="752" y="-205" width="56" height="14" />+          <omgdc:Bounds x="762" y="-448" width="56" height="14" />
         </bpmndi:BPMNLabel>         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Event_081tn46_di" bpmnElement="Event_1k1tn88"> +      <bpmndi:BPMNShape id="Event_1kp0poi_di" bpmnElement="Event_04k06ga"> 
-        <omgdc:Bounds x="632" y="-138" width="36" height="36" />+        <omgdc:Bounds x="852" y="-498" width="36" height="36" />
         <bpmndi:BPMNLabel>         <bpmndi:BPMNLabel>
-          <omgdc:Bounds x="639" y="-95" width="23" height="14" />+          <omgdc:Bounds x="849" y="-455" width="42" height="14" />
         </bpmndi:BPMNLabel>         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Gateway_057c6r5_di" bpmnElement="Gateway_057c6r5" isMarkerVisible="true"> +      <bpmndi:BPMNShape id="Event_13ec10q_di" bpmnElement="Event_13ec10q"> 
-        <omgdc:Bounds x="295" y="-145" width="50" height="50" />+        <omgdc:Bounds x="402" y="-388" width="36" height="36" />
       </bpmndi:BPMNShape>       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Event_1odkgr3_di" bpmnElement="Event_04k06ga"+      <bpmndi:BPMNShape id="Gateway_1jxup79_di" bpmnElement="Gateway_1jxup79isMarkerVisible="true"> 
-        <omgdc:Bounds x="852y="-258" width="36" height="36" /+        <omgdc:Bounds x="395" y="-505" width="50" height="50" />
-        <bpmndi:BPMNLabel> +
-          <omgdc:Bounds x="849" y="-215" width="42" height="14" /+
-        </bpmndi:BPMNLabel>+
       </bpmndi:BPMNShape>       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="Flow_11x2rmj_di" bpmnElement="Flow_11x2rmj"> +      <bpmndi:BPMNEdge id="Flow_0tjh6sh_di" bpmnElement="Flow_0tjh6sh"> 
-        <omgdi:waypoint x="445" y="-120" /> +        <omgdi:waypoint x="445" y="-480" /> 
-        <omgdi:waypoint x="512" y="-120" />+        <omgdi:waypoint x="522" y="-480" />
       </bpmndi:BPMNEdge>       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="Flow_0opoyid_di" bpmnElement="Flow_0opoyid"> +      <bpmndi:BPMNEdge id="Flow_0xinlw8_di" bpmnElement="Flow_0xinlw8"> 
-        <omgdi:waypoint x="420" y="-145" /> +        <omgdi:waypoint x="590" y="-370" /> 
-        <omgdi:waypoint x="420" y="-240" /> +        <omgdi:waypoint x="652" y="-370" />
-        <omgdi:waypoint x="512" y="-240" />+
       </bpmndi:BPMNEdge>       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="Flow_1j4cmln_di" bpmnElement="Flow_1j4cmln"> +      <bpmndi:BPMNEdge id="Flow_0vj1spf_di" bpmnElement="Flow_0vj1spf"> 
-        <omgdi:waypoint x="548" y="-120" /> +        <omgdi:waypoint x="558" y="-480" /> 
-        <omgdi:waypoint x="632" y="-120" />+        <omgdi:waypoint x="620" y="-480" />
       </bpmndi:BPMNEdge>       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="Flow_1tv5ius_di" bpmnElement="Flow_1tv5ius"> +      <bpmndi:BPMNEdge id="Flow_0v7giyt_di" bpmnElement="Flow_0v7giyt"> 
-        <omgdi:waypoint x="548" y="-240" /> +        <omgdi:waypoint x="720" y="-480" /> 
-        <omgdi:waypoint x="600" y="-240" />+        <omgdi:waypoint x="765" y="-480" />
       </bpmndi:BPMNEdge>       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="Flow_06rckk1_di" bpmnElement="Flow_06rckk1"> +      <bpmndi:BPMNEdge id="Flow_0xssdyb_di" bpmnElement="Flow_0xssdyb"> 
-        <omgdi:waypoint x="700" y="-240" /> +        <omgdi:waypoint x="815" y="-480" /> 
-        <omgdi:waypoint x="755" y="-240" /> +        <omgdi:waypoint x="852" y="-480" />
-      </bpmndi:BPMNEdge> +
-      <bpmndi:BPMNEdge id="Flow_0eyb0h5_di" bpmnElement="Flow_0eyb0h5"> +
-        <omgdi:waypoint x="805" y="-240" /> +
-        <omgdi:waypoint x="852" y="-240" />+
         <bpmndi:BPMNLabel>         <bpmndi:BPMNLabel>
-          <omgdc:Bounds x="822" y="-258" width="13" height="14" />+          <omgdc:Bounds x="827" y="-498" width="13" height="14" />
         </bpmndi:BPMNLabel>         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="Flow_104xfj6_di" bpmnElement="Flow_104xfj6"> +      <bpmndi:BPMNEdge id="Flow_1fpmuu7_di" bpmnElement="Flow_1fpmuu7"> 
-        <omgdi:waypoint x="248" y="-120" /> +        <omgdi:waypoint x="790" y="-505" /> 
-        <omgdi:waypoint x="295" y="-120" /> +        <omgdi:waypoint x="790" y="-570" /> 
-      </bpmndi:BPMNEdge> +        <omgdi:waypoint x="420" y="-570" /> 
-      <bpmndi:BPMNEdge id="Flow_1elj1ik_di" bpmnElement="Flow_1elj1ik"> +        <omgdi:waypoint x="420" y="-505" />
-        <omgdi:waypoint x="345" y="-120" /> +
-        <omgdi:waypoint x="395" y="-120" /> +
-      </bpmndi:BPMNEdge> +
-      <bpmndi:BPMNEdge id="Flow_083x67t_di" bpmnElement="Flow_083x67t"> +
-        <omgdi:waypoint x="780" y="-265" /> +
-        <omgdi:waypoint x="780" y="-330" /> +
-        <omgdi:waypoint x="320" y="-330" /> +
-        <omgdi:waypoint x="320" y="-145" />+
         <bpmndi:BPMNLabel>         <bpmndi:BPMNLabel>
-          <omgdc:Bounds x="542" y="-348" width="17" height="14" />+          <omgdc:Bounds x="597" y="-588" width="17" height="14" />
         </bpmndi:BPMNLabel>         </bpmndi:BPMNLabel>
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_1qbujp7_di" bpmnElement="Flow_1qbujp7">
 +        <omgdi:waypoint x="438" y="-370" />
 +        <omgdi:waypoint x="490" y="-370" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_1v8e8eg_di" bpmnElement="Flow_1v8e8eg">
 +        <omgdi:waypoint x="420" y="-388" />
 +        <omgdi:waypoint x="420" y="-455" />
       </bpmndi:BPMNEdge>       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>     </bpmndi:BPMNPlane>
Line 387: Line 499:
 </definitions> </definitions>
 </bpmnio> </bpmnio>
- 
-===== Notes ===== 
- 
-It may make sence to depict the subprocess expanded to make the logic clear. 
- 
-===== Exceptions ===== 
- 
-Attached events are simpler and should be preferred in more straightforward scenarios. 
- 
 ===== See also ===== ===== See also =====
  
   * [[en:rule:event_gateway_warning]]   * [[en:rule:event_gateway_warning]]
  
-===== Автор(ы) =====+===== Autor(s) =====
  
  --- //[[user:bell|Anatoly Belaychuk]] 2023-09-10 11:21//  --- //[[user:bell|Anatoly Belaychuk]] 2023-09-10 11:21//
 +