Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
ru:rule:do_not_use_conditional_flows [2023-09-10 14:41] – создано Anatoly Belaychukru:rule:do_not_use_conditional_flows [2024-08-22 20:22] (текущий) – [Не пользуйтесь "стрелками с ромбиками"] Anatoly Belaychuk
Строка 1: Строка 1:
-====== Не пользуйтесь условными потоками управления ======+====== Не используйте "стрелки с ромбиками======
  
-{{tag>gateway}} +{{tag>развилка поток_управления условный_поток}}
- +
-{{:ru:v_razrabotke.png?nolink&200|}} +
- +
-Тут описание правила+
  
 +Не используйте условные потоки управления, выходящие из задачи или подпроцесса, используйте развилки.
 ===== ✔ Как надо ===== ===== ✔ Как надо =====
  
-Тут паттерны (диаграммы) +<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_1vz64lo"> 
 +    <task id="Activity_0131ilb"> 
 +      <outgoing>Flow_1em6o86</outgoing> 
 +    </task> 
 +    <task id="Activity_0317o28" name="Сделать это"> 
 +      <incoming>Flow_04is4m4</incoming> 
 +    </task> 
 +    <sequenceFlow id="Flow_04is4m4" name="если это" sourceRef="Gateway_0gn9r9q" targetRef="Activity_0317o28" /> 
 +    <task id="Activity_0fkgdc1" name="Сделать то"> 
 +      <incoming>Flow_02u49rt</incoming> 
 +    </task> 
 +    <sequenceFlow id="Flow_02u49rt" name="если то" sourceRef="Gateway_0gn9r9q" targetRef="Activity_0fkgdc1" /> 
 +    <sequenceFlow id="Flow_1em6o86" sourceRef="Activity_0131ilb" targetRef="Gateway_0gn9r9q" /> 
 +    <inclusiveGateway id="Gateway_0gn9r9q"> 
 +      <incoming>Flow_1em6o86</incoming> 
 +      <outgoing>Flow_02u49rt</outgoing> 
 +      <outgoing>Flow_04is4m4</outgoing> 
 +    </inclusiveGateway> 
 +  </process> 
 +  <bpmndi:BPMNDiagram id="BpmnDiagram_1"> 
 +    <bpmndi:BPMNPlane id="BpmnPlane_1" bpmnElement="Process_1vz64lo"> 
 +      <bpmndi:BPMNShape id="Activity_0131ilb_di" bpmnElement="Activity_0131ilb"> 
 +        <omgdc:Bounds x="260" y="150" width="100" height="80" /> 
 +      </bpmndi:BPMNShape> 
 +      <bpmndi:BPMNShape id="Gateway_0wcaf75_di" bpmnElement="Gateway_0gn9r9q"> 
 +        <omgdc:Bounds x="415" y="165" width="50" height="50" /> 
 +      </bpmndi:BPMNShape> 
 +      <bpmndi:BPMNShape id="Activity_0fkgdc1_di" bpmnElement="Activity_0fkgdc1"> 
 +        <omgdc:Bounds x="390" y="260" width="100" height="80" /> 
 +        <bpmndi:BPMNLabel /> 
 +      </bpmndi:BPMNShape> 
 +      <bpmndi:BPMNShape id="Activity_0317o28_di" bpmnElement="Activity_0317o28"> 
 +        <omgdc:Bounds x="390" y="40" width="100" height="80" /> 
 +        <bpmndi:BPMNLabel /> 
 +      </bpmndi:BPMNShape> 
 +      <bpmndi:BPMNEdge id="Flow_04is4m4_di" bpmnElement="Flow_04is4m4"> 
 +        <omgdi:waypoint x="440" y="165" /> 
 +        <omgdi:waypoint x="440" y="120" /> 
 +        <bpmndi:BPMNLabel> 
 +          <omgdc:Bounds x="446" y="142" width="27" height="14" /> 
 +        </bpmndi:BPMNLabel> 
 +      </bpmndi:BPMNEdge> 
 +      <bpmndi:BPMNEdge id="Flow_02u49rt_di" bpmnElement="Flow_02u49rt"> 
 +        <omgdi:waypoint x="440" y="215" /> 
 +        <omgdi:waypoint x="440" y="260" /> 
 +        <bpmndi:BPMNLabel> 
 +          <omgdc:Bounds x="446" y="224" width="28" height="14" /> 
 +        </bpmndi:BPMNLabel> 
 +      </bpmndi:BPMNEdge> 
 +      <bpmndi:BPMNEdge id="Flow_1em6o86_di" bpmnElement="Flow_1em6o86"> 
 +        <omgdi:waypoint x="360" y="190" /> 
 +        <omgdi:waypoint x="415" y="190" /> 
 +      </bpmndi:BPMNEdge> 
 +    </bpmndi:BPMNPlane> 
 +  </bpmndi:BPMNDiagram> 
 +</definitions> 
 +</bpmnio>
 ===== ✘ Как НЕ надо ===== ===== ✘ Как НЕ надо =====
  
