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 13:02] – [Notes] 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 event "attached event"}}+{{tag>subprocess event attached_event terminate_event}}
  
 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 166: 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 176: Line 175:
       <outgoing>Flow_0b5yo8b</outgoing>       <outgoing>Flow_0b5yo8b</outgoing>
     </task>     </task>
-    <boundaryEvent id="Event_0r0tew3" name="Payment due date" attachedToRef="Activity_1mnvjuz"> 
-      <outgoing>Flow_1fkn8r9</outgoing> 
-      <timerEventDefinition id="TimerEventDefinition_1akyg21" /> 
-    </boundaryEvent> 
     <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" /> 
-    <endEvent id="Event_04k06ga" name="Not paid"> 
-      <incoming>Flow_1fkn8r9</incoming> 
-    </endEvent> 
     <endEvent id="Event_1k1tn88" name="Paid">     <endEvent id="Event_1k1tn88" name="Paid">
       <incoming>Flow_0b5yo8b</incoming>       <incoming>Flow_0b5yo8b</incoming>
     </endEvent>     </endEvent>
     <sequenceFlow id="Flow_0b5yo8b" sourceRef="Activity_1mnvjuz" targetRef="Event_1k1tn88" />     <sequenceFlow id="Flow_0b5yo8b" sourceRef="Activity_1mnvjuz" targetRef="Event_1k1tn88" />
 +    <boundaryEvent id="Event_0r0tew3" name="Payment due date" attachedToRef="Activity_1mnvjuz">
 +      <outgoing>Flow_0xmx632</outgoing>
 +      <timerEventDefinition id="TimerEventDefinition_0f85qyr" />
 +    </boundaryEvent>
 +    <sequenceFlow id="Flow_0xmx632" sourceRef="Event_0r0tew3" targetRef="Event_04k06ga" />
 +    <endEvent id="Event_04k06ga" name="Not paid">
 +      <incoming>Flow_0xmx632</incoming>
 +    </endEvent>
   </process>   </process>
   <bpmndi:BPMNDiagram id="BpmnDiagram_1">   <bpmndi:BPMNDiagram id="BpmnDiagram_1">
Line 201: Line 200:
       <bpmndi:BPMNShape id="Event_0jid81n_di" bpmnElement="Event_0jid81n">       <bpmndi:BPMNShape id="Event_0jid81n_di" bpmnElement="Event_0jid81n">
         <omgdc:Bounds x="112" y="-138" width="36" height="36" />         <omgdc:Bounds x="112" y="-138" width="36" height="36" />
-      </bpmndi:BPMNShape> 
-      <bpmndi:BPMNShape id="Event_0a3e20c_di" bpmnElement="Event_04k06ga"> 
-        <omgdc:Bounds x="232" y="-8" width="36" height="36" /> 
-        <bpmndi:BPMNLabel> 
-          <omgdc:Bounds x="229" y="35" width="42" height="14" /> 
-        </bpmndi:BPMNLabel> 
       </bpmndi:BPMNShape>       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Event_0ok4f4i_di" bpmnElement="Event_1k1tn88">       <bpmndi:BPMNShape id="Event_0ok4f4i_di" bpmnElement="Event_1k1tn88">
Line 214: Line 207:
         </bpmndi:BPMNLabel>         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Event_0lg3tjq_di" bpmnElement="Event_0r0tew3">+      <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" />         <omgdc:Bounds x="232" y="-98" width="36" height="36" />
         <bpmndi:BPMNLabel>         <bpmndi:BPMNLabel>
Line 223: Line 222:
         <omgdi:waypoint x="148" y="-120" />         <omgdi:waypoint x="148" y="-120" />
         <omgdi:waypoint x="200" y="-120" />         <omgdi:waypoint x="200" y="-120" />
