Следующая версия | Предыдущая версия |
ru:rule:do_not_use_conditional_flows [2023-09-10 14:41] – создано Anatoly Belaychuk | ru:rule:do_not_use_conditional_flows [2024-08-22 20:22] (текущий) – [Не пользуйтесь "стрелками с ромбиками"] Anatoly Belaychuk |
---|
====== Не пользуйтесь условными потоками управления ====== | ====== Не используйте "стрелки с ромбиками" ====== |
| |
{{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// |
| |
===== Связанные страницы ===== | |
| |
Тут ссылки на страницы со схожим контентом (этот раздел опционален) | |
| |
===== Автор(ы) ===== | |
| |
Тут подпись | |