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:32] – [✘ How NOT to] 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 =====
  
-Фундаментом разработки программного обеспечения является [[wpru>Структурное программирование]] - +In software development, [[wp>Structured programming]] is the fundamental set of rules  
-набор правилблагодаря которым облегчается понимание программного кодасокращается число ошибок, упрощается отладка и последующая модификация+that make it easier to understand the program codereduce the number of errorssimplify testing and subsequent modification
-Структурное программирование запрещает произвольную передачу управления (оператор goto),  +Structured programming prohibits arbitrary transfer of control (goto operator), 
-требуя компоновать программный код из структурных блоков (последовательностьветвлениецикл), которые могут вкладываться друг в друга+requiring the program code to be composed of structural blocks (sequenceselectioniteration). 
-Кроме того, к принципам структурного программирования относится разработка сверху вниз и выделение повторяющихся фрагментов в подпрограммы (процедурыфункции).+Structured programming also suggests top-down development with hierarchical decompositon into subroutines (proceduresfunctions).
  
-Модель бизнес-процесса тоже является своего рода "программой", но только не для компьютера, а для организации, и существующей в виде диаграммыа не текста программного кода+A business process model is also a kind of "program- not for a computerbut for an organization. 
-Но проблемы читаемостилегкости тестирования и последующей модификации для моделей процессов даже более актуальны,  +It existing in the form of a diagramnot the text of the program code
-поскольку они должны быть понятны не только профессионалам (как в случае программного кода), но и людям бизнеса владельцамучастникам и другим заинтересованным сторонам.+But the problems of readabilityease of testing and subsequent modification are even more pressing for process models
 +since they must be understandable not only to professionals (as in the case of program code), but also to business people process ownersperformers and other stakeholders.
  
-Поэтому принципы структурного программирования следует применять и к моделированию процессовс учетом некоторых особенностей:+Thereforethe principles of structured programming should be applied to process modeling with certain adjustments:
  
-  * набор структурных блоков здесь ширесм. [[#как надо]] +  * the palette of structural blocks is widersee [[#How to]] 
-  * аналогом goto здесь является поток управления, не являющийся элементом какого-либо структурного блока +  * the sequence flow (if not part of a structural block) is the equivalento of goto 
-  * как и в структурном программированииблоки могут вкладываться друг в друга +  * as in structured programmingblocks can be nested 
-  * как и в структурном программированиимоделировать процессы следует сверху вниз с использованием подпроцессов и вызовов повторно-используемых действий+  * as in structured programmingprocesses should be modeled from top to bottom using subprocesses and call activities
  
-В отличие от программированияпринципы структурного моделирования - это рекомендация, а не требования+Unlike programmingthe principles of structured modeling are rather recommendations than requirements
-Бывают сценариикогда от них можно отступитьесли это позволяет адекватно отобразить сложную логику, сделать схему процесса более компактной и понятной, см. [[#исключения]]. +There are scenarios when it's reasonable to break them to display complex logicmake the process diagram more compact and understandablesee [[#Exceptions]]. 
-Принципы структурного моделирования очерчивают для аналитика "безопасную зону": пока вы им следуете -  +The principles of structured modeling form a kind of "safe zone": as long as a process modeler follows them 
-в частностиу каждой расходящейся развилки есть парная к ней сходящаяся, и развилки аккуратно вложены одна в другую вы можете быть уверены, что схема корректна+in particularpair each diverging gateway with a convergin one and firmly nest blocks one into another one can be sure that the diagram is correct
-Если приходится от этих принципах отступать, то ответственность за корректность и читаемость диаграммы полностью ложиться на васкак на автора+As soon as you break these rulesyou accept the the responsibility for the correctness and readability of the diagram
-Такая гибкость является сильной стороной BPMN.+Such flexibility is the strength of BPMN.
  
-Для сравненияв нотации BPEL принципы структурного моделирования реализованы жестко - отступить от них невозможно технически+In comparisonthe BPEL notation imposes the principles of structured modeling rigidly, making it technically impossible to break
-Напримересли у расходящейся развилки нет парной сходящейся, то такая модель в этой нотации будет синтаксически некорректной+For exampleif a diverging gateway isn't followed by a paired converging one then such a model will be syntactically incorrect
-Из-за такой жесткости BPEL проиграл в популярности BPMN. +Because of such rigidity, BPEL lost in popularity to BPMN. 
-Оказалось, что авторы и пользователи графических схем процессов ценят возможность соединить потоком управления произвольные элементы на диаграмме+It turned out that authors and users of graphical diagrams value the BPMN ability to connect arbitrary elements on the diagram with a sequence flow
-Главное не злоупотреблять этой возможностью.+The point is not to overuse this ability.
 ===== Exceptions ===== ===== Exceptions =====