-      </bpmndi:BPMNEdge> 
-      <bpmndi:BPMNEdge id="Flow_1fkn8r9_di" bpmnElement="Flow_1fkn8r9"> 
-        <omgdi:waypoint x="250" y="-62" /> 
-        <omgdi:waypoint x="250" y="-8" /> 
       </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_0xmx632_di" bpmnElement="Flow_0xmx632">
 +        <omgdi:waypoint x="250" y="-62" />
 +        <omgdi:waypoint x="250" y="-8" />
       </bpmndi:BPMNEdge>       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>     </bpmndi:BPMNPlane>
Line 237: Line 236:
 </bpmnio> </bpmnio>
  
-Utilizing exclusive event-based gateway in cases like this is a rather common mistake. What's missed in the diagram below is that the payment may arrive while we are discussing the issue with the client. If this happens, the message won'be catched and the process will hang after returning to the event gateway.+Non-interrupting looks better but it won'let resetting the timer to the new due date:
  
 <bpmnio type="bpmn"> <bpmnio type="bpmn">
Line 243: Line 242:
 <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_0r0tew3" name="Payment due date"> +    <task id="Activity_1mnvjuz" name="Obtain payment"> 
-      <incoming>Flow_0opoyid</incoming> +      <incoming>Flow_1mqvexf</incoming> 
-      <outgoing>Flow_1tv5ius</outgoing+      <outgoing>Flow_0b5yo8b</outgoing> 
-      <timerEventDefinition id="TimerEventDefinition_1a77cp0" /+    </task
-    </intermediateCatchEvent> +    <startEvent id="Event_0jid81n"> 
-    <intermediateCatchEvent id="Event_09tpike" name="Payment obtained"> +      <outgoing>Flow_1mqvexf</outgoing>
-      <incoming>Flow_11x2rmj</incoming> +
-      <outgoing>Flow_1j4cmln</outgoing> +
-      <messageEventDefinition id="MessageEventDefinition_0j2tmjq" /> +
-    </intermediateCatchEvent> +
-    <eventBasedGateway id="Gateway_0qwge4c"> +
-      <incoming>Flow_1elj1ik</incoming> +
-      <outgoing>Flow_11x2rmj</outgoing> +
-      <outgoing>Flow_0opoyid</outgoing> +
-    </eventBasedGateway> +
-    <sequenceFlow id="Flow_11x2rmj" sourceRef="Gateway_0qwge4c" targetRef="Event_09tpike" /> +
-    <sequenceFlow id="Flow_0opoyid" sourceRef="Gateway_0qwge4c" targetRef="Event_0r0tew3" /+
-    <startEvent id="Event_01ljcuy"> +
-      <outgoing>Flow_104xfj6</outgoing>+
     </startEvent>     </startEvent>
-    <sequenceFlow id="Flow_1j4cmln" sourceRef="Event_09tpike" targetRef="Event_1k1tn88" /> +    <sequenceFlow id="Flow_1mqvexf" sourceRef="Event_0jid81n" targetRef="Activity_1mnvjuz" /> 
-    <task id="Activity_12mr8cn" name="Clarify delay with the client"> +    <sequenceFlow id="Flow_1fkn8r9" sourceRef="Event_0r0tew3" targetRef="Activity_1skmlnn" /> 
-      <incoming>Flow_1tv5ius</incoming> +    <sequenceFlow id="Flow_0b5yo8b" sourceRef="Activity_1mnvjuz" targetRef="Event_1k1tn88" /
-      <outgoing>Flow_06rckk1</outgoing>+    <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> 
 +      <outgoing>Flow_0gsynar</outgoing>
     </task>     </task>
