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:structured_diagram [2024-08-25 21:54] – [Notes] Anatoly Belaychuken:rule:structured_diagram [2024-11-27 15:48] (current) – [✘ How NOT to] Anatoly Belaychuk
Line 1: Line 1:
-====== 0-TBD Follow structured modeling rules ======+====== Follow structured modeling rules ======
  
-{{tag>subprocess gateway cycle}} +{{tag>subprocess gateway loop}}
- +
-{{en:underconstruction.png?nolink&200|}}+
  
 Leverage structured blocks and subprocesses. Leverage structured blocks and subprocesses.
Line 403: Line 401:
 </bpmnio> </bpmnio>
  
-Process will work fine (no hangouts) but it isn't obvious. 
- 
-<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_02spwhn"> 
-    <parallelGateway id="Gateway_078sx6b"> 
-      <outgoing>Flow_0e02mrs</outgoing> 
-      <outgoing>Flow_0mh672n</outgoing> 
-    </parallelGateway> 
-    <task id="Activity_0aai754"> 
-      <incoming>Flow_0e02mrs</incoming> 
-      <outgoing>Flow_05ddike</outgoing> 
-    </task> 
-    <sequenceFlow id="Flow_0e02mrs" sourceRef="Gateway_078sx6b" targetRef="Activity_0aai754" /> 
-    <task id="Activity_120ghig"> 
-      <incoming>Flow_0mh672n</incoming> 
-      <outgoing>Flow_0ny7lm8</outgoing> 
-    </task> 
-    <sequenceFlow id="Flow_0mh672n" sourceRef="Gateway_078sx6b" targetRef="Activity_120ghig" /> 
-    <sequenceFlow id="Flow_0ny7lm8" sourceRef="Activity_120ghig" targetRef="Gateway_1w2e8qr" /> 
-    <task id="Activity_0fkht20"> 
-      <incoming>Flow_0s1uvcp</incoming> 
-      <outgoing>Flow_0fniklm</outgoing> 
-    </task> 
-    <sequenceFlow id="Flow_0s1uvcp" sourceRef="Gateway_1w2e8qr" targetRef="Activity_0fkht20" /> 
-    <sequenceFlow id="Flow_05ddike" sourceRef="Activity_0aai754" targetRef="Gateway_1ueoerv" /> 
-    <sequenceFlow id="Flow_0j1b3ve" sourceRef="Gateway_1w2e8qr" targetRef="Gateway_1ueoerv" /> 
-    <sequenceFlow id="Flow_0fniklm" sourceRef="Activity_0fkht20" targetRef="Gateway_1ueoerv" /> 
-    <parallelGateway id="Gateway_1ueoerv"> 
-      <incoming>Flow_05ddike</incoming> 
-      <incoming>Flow_0j1b3ve</incoming> 
-      <incoming>Flow_0fniklm</incoming> 
-    </parallelGateway> 
-    <parallelGateway id="Gateway_1w2e8qr"> 
-      <incoming>Flow_0ny7lm8</incoming> 
-      <outgoing>Flow_0s1uvcp</outgoing> 
-      <outgoing>Flow_0j1b3ve</outgoing> 
-    </parallelGateway> 
-  </process> 
-  <bpmndi:BPMNDiagram id="BpmnDiagram_1"> 
-    <bpmndi:BPMNPlane id="BpmnPlane_1" bpmnElement="Process_02spwhn"> 
-      <bpmndi:BPMNShape id="Gateway_15k0q64_di" bpmnElement="Gateway_078sx6b"> 
-        <omgdc:Bounds x="245" y="135" width="50" height="50" /> 
-      </bpmndi:BPMNShape> 
-      <bpmndi:BPMNShape id="Activity_120ghig_di" bpmnElement="Activity_120ghig"> 
-        <omgdc:Bounds x="320" y="230" width="100" height="80" /> 
-      </bpmndi:BPMNShape> 
-      <bpmndi:BPMNShape id="Activity_0fkht20_di" bpmnElement="Activity_0fkht20"> 
-        <omgdc:Bounds x="560" y="230" width="100" height="80" /> 
-      </bpmndi:BPMNShape> 
-      <bpmndi:BPMNShape id="Gateway_17pm0bl_di" bpmnElement="Gateway_1ueoerv"> 
-        <omgdc:Bounds x="585" y="135" width="50" height="50" /> 
-      </bpmndi:BPMNShape> 
-      <bpmndi:BPMNShape id="Gateway_15jfxiy_di" bpmnElement="Gateway_1w2e8qr"> 
-        <omgdc:Bounds x="465" y="245" width="50" height="50" /> 
-      </bpmndi:BPMNShape> 
-      <bpmndi:BPMNShape id="Activity_0aai754_di" bpmnElement="Activity_0aai754"> 
-        <omgdc:Bounds x="320" y="50" width="100" height="80" /> 
-      </bpmndi:BPMNShape> 
-      <bpmndi:BPMNEdge id="Flow_0e02mrs_di" bpmnElement="Flow_0e02mrs"> 
-        <omgdi:waypoint x="270" y="135" /> 
-        <omgdi:waypoint x="270" y="90" /> 
-        <omgdi:waypoint x="320" y="90" /> 
-      </bpmndi:BPMNEdge> 
-      <bpmndi:BPMNEdge id="Flow_0mh672n_di" bpmnElement="Flow_0mh672n"> 
-        <omgdi:waypoint x="270" y="185" /> 
-        <omgdi:waypoint x="270" y="270" /> 
-        <omgdi:waypoint x="320" y="270" /> 
-      </bpmndi:BPMNEdge> 
-      <bpmndi:BPMNEdge id="Flow_0ny7lm8_di" bpmnElement="Flow_0ny7lm8"> 
-        <omgdi:waypoint x="420" y="270" /> 
-        <omgdi:waypoint x="465" y="270" /> 
-      </bpmndi:BPMNEdge> 
-      <bpmndi:BPMNEdge id="Flow_0s1uvcp_di" bpmnElement="Flow_0s1uvcp"> 
-        <omgdi:waypoint x="515" y="270" /> 
-        <omgdi:waypoint x="560" y="270" /> 
-      </bpmndi:BPMNEdge> 
-      <bpmndi:BPMNEdge id="Flow_05ddike_di" bpmnElement="Flow_05ddike"> 
-        <omgdi:waypoint x="420" y="90" /> 
-        <omgdi:waypoint x="610" y="90" /> 
-        <omgdi:waypoint x="610" y="135" /> 
-      </bpmndi:BPMNEdge> 
-      <bpmndi:BPMNEdge id="Flow_0j1b3ve_di" bpmnElement="Flow_0j1b3ve"> 
-        <omgdi:waypoint x="490" y="245" /> 
-        <omgdi:waypoint x="490" y="160" /> 
-        <omgdi:waypoint x="585" y="160" /> 
-      </bpmndi:BPMNEdge> 
-      <bpmndi:BPMNEdge id="Flow_0fniklm_di" bpmnElement="Flow_0fniklm"> 
-        <omgdi:waypoint x="610" y="230" /> 
-        <omgdi:waypoint x="610" y="185" /> 
-      </bpmndi:BPMNEdge> 
-    </bpmndi:BPMNPlane> 
-  </bpmndi:BPMNDiagram> 
-</definitions> 
-</bpmnio> 
 ===== Notes ===== ===== Notes =====
  
