Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия |
ru:rule:do_not_save_on_gateways [2024-08-26 11:21] – [Отредактирована диаграмма] Anatoly Belaychuk | ru:rule:do_not_save_on_gateways [2024-08-26 13:08] (текущий) – [Примечания] Anatoly Belaychuk |
---|
====== 0-TBD Не экономьте на развилках ====== | ====== Не экономьте на развилках ====== |
| |
{{tag>развилка}} | {{tag>развилка цикл}} |
| |
{{:ru:v_razrabotke.png?nolink&200|}} | |
| |
Стремление уменьшить количество элементов ухудшает читаемость. | |
| |
| Развилки делают схему понятной с первого взгляда. |
===== ✔ Как надо ===== | ===== ✔ Как надо ===== |
| |
<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"> |
<collaboration id="Collaboration_1btdq44"> | <collaboration id="Collaboration_1btdq44"> |
<participant id="Participant_17sw5vi" processRef="Process_1r5h2r7" /> | <participant id="Participant_17sw5vi" name="P1" processRef="Process_1r5h2r7" /> |
</collaboration> | </collaboration> |
<process id="Process_1r5h2r7"> | <process id="Process_1r5h2r7"> |
<laneSet id="LaneSet_1ecton7"> | <laneSet id="LaneSet_1ecton7"> |
<lane id="Lane_0vtsaxp"> | <lane id="Lane_0vtsaxp" name="L3"> |
<flowNodeRef>Activity_03hgezk</flowNodeRef> | <flowNodeRef>Activity_03hgezk</flowNodeRef> |
<flowNodeRef>Gateway_1bs1364</flowNodeRef> | <flowNodeRef>Gateway_1bs1364</flowNodeRef> |
<flowNodeRef>Gateway_1keeo65</flowNodeRef> | <flowNodeRef>Gateway_1keeo65</flowNodeRef> |
</lane> | </lane> |
<lane id="Lane_1c5yp1f"> | <lane id="Lane_1c5yp1f" name="L1"> |
<flowNodeRef>Event_1buu9u4</flowNodeRef> | <flowNodeRef>Event_1buu9u4</flowNodeRef> |
<flowNodeRef>Activity_1j61s03</flowNodeRef> | <flowNodeRef>Activity_1j61s03</flowNodeRef> |
<flowNodeRef>Gateway_09wgv00</flowNodeRef> | <flowNodeRef>Gateway_09wgv00</flowNodeRef> |
</lane> | </lane> |
<lane id="Lane_04hpp5l"> | <lane id="Lane_04hpp5l" name="L2"> |
<flowNodeRef>Activity_1xfsgpq</flowNodeRef> | <flowNodeRef>Activity_1xfsgpq</flowNodeRef> |
</lane> | </lane> |
<sequenceFlow id="Flow_1ehbyil" sourceRef="Gateway_0thivaj" targetRef="Gateway_09wgv00" /> | <sequenceFlow id="Flow_1ehbyil" sourceRef="Gateway_0thivaj" targetRef="Gateway_09wgv00" /> |
<sequenceFlow id="Flow_1ctp4dm" sourceRef="Activity_1xfsgpq" targetRef="Gateway_1l9j0rz" /> | <sequenceFlow id="Flow_1ctp4dm" sourceRef="Activity_1xfsgpq" targetRef="Gateway_1l9j0rz" /> |
<startEvent id="Event_1buu9u4" name="s1"> | <startEvent id="Event_1buu9u4" name="S1"> |
<outgoing>Flow_05t3f7e</outgoing> | <outgoing>Flow_05t3f7e</outgoing> |
</startEvent> | </startEvent> |
<task id="Activity_1j61s03" name="t1"> | <task id="Activity_1j61s03" name="T1"> |
<incoming>Flow_05t3f7e</incoming> | <incoming>Flow_05t3f7e</incoming> |
<outgoing>Flow_0sbyowp</outgoing> | <outgoing>Flow_0sbyowp</outgoing> |
<outgoing>Flow_1ufny1o</outgoing> | <outgoing>Flow_1ufny1o</outgoing> |
</exclusiveGateway> | </exclusiveGateway> |
<task id="Activity_0y9vtiq" name="t3"> | <task id="Activity_0y9vtiq" name="T3"> |
<incoming>Flow_1a0lia5</incoming> | <incoming>Flow_1a0lia5</incoming> |
<outgoing>Flow_1t49bww</outgoing> | <outgoing>Flow_1t49bww</outgoing> |
<outgoing>Flow_07gass8</outgoing> | <outgoing>Flow_07gass8</outgoing> |
</exclusiveGateway> | </exclusiveGateway> |
<task id="Activity_0cyasjk" name="t2"> | <task id="Activity_0cyasjk" name="T2"> |
<incoming>Flow_1y8jke1</incoming> | <incoming>Flow_1y8jke1</incoming> |
<outgoing>Flow_1vnp4o1</outgoing> | <outgoing>Flow_1vnp4o1</outgoing> |
<outgoing>Flow_1pssld8</outgoing> | <outgoing>Flow_1pssld8</outgoing> |
</exclusiveGateway> | </exclusiveGateway> |
<task id="Activity_1xfsgpq" name="t4"> | <task id="Activity_1xfsgpq" name="T4"> |
<incoming>Flow_1pssld8</incoming> | <incoming>Flow_1pssld8</incoming> |
<outgoing>Flow_1ctp4dm</outgoing> | <outgoing>Flow_1ctp4dm</outgoing> |
</task> | </task> |
<task id="Activity_03hgezk" name="t5"> | <task id="Activity_03hgezk" name="T5"> |
<incoming>Flow_0vxdrsx</incoming> | <incoming>Flow_0vxdrsx</incoming> |
<outgoing>Flow_0vartie</outgoing> | <outgoing>Flow_0vartie</outgoing> |
<outgoing>Flow_0typaml</outgoing> | <outgoing>Flow_0typaml</outgoing> |
</exclusiveGateway> | </exclusiveGateway> |
<task id="Activity_0kvoegs" name="t7"> | <task id="Activity_0kvoegs" name="T7"> |
<incoming>Flow_0e6yda7</incoming> | <incoming>Flow_0e6yda7</incoming> |
<outgoing>Flow_06g6jxh</outgoing> | <outgoing>Flow_06g6jxh</outgoing> |
</task> | </task> |
<endEvent id="Event_1h3t7x3" name="e2"> | <endEvent id="Event_1h3t7x3" name="E2"> |
<incoming>Flow_06g6jxh</incoming> | <incoming>Flow_06g6jxh</incoming> |
<terminateEventDefinition id="TerminateEventDefinition_0xuc1qp" /> | <terminateEventDefinition id="TerminateEventDefinition_0xuc1qp" /> |
</endEvent> | </endEvent> |
<task id="Activity_03taosi" name="t6"> | <task id="Activity_03taosi" name="T6"> |
<incoming>Flow_1b8heic</incoming> | <incoming>Flow_1b8heic</incoming> |
<outgoing>Flow_0yfakng</outgoing> | <outgoing>Flow_0yfakng</outgoing> |
</task> | </task> |
<endEvent id="Event_1fsyhqv" name="e1"> | <endEvent id="Event_1fsyhqv" name="E1"> |
<incoming>Flow_0yfakng</incoming> | <incoming>Flow_0yfakng</incoming> |
</endEvent> | </endEvent> |
<bpmndi:BPMNPlane id="BpmnPlane_1" bpmnElement="Collaboration_1btdq44"> | <bpmndi:BPMNPlane id="BpmnPlane_1" bpmnElement="Collaboration_1btdq44"> |
<bpmndi:BPMNShape id="Participant_17sw5vi_di" bpmnElement="Participant_17sw5vi" isHorizontal="true"> | <bpmndi:BPMNShape id="Participant_17sw5vi_di" bpmnElement="Participant_17sw5vi" isHorizontal="true"> |
<omgdc:Bounds x="260" y="-410" width="1100" height="720" /> | <omgdc:Bounds x="250" y="-410" width="1110" height="720" /> |
| <bpmndi:BPMNLabel /> |
</bpmndi:BPMNShape> | </bpmndi:BPMNShape> |
<bpmndi:BPMNShape id="Lane_04hpp5l_di" bpmnElement="Lane_04hpp5l" isHorizontal="true"> | <bpmndi:BPMNShape id="Lane_04hpp5l_di" bpmnElement="Lane_04hpp5l" isHorizontal="true"> |
<omgdc:Bounds x="290" y="-50" width="1070" height="140" /> | <omgdc:Bounds x="280" y="-50" width="1080" height="140" /> |
| <bpmndi:BPMNLabel /> |
</bpmndi:BPMNShape> | </bpmndi:BPMNShape> |
<bpmndi:BPMNShape id="Lane_1c5yp1f_di" bpmnElement="Lane_1c5yp1f" isHorizontal="true"> | <bpmndi:BPMNShape id="Lane_1c5yp1f_di" bpmnElement="Lane_1c5yp1f" isHorizontal="true"> |
<omgdc:Bounds x="290" y="-410" width="1070" height="360" /> | <omgdc:Bounds x="280" y="-410" width="1080" height="360" /> |
| <bpmndi:BPMNLabel /> |
</bpmndi:BPMNShape> | </bpmndi:BPMNShape> |
<bpmndi:BPMNShape id="Lane_0vtsaxp_di" bpmnElement="Lane_0vtsaxp" isHorizontal="true"> | <bpmndi:BPMNShape id="Lane_0vtsaxp_di" bpmnElement="Lane_0vtsaxp" isHorizontal="true"> |
<omgdc:Bounds x="290" y="90" width="1070" height="220" /> | <omgdc:Bounds x="280" y="90" width="1080" height="220" /> |
| <bpmndi:BPMNLabel /> |
</bpmndi:BPMNShape> | </bpmndi:BPMNShape> |
<bpmndi:BPMNShape id="Event_1buu9u4_di" bpmnElement="Event_1buu9u4"> | <bpmndi:BPMNShape id="Event_1buu9u4_di" bpmnElement="Event_1buu9u4"> |
<omgdc:Bounds x="312" y="-248" width="36" height="36" /> | <omgdc:Bounds x="312" y="-248" width="36" height="36" /> |
<bpmndi:BPMNLabel> | <bpmndi:BPMNLabel> |
<omgdc:Bounds x="324" y="-205" width="12" height="14" /> | <omgdc:Bounds x="323" y="-205" width="14" height="14" /> |
</bpmndi:BPMNLabel> | </bpmndi:BPMNLabel> |
</bpmndi:BPMNShape> | </bpmndi:BPMNShape> |
<omgdc:Bounds x="1302" y="222" width="36" height="36" /> | <omgdc:Bounds x="1302" y="222" width="36" height="36" /> |
<bpmndi:BPMNLabel> | <bpmndi:BPMNLabel> |
<omgdc:Bounds x="1314" y="265" width="13" height="14" /> | <omgdc:Bounds x="1314" y="265" width="14" height="14" /> |
</bpmndi:BPMNLabel> | </bpmndi:BPMNLabel> |
</bpmndi:BPMNShape> | </bpmndi:BPMNShape> |
<omgdc:Bounds x="1042" y="142" width="36" height="36" /> | <omgdc:Bounds x="1042" y="142" width="36" height="36" /> |
<bpmndi:BPMNLabel> | <bpmndi:BPMNLabel> |
<omgdc:Bounds x="1054" y="185" width="13" height="14" /> | <omgdc:Bounds x="1054" y="185" width="14" height="14" /> |
</bpmndi:BPMNLabel> | </bpmndi:BPMNLabel> |
</bpmndi:BPMNShape> | </bpmndi:BPMNShape> |
===== Примечания ===== | ===== Примечания ===== |
| |
Благодаря своей заметности развилки делают схему понятной с первого взгляда. | Некоторые авторы рекомендуют использовать развилки только там, где без них нельзя обойтись. |
| Аргументируется это тем, что уменьшение количества элементов на диаграмме делает ее более понятной. |
Структурированные блоки. | Например, Брюс Сильвер в книге "BPMN - метод и стиль" рекомендует использовать неявное распараллеливание (экономится расходящаяся параллельная развилка) |
| и схождение альтернативных маршрутов на действии (экономится сходящаяся развилка "или-или"). |
Противоречит Методу и стилю Брюса Сильвера. | Другие авторы из этих же соображений рекомендуют использовать условные потоки управления (экономится расходящаяся развилка "или-или"). |
| |
| Такая рекомендация является спорной: считать развилки бесполезным балластом неверно - |
| они позволяют разбить диаграмму на [[structured_diagram|структурные блоки]], тем самым делая процессную логику явной, легко считываемой. |
===== Исключения ===== | ===== Исключения ===== |
| |
Циклы. | <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"> |
| <collaboration id="Collaboration_0qa9llr"> |
| <participant id="Participant_0zoxzpt" processRef="Process_0a1x1rm" /> |
| </collaboration> |
| <process id="Process_0a1x1rm"> |
| <laneSet id="LaneSet_0oxuxy6"> |
| <lane id="Lane_0ydghza" name="Исполнитель"> |
| <flowNodeRef>Activity_1mas9cf</flowNodeRef> |
| <flowNodeRef>Event_0rrygmz</flowNodeRef> |
| <flowNodeRef>Activity_0u0drg9</flowNodeRef> |
| </lane> |
| <lane id="Lane_0hvsiwo" name="Руководитель"> |
| <flowNodeRef>Activity_0rgs3uj</flowNodeRef> |
| <flowNodeRef>Gateway_1r795qj</flowNodeRef> |
| <flowNodeRef>Event_05brdcz</flowNodeRef> |
| </lane> |
| </laneSet> |
| <task id="Activity_1mas9cf" name="Сделать"> |
| <incoming>Flow_1muai6c</incoming> |
| <outgoing>Flow_1a7m68a</outgoing> |
| </task> |
| <sequenceFlow id="Flow_1muai6c" sourceRef="Event_0rrygmz" targetRef="Activity_1mas9cf" /> |
| <startEvent id="Event_0rrygmz"> |
| <outgoing>Flow_1muai6c</outgoing> |
| </startEvent> |
| <sequenceFlow id="Flow_1a7m68a" sourceRef="Activity_1mas9cf" targetRef="Activity_0rgs3uj" /> |
| <task id="Activity_0rgs3uj" name="Принять"> |
| <incoming>Flow_1a7m68a</incoming> |
| <incoming>Flow_0w6ruw6</incoming> |
| <outgoing>Flow_02iidys</outgoing> |
| </task> |
| <exclusiveGateway id="Gateway_1r795qj" name="Принято?"> |
| <incoming>Flow_02iidys</incoming> |
| <outgoing>Flow_0s9fue9</outgoing> |
| <outgoing>Flow_15vub0z</outgoing> |
| </exclusiveGateway> |
| <task id="Activity_0u0drg9" name="Переделать"> |
| <incoming>Flow_15vub0z</incoming> |
| <outgoing>Flow_0w6ruw6</outgoing> |
| </task> |
| <sequenceFlow id="Flow_0w6ruw6" sourceRef="Activity_0u0drg9" targetRef="Activity_0rgs3uj" /> |
| <sequenceFlow id="Flow_02iidys" sourceRef="Activity_0rgs3uj" targetRef="Gateway_1r795qj" /> |
| <sequenceFlow id="Flow_0s9fue9" name="да" sourceRef="Gateway_1r795qj" targetRef="Event_05brdcz" /> |
| <sequenceFlow id="Flow_15vub0z" name="нет" sourceRef="Gateway_1r795qj" targetRef="Activity_0u0drg9" /> |
| <endEvent id="Event_05brdcz"> |
| <incoming>Flow_0s9fue9</incoming> |
| </endEvent> |
| </process> |
| <bpmndi:BPMNDiagram id="BpmnDiagram_1"> |
| <bpmndi:BPMNPlane id="BpmnPlane_1" bpmnElement="Collaboration_0qa9llr"> |
| <bpmndi:BPMNShape id="Participant_0zoxzpt_di" bpmnElement="Participant_0zoxzpt" isHorizontal="true"> |
| <omgdc:Bounds x="240" y="40" width="610" height="280" /> |
| </bpmndi:BPMNShape> |
| <bpmndi:BPMNShape id="Lane_0ydghza_di" bpmnElement="Lane_0ydghza" isHorizontal="true"> |
| <omgdc:Bounds x="270" y="40" width="580" height="140" /> |
| <bpmndi:BPMNLabel /> |
| </bpmndi:BPMNShape> |
| <bpmndi:BPMNShape id="Lane_0hvsiwo_di" bpmnElement="Lane_0hvsiwo" isHorizontal="true"> |
| <omgdc:Bounds x="270" y="180" width="580" height="140" /> |
| <bpmndi:BPMNLabel /> |
| </bpmndi:BPMNShape> |
| <bpmndi:BPMNShape id="Activity_1mas9cf_di" bpmnElement="Activity_1mas9cf"> |
| <omgdc:Bounds x="400" y="70" width="100" height="80" /> |
| <bpmndi:BPMNLabel /> |
| </bpmndi:BPMNShape> |
| <bpmndi:BPMNShape id="Event_0rrygmz_di" bpmnElement="Event_0rrygmz"> |
| <omgdc:Bounds x="322" y="92" width="36" height="36" /> |
| </bpmndi:BPMNShape> |
| <bpmndi:BPMNShape id="Activity_0rgs3uj_di" bpmnElement="Activity_0rgs3uj"> |
| <omgdc:Bounds x="540" y="210" width="100" height="80" /> |
| <bpmndi:BPMNLabel /> |
| </bpmndi:BPMNShape> |
| <bpmndi:BPMNShape id="Gateway_1r795qj_di" bpmnElement="Gateway_1r795qj" isMarkerVisible="true"> |
| <omgdc:Bounds x="675" y="225" width="50" height="50" /> |
| <bpmndi:BPMNLabel> |
| <omgdc:Bounds x="689" y="282" width="23" height="14" /> |
| </bpmndi:BPMNLabel> |
| </bpmndi:BPMNShape> |
| <bpmndi:BPMNShape id="Activity_0u0drg9_di" bpmnElement="Activity_0u0drg9"> |
| <omgdc:Bounds x="540" y="70" width="100" height="80" /> |
| <bpmndi:BPMNLabel /> |
| </bpmndi:BPMNShape> |
| <bpmndi:BPMNShape id="Event_05brdcz_di" bpmnElement="Event_05brdcz"> |
| <omgdc:Bounds x="782" y="232" width="36" height="36" /> |
| </bpmndi:BPMNShape> |
| <bpmndi:BPMNEdge id="Flow_1muai6c_di" bpmnElement="Flow_1muai6c"> |
| <omgdi:waypoint x="358" y="110" /> |
| <omgdi:waypoint x="400" y="110" /> |
| </bpmndi:BPMNEdge> |
| <bpmndi:BPMNEdge id="Flow_1a7m68a_di" bpmnElement="Flow_1a7m68a"> |
| <omgdi:waypoint x="450" y="150" /> |
| <omgdi:waypoint x="450" y="250" /> |
| <omgdi:waypoint x="540" y="250" /> |
| </bpmndi:BPMNEdge> |
| <bpmndi:BPMNEdge id="Flow_0w6ruw6_di" bpmnElement="Flow_0w6ruw6"> |
| <omgdi:waypoint x="590" y="150" /> |
| <omgdi:waypoint x="590" y="210" /> |
| </bpmndi:BPMNEdge> |
| <bpmndi:BPMNEdge id="Flow_02iidys_di" bpmnElement="Flow_02iidys"> |
| <omgdi:waypoint x="640" y="250" /> |
| <omgdi:waypoint x="675" y="250" /> |
| </bpmndi:BPMNEdge> |
| <bpmndi:BPMNEdge id="Flow_0s9fue9_di" bpmnElement="Flow_0s9fue9"> |
| <omgdi:waypoint x="725" y="250" /> |
| <omgdi:waypoint x="782" y="250" /> |
| <bpmndi:BPMNLabel> |
| <omgdc:Bounds x="745" y="232" width="17" height="14" /> |
| </bpmndi:BPMNLabel> |
| </bpmndi:BPMNEdge> |
| <bpmndi:BPMNEdge id="Flow_15vub0z_di" bpmnElement="Flow_15vub0z"> |
| <omgdi:waypoint x="700" y="225" /> |
| <omgdi:waypoint x="700" y="110" /> |
| <omgdi:waypoint x="640" y="110" /> |
| <bpmndi:BPMNLabel> |
| <omgdc:Bounds x="709" y="165" width="13" height="14" /> |
| </bpmndi:BPMNLabel> |
| </bpmndi:BPMNEdge> |
| </bpmndi:BPMNPlane> |
| </bpmndi:BPMNDiagram> |
| </definitions> |
| </bpmnio> |
| |
===== Смотри также ===== | ===== Смотри также ===== |
| |
| * [[structured_diagram]] |
* [[explicit_parallel_split]] | * [[explicit_parallel_split]] |
* [[explicit_parallel_merge]] | * [[explicit_parallel_merge]] |
* [[overlapped_flows]] | * [[overlapped_flows]] |
* [[alternative_paths]] | * [[alternative_paths]] |
* [[structured_diagram]] | * [[time_flows_left_to_right]] |
===== Автор(ы) ===== | ===== Автор(ы) ===== |
| |
--- //[[user:bell|Anatoly Belaychuk]] 2024-08-22 20:38// | --- //[[user:bell|Anatoly Belaychuk]] 2024-08-22 20:38// |