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 11:59] – [Put rule name here] Anatoly Belaychuken:rule:control_branch [2024-11-02 13:36] (current) – [Edit diagram] Anatoly Belaychuk
Line 1: Line 1:
-====== Put rule name here ======+====== A 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 end event.+  - End both the working and control branch with the terminate event.
  
 <bpmnio type="bpmn"> <bpmnio type="bpmn">
Line 167: Line 164:
 </bpmnio> </bpmnio>
 ===== ✘ How NOT to ===== ===== ✘ How NOT to =====
 +
 +Interrupting attached timer won't let discussing the issue with client while still trying to obtain the payment:
  
 <bpmnio type="bpmn"> <bpmnio type="bpmn">
Line 176: 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 202: 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 214: 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 226: 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 236: Line 357:
 </definitions> </definitions>
 </bpmnio> </bpmnio>
 +===== Notes =====
 +
 +  - Although it's 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 241: 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 383: 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//
 +