-    <sequenceFlow id="Flow_1tv5ius" sourceRef="Event_0r0tew3" targetRef="Activity_12mr8cn" /> +    <sequenceFlow id="Flow_0gsynar" sourceRef="Activity_1skmlnn" targetRef="Gateway_1sygjo0" /> 
-    <exclusiveGateway id="Gateway_0gfb7mo" name="Wait more?"> +    <exclusiveGateway id="Gateway_1sygjo0" name="Wait more?"> 
-      <incoming>Flow_06rckk1</incoming> +      <incoming>Flow_0gsynar</incoming> 
-      <outgoing>Flow_0eyb0h5</outgoing> +      <outgoing>Flow_0jzxjdu</outgoing> 
-      <outgoing>Flow_083x67t</outgoing>+      <outgoing>Flow_16a0qq5</outgoing>
     </exclusiveGateway>     </exclusiveGateway>
-    <sequenceFlow id="Flow_06rckk1" sourceRef="Activity_12mr8cn" targetRef="Gateway_0gfb7mo" /> +    <sequenceFlow id="Flow_0jzxjdu" name="no" sourceRef="Gateway_1sygjo0" targetRef="Event_04k06ga" />
-    <sequenceFlow id="Flow_0eyb0h5" name="no" sourceRef="Gateway_0gfb7mo" targetRef="Event_04k06ga" /+
-    <endEvent id="Event_1k1tn88" name="Paid"> +
-      <incoming>Flow_1j4cmln</incoming> +
-    </endEvent>+
     <endEvent id="Event_04k06ga" name="Not paid">     <endEvent id="Event_04k06ga" name="Not paid">
-      <incoming>Flow_0eyb0h5</incoming>+      <incoming>Flow_0jzxjdu</incoming
 +      <terminateEventDefinition id="TerminateEventDefinition_1uvti5o" /> 
 +    </endEvent> 
 +    <endEvent id="Event_1ltc3ao" name="Overdue"> 
 +      <incoming>Flow_16a0qq5</incoming> 
 +    </endEvent> 
 +    <sequenceFlow id="Flow_16a0qq5" name="yes" sourceRef="Gateway_1sygjo0" targetRef="Event_1ltc3ao" /> 
 +    <endEvent id="Event_1k1tn88" name="Paid"> 
 +      <incoming>Flow_0b5yo8b</incoming> 
 +      <terminateEventDefinition id="TerminateEventDefinition_1srmvcb" />
     </endEvent>     </endEvent>
-    <exclusiveGateway id="Gateway_057c6r5"> 
-      <incoming>Flow_104xfj6</incoming> 
-      <incoming>Flow_083x67t</incoming> 
-      <outgoing>Flow_1elj1ik</outgoing> 
-    </exclusiveGateway> 
-    <sequenceFlow id="Flow_104xfj6" sourceRef="Event_01ljcuy" targetRef="Gateway_057c6r5" /> 
-    <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_1mnvjuz_di" bpmnElement="Activity_1mnvjuz"> 
-        <omgdc:Bounds x="395" y="-145" width="50" height="50" />+        <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="Activity_1skmlnn_di" bpmnElement="Activity_1skmlnn"> 
 +        <omgdc:Bounds x="200" y="-10" width="100" height="80" /> 
 +        <bpmndi:BPMNLabel />
       </bpmndi:BPMNShape>       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Event_0lccgc3_di" bpmnElement="Event_09tpike"> +      <bpmndi:BPMNShape id="Gateway_1sygjo0_di" bpmnElement="Gateway_1sygjo0" isMarkerVisible="true"> 
-        <omgdc:Bounds x="512" y="-138" width="36" height="36" />+        <omgdc:Bounds x="345" y="5" width="50" height="50" />
         <bpmndi:BPMNLabel>         <bpmndi:BPMNLabel>
-          <omgdc:Bounds x="486" y="-95" width="89" height="14" />+          <omgdc:Bounds x="342" y="-19" width="55" height="14" />
         </bpmndi:BPMNLabel>         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Event_1f2yzhy_di" bpmnElement="Event_0r0tew3"> +      <bpmndi:BPMNShape id="Event_08w64xf_di" bpmnElement="Event_04k06ga"> 
