Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
ru:rule:do_not_use_converging_inclusive_gateway [2024-01-25 09:40] – удалено - внешнее изменение (Дата неизвестна) 127.0.0.1ru:rule:do_not_use_converging_inclusive_gateway [2024-01-25 09:40] (текущий) – ↷ Имя страницы ru:rule:do_not_use_convergence_inclusive_or изменено на ru:rule:do_not_use_converging_inclusive_gateway Anatoly Belaychuk
Строка 1: Строка 1:
 +====== Не используйте сходящуюся развилку "и-или" без парной расходящейся развилки ======
 +
 +{{tag>развилка развилка_и-или}}
 +
 +Использование сходящейся развилки «и-или» без парной расходящейся является избыточным и не рекомендовано.
 +
 +===== ✔ Как надо =====
 +
 +<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_1wcoogl">
 +    <exclusiveGateway id="Gateway_1oldu18">
 +      <outgoing>Flow_0s2x71d</outgoing>
 +      <outgoing>Flow_0r8sh7a</outgoing>
 +    </exclusiveGateway>
 +    <task id="Activity_1msbof5">
 +      <incoming>Flow_0s2x71d</incoming>
 +      <outgoing>Flow_0w3f70i</outgoing>
 +    </task>
 +    <sequenceFlow id="Flow_0s2x71d" sourceRef="Gateway_1oldu18" targetRef="Activity_1msbof5" />
 +    <task id="Activity_1yuh0l8">
 +      <incoming>Flow_0r8sh7a</incoming>
 +      <outgoing>Flow_1yzbpp9</outgoing>
 +    </task>
 +    <sequenceFlow id="Flow_0r8sh7a" sourceRef="Gateway_1oldu18" targetRef="Activity_1yuh0l8" />
 +    <exclusiveGateway id="Gateway_1oih979">
 +      <incoming>Flow_1yzbpp9</incoming>
 +      <incoming>Flow_0w3f70i</incoming>
 +    </exclusiveGateway>
 +    <sequenceFlow id="Flow_1yzbpp9" sourceRef="Activity_1yuh0l8" targetRef="Gateway_1oih979" />
 +    <sequenceFlow id="Flow_0w3f70i" sourceRef="Activity_1msbof5" targetRef="Gateway_1oih979" />
 +  </process>
 +  <bpmndi:BPMNDiagram id="BpmnDiagram_1">
 +    <bpmndi:BPMNPlane id="BpmnPlane_1" bpmnElement="Process_1wcoogl">
 +      <bpmndi:BPMNShape id="Gateway_1oldu18_di" bpmnElement="Gateway_1oldu18" isMarkerVisible="true">
 +        <omgdc:Bounds x="285" y="135" width="50" height="50" />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Activity_1msbof5_di" bpmnElement="Activity_1msbof5">
 +        <omgdc:Bounds x="360" y="50" width="100" height="80" />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Activity_1yuh0l8_di" bpmnElement="Activity_1yuh0l8">
 +        <omgdc:Bounds x="360" y="190" width="100" height="80" />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Gateway_1oih979_di" bpmnElement="Gateway_1oih979" isMarkerVisible="true">
 +        <omgdc:Bounds x="485" y="135" width="50" height="50" />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNEdge id="Flow_0s2x71d_di" bpmnElement="Flow_0s2x71d">
 +        <omgdi:waypoint x="310" y="135" />
 +        <omgdi:waypoint x="310" y="90" />
 +        <omgdi:waypoint x="360" y="90" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_0r8sh7a_di" bpmnElement="Flow_0r8sh7a">
 +        <omgdi:waypoint x="310" y="185" />
 +        <omgdi:waypoint x="310" y="230" />
 +        <omgdi:waypoint x="360" y="230" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_1yzbpp9_di" bpmnElement="Flow_1yzbpp9">
 +        <omgdi:waypoint x="460" y="230" />
 +        <omgdi:waypoint x="510" y="230" />
 +        <omgdi:waypoint x="510" y="185" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_0w3f70i_di" bpmnElement="Flow_0w3f70i">
 +        <omgdi:waypoint x="460" y="90" />
 +        <omgdi:waypoint x="510" y="90" />
 +        <omgdi:waypoint x="510" y="135" />
 +      </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_1wcoogl">
 +    <exclusiveGateway id="Gateway_1oldu18">
 +      <outgoing>Flow_0s2x71d</outgoing>
 +      <outgoing>Flow_0r8sh7a</outgoing>
 +    </exclusiveGateway>
 +    <task id="Activity_1msbof5">
 +      <incoming>Flow_0s2x71d</incoming>
 +      <outgoing>Flow_0w3f70i</outgoing>
 +    </task>
 +    <sequenceFlow id="Flow_0s2x71d" sourceRef="Gateway_1oldu18" targetRef="Activity_1msbof5" />
 +    <task id="Activity_1yuh0l8">
 +      <incoming>Flow_0r8sh7a</incoming>
 +      <outgoing>Flow_1yzbpp9</outgoing>
 +    </task>
 +    <sequenceFlow id="Flow_0r8sh7a" sourceRef="Gateway_1oldu18" targetRef="Activity_1yuh0l8" />
 +    <sequenceFlow id="Flow_1yzbpp9" sourceRef="Activity_1yuh0l8" targetRef="Gateway_1oih979" />
 +    <sequenceFlow id="Flow_0w3f70i" sourceRef="Activity_1msbof5" targetRef="Gateway_1oih979" />
 +    <inclusiveGateway id="Gateway_1oih979">
 +      <incoming>Flow_1yzbpp9</incoming>
 +      <incoming>Flow_0w3f70i</incoming>
 +    </inclusiveGateway>
 +  </process>
 +  <bpmndi:BPMNDiagram id="BpmnDiagram_1">
 +    <bpmndi:BPMNPlane id="BpmnPlane_1" bpmnElement="Process_1wcoogl">
 +      <bpmndi:BPMNShape id="Gateway_1oldu18_di" bpmnElement="Gateway_1oldu18" isMarkerVisible="true">
 +        <omgdc:Bounds x="285" y="135" width="50" height="50" />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Activity_1msbof5_di" bpmnElement="Activity_1msbof5">
 +        <omgdc:Bounds x="360" y="50" width="100" height="80" />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Activity_1yuh0l8_di" bpmnElement="Activity_1yuh0l8">
 +        <omgdc:Bounds x="360" y="190" width="100" height="80" />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Gateway_1bl2jrt_di" bpmnElement="Gateway_1oih979">
 +        <omgdc:Bounds x="485" y="135" width="50" height="50" />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNEdge id="Flow_0s2x71d_di" bpmnElement="Flow_0s2x71d">
 +        <omgdi:waypoint x="310" y="135" />
 +        <omgdi:waypoint x="310" y="90" />
 +        <omgdi:waypoint x="360" y="90" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_0r8sh7a_di" bpmnElement="Flow_0r8sh7a">
 +        <omgdi:waypoint x="310" y="185" />
 +        <omgdi:waypoint x="310" y="230" />
 +        <omgdi:waypoint x="360" y="230" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_1yzbpp9_di" bpmnElement="Flow_1yzbpp9">
 +        <omgdi:waypoint x="460" y="230" />
 +        <omgdi:waypoint x="510" y="230" />
 +        <omgdi:waypoint x="510" y="185" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_0w3f70i_di" bpmnElement="Flow_0w3f70i">
 +        <omgdi:waypoint x="460" y="90" />
 +        <omgdi:waypoint x="510" y="90" />
 +        <omgdi:waypoint x="510" y="135" />
 +      </bpmndi:BPMNEdge>
 +    </bpmndi:BPMNPlane>
 +  </bpmndi:BPMNDiagram>
 +</definitions>
 +</bpmnio>
 +
 +===== Примечания =====
 +
 +Согласно [[https://www.omg.org/spec/BPMN/2.0.2/PDF | спецификации BPMN ]] (стр. 291),
 +
 +> Сходящаяся развилка "и-или" используется для слияния сочетания альтернативных и параллельных потоков. Токен, приходящий на развилку "и-или", МОЖЕТ синхронизовываться с некоторыми другими токенами, приходящими на эту же развилку позднее.
 +
 +Таким образом, если сходящаяся развилка "и-или" не имеет парной расходящейся, то ее поведение в точности не определено, поэтому такого использования рекомендуется избегать.
 +===== Исключения =====
 +
 +Развилка "и-или" - единственный способ синхронизовать условные потоки управления:
 +
 +<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_1fohfju">
 +    <task id="Activity_0dz3i2m" default="Flow_0yhgogy">
 +      <outgoing>Flow_0yhgogy</outgoing>
 +      <outgoing>Flow_17w8cch</outgoing>
 +      <outgoing>Flow_1erz2cg</outgoing>
 +    </task>
 +    <sequenceFlow id="Flow_0yhgogy" sourceRef="Activity_0dz3i2m" targetRef="Activity_0px2wls" />
 +    <inclusiveGateway id="Gateway_14rc2cm">
 +      <incoming>Flow_0xdfiky</incoming>
 +      <incoming>Flow_1bwpf18</incoming>
 +      <incoming>Flow_00a1mlo</incoming>
 +    </inclusiveGateway>
 +    <task id="Activity_0px2wls">
 +      <incoming>Flow_0yhgogy</incoming>
 +      <outgoing>Flow_0xdfiky</outgoing>
 +    </task>
 +    <sequenceFlow id="Flow_0xdfiky" sourceRef="Activity_0px2wls" targetRef="Gateway_14rc2cm" />
 +    <task id="Activity_0poa1n1">
 +      <incoming>Flow_17w8cch</incoming>
 +      <outgoing>Flow_00a1mlo</outgoing>
 +    </task>
 +    <sequenceFlow id="Flow_17w8cch" sourceRef="Activity_0dz3i2m" targetRef="Activity_0poa1n1">
 +      <conditionExpression xsi:type="tFormalExpression" />
 +    </sequenceFlow>
 +    <task id="Activity_08papqw">
 +      <incoming>Flow_1erz2cg</incoming>
 +      <outgoing>Flow_1bwpf18</outgoing>
 +    </task>
 +    <sequenceFlow id="Flow_1erz2cg" sourceRef="Activity_0dz3i2m" targetRef="Activity_08papqw">
 +      <conditionExpression xsi:type="tFormalExpression" />
 +    </sequenceFlow>
 +    <sequenceFlow id="Flow_1bwpf18" sourceRef="Activity_08papqw" targetRef="Gateway_14rc2cm" />
 +    <sequenceFlow id="Flow_00a1mlo" sourceRef="Activity_0poa1n1" targetRef="Gateway_14rc2cm" />
 +  </process>
 +  <bpmndi:BPMNDiagram id="BpmnDiagram_1">
 +    <bpmndi:BPMNPlane id="BpmnPlane_1" bpmnElement="Process_1fohfju">
 +      <bpmndi:BPMNShape id="Activity_0dz3i2m_di" bpmnElement="Activity_0dz3i2m">
 +        <omgdc:Bounds x="350" y="200" width="100" height="80" />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Gateway_1biwend_di" bpmnElement="Gateway_14rc2cm">
 +        <omgdc:Bounds x="655" y="215" width="50" height="50" />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Activity_0px2wls_di" bpmnElement="Activity_0px2wls">
 +        <omgdc:Bounds x="510" y="200" width="100" height="80" />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Activity_0poa1n1_di" bpmnElement="Activity_0poa1n1">
 +        <omgdc:Bounds x="510" y="70" width="100" height="80" />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Activity_08papqw_di" bpmnElement="Activity_08papqw">
 +        <omgdc:Bounds x="510" y="320" width="100" height="80" />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNEdge id="Flow_0yhgogy_di" bpmnElement="Flow_0yhgogy">
 +        <omgdi:waypoint x="450" y="240" />
 +        <omgdi:waypoint x="510" y="240" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_0xdfiky_di" bpmnElement="Flow_0xdfiky">
 +        <omgdi:waypoint x="610" y="240" />
 +        <omgdi:waypoint x="655" y="240" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_17w8cch_di" bpmnElement="Flow_17w8cch">
 +        <omgdi:waypoint x="400" y="200" />
 +        <omgdi:waypoint x="400" y="110" />
 +        <omgdi:waypoint x="510" y="110" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_1erz2cg_di" bpmnElement="Flow_1erz2cg">
 +        <omgdi:waypoint x="400" y="280" />
 +        <omgdi:waypoint x="400" y="360" />
 +        <omgdi:waypoint x="510" y="360" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_1bwpf18_di" bpmnElement="Flow_1bwpf18">
 +        <omgdi:waypoint x="610" y="360" />
 +        <omgdi:waypoint x="680" y="360" />
 +        <omgdi:waypoint x="680" y="265" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_00a1mlo_di" bpmnElement="Flow_00a1mlo">
 +        <omgdi:waypoint x="610" y="110" />
 +        <omgdi:waypoint x="680" y="110" />
 +        <omgdi:waypoint x="680" y="215" />
 +      </bpmndi:BPMNEdge>
 +    </bpmndi:BPMNPlane>
 +  </bpmndi:BPMNDiagram>
 +</definitions>
 +</bpmnio>
 +
 +===== Смотри также =====
 +
 +  * [[ru:rule:do_not_use_conditional_flows]]
 +
 +===== Автор(ы) =====
 +
 + --- //[[user:wjulia|Юлия Вагнер]] 2024-01-22 17:13//