-Тут антипаттерны (диаграммы) +<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_1vz64lo"> 
 +    <task id="Activity_0131ilb"> 
 +      <outgoing>Flow_04is4m4</outgoing> 
 +      <outgoing>Flow_02u49rt</outgoing> 
 +    </task> 
 +    <task id="Activity_0317o28" name="Сделать это"> 
 +      <incoming>Flow_04is4m4</incoming> 
 +    </task> 
 +    <sequenceFlow id="Flow_04is4m4" name="если это" sourceRef="Activity_0131ilb" targetRef="Activity_0317o28"> 
 +      <conditionExpression xsi:type="tFormalExpression" /> 
 +    </sequenceFlow> 
 +    <task id="Activity_0fkgdc1" name="Сделать то"> 
 +      <incoming>Flow_02u49rt</incoming> 
 +    </task> 
 +    <sequenceFlow id="Flow_02u49rt" name="если то" sourceRef="Activity_0131ilb" targetRef="Activity_0fkgdc1"> 
 +      <conditionExpression xsi:type="tFormalExpression" /> 
 +    </sequenceFlow> 
 +  </process> 
 +  <bpmndi:BPMNDiagram id="BpmnDiagram_1"> 
 +    <bpmndi:BPMNPlane id="BpmnPlane_1" bpmnElement="Process_1vz64lo"> 
 +      <bpmndi:BPMNShape id="Activity_0131ilb_di" bpmnElement="Activity_0131ilb"> 
 +        <omgdc:Bounds x="260" y="150" width="100" height="80" /> 
 +      </bpmndi:BPMNShape> 
 +      <bpmndi:BPMNShape id="Activity_0317o28_di" bpmnElement="Activity_0317o28"> 
 +        <omgdc:Bounds x="390" y="40" width="100" height="80" /> 
 +        <bpmndi:BPMNLabel /> 
 +      </bpmndi:BPMNShape> 
 +      <bpmndi:BPMNShape id="Activity_0fkgdc1_di" bpmnElement="Activity_0fkgdc1"> 
 +        <omgdc:Bounds x="390" y="260" width="100" height="80" /> 
 +        <bpmndi:BPMNLabel /> 
 +      </bpmndi:BPMNShape> 
 +      <bpmndi:BPMNEdge id="Flow_04is4m4_di" bpmnElement="Flow_04is4m4"> 
 +        <omgdi:waypoint x="310" y="150" /> 
 +        <omgdi:waypoint x="310" y="80" /> 
 +        <omgdi:waypoint x="390" y="80" /> 
 +        <bpmndi:BPMNLabel> 
 +          <omgdc:Bounds x="326" y="83" width="27" height="14" /> 
 +        </bpmndi:BPMNLabel> 
 +      </bpmndi:BPMNEdge> 
 +      <bpmndi:BPMNEdge id="Flow_02u49rt_di" bpmnElement="Flow_02u49rt"> 
 +        <omgdi:waypoint x="310" y="230" /> 
 +        <omgdi:waypoint x="310" y="300" /> 
 +        <omgdi:waypoint x="390" y="300" /> 
 +        <bpmndi:BPMNLabel> 
 +          <omgdc:Bounds x="326" y="283" width="28" height="14" /> 
 +        </bpmndi:BPMNLabel> 
 +      </bpmndi:BPMNEdge> 
 +    </bpmndi:BPMNPlane> 
 +  </bpmndi:BPMNDiagram> 
 +</definitions> 
 +</bpmnio>
 ===== Примечания ===== ===== Примечания =====
  
-Тут дополнительные комментарии (этот раздел опционален)+  * Некоторые авторы рекомендуют использовать стрелки, выходящие из действия, потому что это позволяет уменьшить количество элементов на диаграмме. Аргумент сомнительный: развилки полезны - они явно показывают, где процесс может пойти по разным маршрутам. Без них процессная логика становится менее прозрачной. 
 +  * Условные потоки, выходящие из действия, независимы, поэтому они эквивалентны развилке "и-или"
 +===== Смотри также =====
  
-===== Исключения =====+  * [[ru:rule:explicit_parallel_split]] 
 +===== Автор(ы) =====
  
-Исключения из указанного выше правила + --- //[[user:bell|Anatoly Belaychuk]] 2024-01-08 17:03//
- +
-===== Связанные страницы ===== +
- +
-Тут ссылки на страницы со схожим контентом (этот раздел опционален) +
- +
-===== Автор(ы) =====+
  
-Тут подпись