-        <omgdc:Bounds x="512" y="-258" width="36" height="36" />+        <omgdc:Bounds x="452" y="12" width="36" height="36" />
         <bpmndi:BPMNLabel>         <bpmndi:BPMNLabel>
-          <omgdc:Bounds x="485" y="-215" width="90" height="14" />+          <omgdc:Bounds x="450" y="55" width="41" height="14" />
         </bpmndi:BPMNLabel>         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Event_01ljcuy_di" bpmnElement="Event_01ljcuy"> +      <bpmndi:BPMNShape id="Event_1ltc3ao_di" bpmnElement="Event_1ltc3ao"> 
-        <omgdc:Bounds x="212" y="-138" width="36" height="36" /> +        <omgdc:Bounds x="352" y="112" width="36" height="36" />
-      </bpmndi:BPMNShape> +
-      <bpmndi:BPMNShape id="Activity_12mr8cn_di" bpmnElement="Activity_12mr8cn"> +
-        <omgdc:Bounds x="600" y="-280" width="100" height="80" /> +
-        <bpmndi:BPMNLabel /> +
-      </bpmndi:BPMNShape> +
-      <bpmndi:BPMNShape id="Gateway_0gfb7mo_di" bpmnElement="Gateway_0gfb7mo" isMarkerVisible="true"> +
-        <omgdc:Bounds x="755" y="-265" width="50" height="50" />+
         <bpmndi:BPMNLabel>         <bpmndi:BPMNLabel>
-          <omgdc:Bounds x="752" y="-205" width="56" height="14" />+          <omgdc:Bounds x="349" y="155" width="43" height="14" />
         </bpmndi:BPMNLabel>         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Event_081tn46_di" bpmnElement="Event_1k1tn88"> +      <bpmndi:BPMNShape id="Event_05jo8b9_di" bpmnElement="Event_1k1tn88"> 
-        <omgdc:Bounds x="632" y="-138" width="36" height="36" />+        <omgdc:Bounds x="352" y="-138" width="36" height="36" />
         <bpmndi:BPMNLabel>         <bpmndi:BPMNLabel>
-          <omgdc:Bounds x="639" y="-95" width="23" height="14" />+          <omgdc:Bounds x="359" y="-95" width="23" 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_0am8is2_di" bpmnElement="Event_0r0tew3"> 
-        <omgdc:Bounds x="295" y="-145" width="50" height="50" /> +        <omgdc:Bounds x="232" y="-98" width="36" height="36" />
-      </bpmndi:BPMNShape> +
-      <bpmndi:BPMNShape id="Event_1odkgr3_di" bpmnElement="Event_04k06ga"> +
-        <omgdc:Bounds x="852" y="-258" width="36" height="36" />+
         <bpmndi:BPMNLabel>         <bpmndi:BPMNLabel>
-          <omgdc:Bounds x="849" y="-215" width="42" height="14" />+          <omgdc:Bounds x="205" y="-55" width="90" height="14" />
         </bpmndi:BPMNLabel>         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="Flow_11x2rmj_di" bpmnElement="Flow_11x2rmj"> +      <bpmndi:BPMNEdge id="Flow_1mqvexf_di" bpmnElement="Flow_1mqvexf"> 
-        <omgdi:waypoint x="445" y="-120" /> +        <omgdi:waypoint x="148" y="-120" /> 
-        <omgdi:waypoint x="512" y="-120" />+        <omgdi:waypoint x="200" y="-120" />
       </bpmndi:BPMNEdge>       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="Flow_0opoyid_di" bpmnElement="Flow_0opoyid"> +      <bpmndi:BPMNEdge id="Flow_1fkn8r9_di" bpmnElement="Flow_1fkn8r9"> 