Line 514: Line 416:
 Therefore, the principles of structured programming should be applied to process modeling with certain adjustments: Therefore, the principles of structured programming should be applied to process modeling with certain adjustments:
  
-  * the palette of structural blocks is wider, see [[#how to]]+  * the palette of structural blocks is wider, see [[#How to]]
   * the sequence flow (if not part of a structural block) is the equivalento of goto   * the sequence flow (if not part of a structural block) is the equivalento of goto
   * as in structured programming, blocks can be nested   * as in structured programming, blocks can be nested
Line 520: Line 422:
  
 Unlike programming, the principles of structured modeling are rather recommendations than requirements. Unlike programming, the principles of structured modeling are rather recommendations than requirements.
-There are scenarios when it's reasonable to break them to display complex logic, make the process diagram more compact and understandable, see [[#exceptions]].+There are scenarios when it's reasonable to break them to display complex logic, make the process diagram more compact and understandable, see [[#Exceptions]].
 The principles of structured modeling form a kind of "safe zone": as long as a process modeler follows them - The principles of structured modeling form a kind of "safe zone": as long as a process modeler follows them -
 in particular, pair each diverging gateway with a convergin one and firmly nest blocks one into another - one can be sure that the diagram is correct. in particular, pair each diverging gateway with a convergin one and firmly nest blocks one into another - one can be sure that the diagram is correct.