-        <omgdi:waypoint x="420" y="-145" /> +        <omgdi:waypoint x="250" y="-62" /> 
-        <omgdi:waypoint x="420" y="-240" /> +        <omgdi:waypoint x="250" y="-10" />
-        <omgdi:waypoint x="512" y="-240" />+
       </bpmndi:BPMNEdge>       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="Flow_1j4cmln_di" bpmnElement="Flow_1j4cmln"> +      <bpmndi:BPMNEdge id="Flow_0b5yo8b_di" bpmnElement="Flow_0b5yo8b"> 
-        <omgdi:waypoint x="548" y="-120" /> +        <omgdi:waypoint x="300" y="-120" /> 
-        <omgdi:waypoint x="632" y="-120" /> +        <omgdi:waypoint x="352" y="-120" />
-      </bpmndi:BPMNEdge> +
-      <bpmndi:BPMNEdge id="Flow_1tv5ius_di" bpmnElement="Flow_1tv5ius"> +
-        <omgdi:waypoint x="548" y="-240" /> +
-        <omgdi:waypoint x="600" y="-240" />+
       </bpmndi:BPMNEdge>       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="Flow_06rckk1_di" bpmnElement="Flow_06rckk1"> +      <bpmndi:BPMNEdge id="Flow_0gsynar_di" bpmnElement="Flow_0gsynar"> 
-        <omgdi:waypoint x="700" y="-240" /> +        <omgdi:waypoint x="300" y="30" /> 
-        <omgdi:waypoint x="755" y="-240" />+        <omgdi:waypoint x="345" y="30" />
       </bpmndi:BPMNEdge>       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="Flow_0eyb0h5_di" bpmnElement="Flow_0eyb0h5"> +      <bpmndi:BPMNEdge id="Flow_0jzxjdu_di" bpmnElement="Flow_0jzxjdu"> 
-        <omgdi:waypoint x="805" y="-240" /> +        <omgdi:waypoint x="395" y="30" /> 
-        <omgdi:waypoint x="852" y="-240" />+        <omgdi:waypoint x="452" y="30" />
         <bpmndi:BPMNLabel>         <bpmndi:BPMNLabel>
-          <omgdc:Bounds x="822" y="-258" width="13" height="14" />+          <omgdc:Bounds x="417" y="12" 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_16a0qq5_di" bpmnElement="Flow_16a0qq5"> 
-        <omgdi:waypoint x="248" y="-120" /> +        <omgdi:waypoint x="370" y="55" /> 
-        <omgdi:waypoint x="295" y="-120" /> +        <omgdi:waypoint x="370" y="112" />
-      </bpmndi:BPMNEdge> +
-      <bpmndi:BPMNEdge id="Flow_1elj1ik_di" bpmnElement="Flow_1elj1ik"> +
-        <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="377" y="78" width="17" height="14" />
         </bpmndi:BPMNLabel>         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>       </bpmndi:BPMNEdge>
Line 385: Line 357:
 </definitions> </definitions>
 </bpmnio> </bpmnio>
- 
 ===== Notes ===== ===== Notes =====
  
-  - Although it's usually better to [[en:rule:collapsed_subprocess]] to isolate their internals, it may make sence to depict the subprocess expanded in this technique to make the logic clear. +  - 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. 
-  - Although [[en:rule:one_outgoing_control_flow]] more than one flow outgoing from an element other that a gateway, it's acceptable in this technique:+  - 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 528: Line 499:
 </definitions> </definitions>
 </bpmnio> </bpmnio>
-===== Exceptions ===== 
- 
-Attached events are simpler and hence should be preferred in more straightforward scenarios. 
- 
 ===== See also ===== ===== See also =====
  
   * [[en:rule:event_gateway_warning]]   * [[en:rule:event_gateway_warning]]
-  * [[en:rule:collapsed_subprocess]] 
  
-===== Автор(ы) =====+===== Autor(s) =====
  
  --- //[[user:bell|Anatoly Belaychuk]] 2023-09-10 11:21//  --- //[[user:bell|Anatoly Belaychuk]] 2023-09-10 11:21//
 +