Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
ru:rule:control_branch [2024-01-08 17:10] – внешнее изменение 127.0.0.1ru:rule:control_branch [2024-11-02 13:40] (текущий) – [✘ Как НЕ надо] Anatoly Belaychuk
Строка 1: Строка 1:
-====== Используйте подпроцесс и контрольный поток управления в качестве альтернативы прикрепленному обработчику ======+====== В качестве альтернативы прикрепленному обработчику можно использовать подпроцесс и контрольный поток управления ======
  
-{{tag>subprocess gateway event "attached event"}}+{{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_0kf0077">
 +    <subProcess id="Activity_1tn5n73">
 +      <startEvent id="Event_13ec10q">
 +        <outgoing>Flow_0c37d4z</outgoing>
 +      </startEvent>
 +      <sequenceFlow id="Flow_0c37d4z" sourceRef="Event_13ec10q" targetRef="Gateway_08peucq" />
 +      <parallelGateway id="Gateway_08peucq">
 +        <incoming>Flow_0c37d4z</incoming>
 +        <outgoing>Flow_05uwose</outgoing>
 +        <outgoing>Flow_1yoh8c2</outgoing>
 +      </parallelGateway>
 +      <task id="Activity_1mnvjuz" name="Получить оплату">
 +        <incoming>Flow_05uwose</incoming>
 +        <outgoing>Flow_0xinlw8</outgoing>
 +      </task>
 +      <sequenceFlow id="Flow_05uwose" sourceRef="Gateway_08peucq" targetRef="Activity_1mnvjuz" />
 +      <intermediateCatchEvent id="Event_0r0tew3" name="Срок оплаты">
 +        <incoming>Flow_0tjh6sh</incoming>
 +        <outgoing>Flow_0vj1spf</outgoing>
 +        <timerEventDefinition id="TimerEventDefinition_1a77cp0" />
 +      </intermediateCatchEvent>
 +      <exclusiveGateway id="Gateway_1jxup79">
 +        <incoming>Flow_1yoh8c2</incoming>
 +        <incoming>Flow_1fpmuu7</incoming>
 +        <outgoing>Flow_0tjh6sh</outgoing>
 +      </exclusiveGateway>
 +      <sequenceFlow id="Flow_1yoh8c2" sourceRef="Gateway_08peucq" targetRef="Gateway_1jxup79" />
 +      <sequenceFlow id="Flow_0tjh6sh" sourceRef="Gateway_1jxup79" targetRef="Event_0r0tew3" />
 +      <sequenceFlow id="Flow_0xinlw8" sourceRef="Activity_1mnvjuz" targetRef="Event_1k1tn88" />
 +      <endEvent id="Event_1k1tn88" name="Оплачено">
 +        <incoming>Flow_0xinlw8</incoming>
 +        <terminateEventDefinition id="TerminateEventDefinition_0ku242o" />
 +      </endEvent>
 +      <task id="Activity_12mr8cn" name="Выяснить у клиента причину задержки">
 +        <incoming>Flow_0vj1spf</incoming>
 +        <outgoing>Flow_0v7giyt</outgoing>
 +      </task>
 +      <sequenceFlow id="Flow_0vj1spf" sourceRef="Event_0r0tew3" targetRef="Activity_12mr8cn" />
 +      <exclusiveGateway id="Gateway_0gfb7mo" name="Ждем еще?">
 +        <incoming>Flow_0v7giyt</incoming>
 +        <outgoing>Flow_0xssdyb</outgoing>
 +        <outgoing>Flow_1fpmuu7</outgoing>
 +      </exclusiveGateway>
 +      <sequenceFlow id="Flow_0v7giyt" sourceRef="Activity_12mr8cn" targetRef="Gateway_0gfb7mo" />
 +      <sequenceFlow id="Flow_0xssdyb" name="нет" sourceRef="Gateway_0gfb7mo" targetRef="Event_04k06ga" />
 +      <sequenceFlow id="Flow_1fpmuu7" name="да" sourceRef="Gateway_0gfb7mo" targetRef="Gateway_1jxup79" />
 +      <endEvent id="Event_04k06ga" name="Не оплачено">
 +        <incoming>Flow_0xssdyb</incoming>
 +        <terminateEventDefinition id="TerminateEventDefinition_0jd5cs4" />
 +      </endEvent>
 +    </subProcess>
 +  </process>
 +  <bpmndi:BPMNDiagram id="BpmnDiagram_1">
 +    <bpmndi:BPMNPlane id="BpmnPlane_1" bpmnElement="Process_0kf0077">
 +      <bpmndi:BPMNShape id="Activity_1tn5n73_di" bpmnElement="Activity_1tn5n73" isExpanded="true">
 +        <omgdc:Bounds x="290" y="-620" width="640" height="330" />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Event_13ec10q_di" bpmnElement="Event_13ec10q">
 +        <omgdc:Bounds x="332" y="-388" width="36" height="36" />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Gateway_1ay1ssw_di" bpmnElement="Gateway_08peucq">
 +        <omgdc:Bounds x="405" y="-395" width="50" height="50" />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Activity_1mnvjuz_di" bpmnElement="Activity_1mnvjuz">
 +        <omgdc:Bounds x="490" y="-410" width="100" height="80" />
 +        <bpmndi:BPMNLabel />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Gateway_1jxup79_di" bpmnElement="Gateway_1jxup79" isMarkerVisible="true">
 +        <omgdc:Bounds x="405" y="-505" width="50" height="50" />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Event_1f2yzhy_di" bpmnElement="Event_0r0tew3">
 +        <omgdc:Bounds x="522" y="-498" width="36" height="36" />
 +        <bpmndi:BPMNLabel>
 +          <omgdc:Bounds x="495" y="-455" width="90" height="14" />
 +        </bpmndi:BPMNLabel>
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Activity_12mr8cn_di" bpmnElement="Activity_12mr8cn">
 +        <omgdc:Bounds x="620" y="-520" width="100" height="80" />
 +        <bpmndi:BPMNLabel />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Event_0s7eoii_di" bpmnElement="Event_1k1tn88">
 +        <omgdc:Bounds x="652" y="-388" width="36" height="36" />
 +        <bpmndi:BPMNLabel>
 +          <omgdc:Bounds x="659" y="-345" width="23" height="14" />
 +        </bpmndi:BPMNLabel>
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Gateway_0gfb7mo_di" bpmnElement="Gateway_0gfb7mo" isMarkerVisible="true">
 +        <omgdc:Bounds x="765" y="-505" width="50" height="50" />
 +        <bpmndi:BPMNLabel>
 +          <omgdc:Bounds x="762" y="-448" width="56" height="14" />
 +        </bpmndi:BPMNLabel>
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Event_1kp0poi_di" bpmnElement="Event_04k06ga">
 +        <omgdc:Bounds x="852" y="-498" width="36" height="36" />
 +        <bpmndi:BPMNLabel>
 +          <omgdc:Bounds x="849" y="-455" width="42" height="14" />
 +        </bpmndi:BPMNLabel>
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNEdge id="Flow_0c37d4z_di" bpmnElement="Flow_0c37d4z">
 +        <omgdi:waypoint x="368" y="-370" />
 +        <omgdi:waypoint x="405" y="-370" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_05uwose_di" bpmnElement="Flow_05uwose">
 +        <omgdi:waypoint x="455" y="-370" />
 +        <omgdi:waypoint x="490" y="-370" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_1yoh8c2_di" bpmnElement="Flow_1yoh8c2">
 +        <omgdi:waypoint x="430" y="-395" />
 +        <omgdi:waypoint x="430" y="-455" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_0tjh6sh_di" bpmnElement="Flow_0tjh6sh">
 +        <omgdi:waypoint x="455" y="-480" />
 +        <omgdi:waypoint x="522" y="-480" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_0xinlw8_di" bpmnElement="Flow_0xinlw8">
 +        <omgdi:waypoint x="590" y="-370" />
 +        <omgdi:waypoint x="652" y="-370" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_0vj1spf_di" bpmnElement="Flow_0vj1spf">
 +        <omgdi:waypoint x="558" y="-480" />
 +        <omgdi:waypoint x="620" y="-480" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_0v7giyt_di" bpmnElement="Flow_0v7giyt">
 +        <omgdi:waypoint x="720" y="-480" />
 +        <omgdi:waypoint x="765" y="-480" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_0xssdyb_di" bpmnElement="Flow_0xssdyb">
 +        <omgdi:waypoint x="815" y="-480" />
 +        <omgdi:waypoint x="852" y="-480" />
 +        <bpmndi:BPMNLabel>
 +          <omgdc:Bounds x="827" y="-498" width="13" height="14" />
 +        </bpmndi:BPMNLabel>
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_1fpmuu7_di" bpmnElement="Flow_1fpmuu7">
 +        <omgdi:waypoint x="790" y="-505" />
 +        <omgdi:waypoint x="790" y="-570" />
 +        <omgdi:waypoint x="430" y="-570" />
 +        <omgdi:waypoint x="430" y="-505" />
 +        <bpmndi:BPMNLabel>
 +          <omgdc:Bounds x="602" y="-588" width="17" height="14" />
 +        </bpmndi:BPMNLabel>
 +      </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_0kf0077"> 
 +    <task id="Activity_1mnvjuz" name="Получить оплату"> 
 +      <incoming>Flow_1mqvexf</incoming> 
 +      <outgoing>Flow_0b5yo8b</outgoing> 
 +    </task> 
 +    <startEvent id="Event_0jid81n"> 
 +      <outgoing>Flow_1mqvexf</outgoing> 
 +    </startEvent> 
 +    <sequenceFlow id="Flow_1mqvexf" sourceRef="Event_0jid81n" targetRef="Activity_1mnvjuz" /> 
 +    <endEvent id="Event_1k1tn88" name="Оплачено"> 
 +      <incoming>Flow_0b5yo8b</incoming> 
 +    </endEvent> 
 +    <sequenceFlow id="Flow_0b5yo8b" sourceRef="Activity_1mnvjuz" targetRef="Event_1k1tn88" /> 
 +    <boundaryEvent id="Event_0r0tew3" name="Срок оплаты" attachedToRef="Activity_1mnvjuz"> 
 +      <outgoing>Flow_0xmx632</outgoing> 
 +      <timerEventDefinition id="TimerEventDefinition_0f85qyr" /> 
 +    </boundaryEvent> 
 +    <sequenceFlow id="Flow_0xmx632" sourceRef="Event_0r0tew3" targetRef="Event_04k06ga" /> 
 +    <endEvent id="Event_04k06ga" name="Не оплачено"> 
 +      <incoming>Flow_0xmx632</incoming> 
 +    </endEvent> 
 +  </process> 
 +  <bpmndi:BPMNDiagram id="BpmnDiagram_1"> 
 +    <bpmndi:BPMNPlane id="BpmnPlane_1" bpmnElement="Process_0kf0077"> 
 +      <bpmndi:BPMNShape id="Activity_1mnvjuz_di" bpmnElement="Activity_1mnvjuz"> 
 +        <omgdc:Bounds x="200" y="-160" width="100" height="80" /> 
 +        <bpmndi:BPMNLabel /> 
 +      </bpmndi:BPMNShape> 
 +      <bpmndi:BPMNShape id="Event_0jid81n_di" bpmnElement="Event_0jid81n"> 
 +        <omgdc:Bounds x="112" y="-138" width="36" height="36" /> 
 +      </bpmndi:BPMNShape> 
 +      <bpmndi:BPMNShape id="Event_0ok4f4i_di" bpmnElement="Event_1k1tn88"> 
 +        <omgdc:Bounds x="352" y="-138" width="36" height="36" /> 
 +        <bpmndi:BPMNLabel> 
 +          <omgdc:Bounds x="359" y="-95" width="23" height="14" /> 
 +        </bpmndi:BPMNLabel> 
 +      </bpmndi:BPMNShape> 
 +      <bpmndi:BPMNShape id="Event_0u9z69r_di" bpmnElement="Event_04k06ga"> 
 +        <omgdc:Bounds x="232" y="-8" width="36" height="36" /> 
 +        <bpmndi:BPMNLabel> 
 +          <omgdc:Bounds x="230" y="35" width="41" height="14" /> 
 +        </bpmndi:BPMNLabel> 
 +      </bpmndi:BPMNShape> 
 +      <bpmndi:BPMNShape id="Event_0sh9f2p_di" bpmnElement="Event_0r0tew3"> 
 +        <omgdc:Bounds x="232" y="-98" width="36" height="36" /> 
 +        <bpmndi:BPMNLabel> 
 +          <omgdc:Bounds x="205" y="-55" width="90" height="14" /> 
 +        </bpmndi:BPMNLabel> 
 +      </bpmndi:BPMNShape> 
 +      <bpmndi:BPMNEdge id="Flow_1mqvexf_di" bpmnElement="Flow_1mqvexf"> 
 +        <omgdi:waypoint x="148" y="-120" /> 
 +        <omgdi:waypoint x="200" y="-120" /> 
 +      </bpmndi:BPMNEdge> 
 +      <bpmndi:BPMNEdge id="Flow_0b5yo8b_di" bpmnElement="Flow_0b5yo8b"> 
 +        <omgdi:waypoint x="300" y="-120" /> 
 +        <omgdi:waypoint x="352" y="-120" /> 
 +      </bpmndi:BPMNEdge> 
 +      <bpmndi:BPMNEdge id="Flow_0xmx632_di" bpmnElement="Flow_0xmx632"> 
 +        <omgdi:waypoint x="250" y="-62" /> 
 +        <omgdi:waypoint x="250" y="-8" /> 
 +      </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_0kf0077"> 
 +    <task id="Activity_1mnvjuz" name="Получить оплату"> 
 +      <incoming>Flow_1mqvexf</incoming> 
 +      <outgoing>Flow_0b5yo8b</outgoing> 
 +    </task> 
 +    <startEvent id="Event_0jid81n"> 
 +      <outgoing>Flow_1mqvexf</outgoing> 
 +    </startEvent> 
 +    <sequenceFlow id="Flow_1mqvexf" sourceRef="Event_0jid81n" targetRef="Activity_1mnvjuz" /> 
 +    <sequenceFlow id="Flow_1fkn8r9" sourceRef="Event_0r0tew3" targetRef="Activity_1skmlnn" /> 
 +    <endEvent id="Event_1k1tn88" name="Оплачено"> 
 +      <incoming>Flow_0b5yo8b</incoming> 
 +      <terminateEventDefinition id="TerminateEventDefinition_0jd5cs4" /> 
 +    </endEvent> 
 +    <sequenceFlow id="Flow_0b5yo8b" sourceRef="Activity_1mnvjuz" targetRef="Event_1k1tn88" /> 
 +    <boundaryEvent id="Event_0r0tew3" name="Срок оплаты" cancelActivity="false" attachedToRef="Activity_1mnvjuz"> 
 +      <outgoing>Flow_1fkn8r9</outgoing> 
 +      <timerEventDefinition id="TimerEventDefinition_1u44tv6" /> 
 +    </boundaryEvent> 
 +    <task id="Activity_1skmlnn" name="Выяснить у клиента причину задержки"> 
 +      <incoming>Flow_1fkn8r9</incoming> 
 +      <outgoing>Flow_0gsynar</outgoing> 
 +    </task> 
 +    <sequenceFlow id="Flow_0gsynar" sourceRef="Activity_1skmlnn" targetRef="Gateway_1sygjo0" /> 
 +    <exclusiveGateway id="Gateway_1sygjo0" name="Ждать еще?"> 
 +      <incoming>Flow_0gsynar</incoming> 
 +      <outgoing>Flow_0jzxjdu</outgoing> 
 +      <outgoing>Flow_16a0qq5</outgoing> 
 +    </exclusiveGateway> 
 +    <sequenceFlow id="Flow_0jzxjdu" name="нет" sourceRef="Gateway_1sygjo0" targetRef="Event_04k06ga" /> 
 +    <endEvent id="Event_04k06ga" name="Не оплачено"> 
 +      <incoming>Flow_0jzxjdu</incoming> 
 +      <terminateEventDefinition id="TerminateEventDefinition_1uvti5o" /> 
 +    </endEvent> 
 +    <endEvent id="Event_1ltc3ao" name="Платеж просрочен"> 
 +      <incoming>Flow_16a0qq5</incoming> 
 +    </endEvent> 
 +    <sequenceFlow id="Flow_16a0qq5" name="да" sourceRef="Gateway_1sygjo0" targetRef="Event_1ltc3ao" /> 
 +  </process> 
 +  <bpmndi:BPMNDiagram id="BpmnDiagram_1"> 
 +    <bpmndi:BPMNPlane id="BpmnPlane_1" bpmnElement="Process_0kf0077"> 
 +      <bpmndi:BPMNShape id="Activity_1mnvjuz_di" bpmnElement="Activity_1mnvjuz"> 
 +        <omgdc:Bounds x="200" y="-160" width="100" height="80" /> 
 +        <bpmndi:BPMNLabel /> 
 +      </bpmndi:BPMNShape> 
 +      <bpmndi:BPMNShape id="Event_0jid81n_di" bpmnElement="Event_0jid81n"> 
 +        <omgdc:Bounds x="112" y="-138" width="36" height="36" /> 
 +      </bpmndi:BPMNShape> 
 +      <bpmndi:BPMNShape id="Event_0ok4f4i_di" bpmnElement="Event_1k1tn88"> 
 +        <omgdc:Bounds x="352" y="-138" width="36" height="36" /> 
 +        <bpmndi:BPMNLabel> 
 +          <omgdc:Bounds x="359" y="-95" width="23" height="14" /> 
 +        </bpmndi:BPMNLabel> 
 +      </bpmndi:BPMNShape> 
 +      <bpmndi:BPMNShape id="Activity_1skmlnn_di" bpmnElement="Activity_1skmlnn"> 
 +        <omgdc:Bounds x="200" y="-10" width="100" height="80" /> 
 +        <bpmndi:BPMNLabel /> 
 +      </bpmndi:BPMNShape> 
 +      <bpmndi:BPMNShape id="Gateway_1sygjo0_di" bpmnElement="Gateway_1sygjo0" isMarkerVisible="true"> 
 +        <omgdc:Bounds x="345" y="5" width="50" height="50" /> 
 +        <bpmndi:BPMNLabel> 
 +          <omgdc:Bounds x="342" y="-19" width="55" height="14" /> 
 +        </bpmndi:BPMNLabel> 
 +      </bpmndi:BPMNShape> 
 +      <bpmndi:BPMNShape id="Event_08w64xf_di" bpmnElement="Event_04k06ga"> 
 +        <omgdc:Bounds x="452" y="12" width="36" height="36" /> 
 +        <bpmndi:BPMNLabel> 
 +          <omgdc:Bounds x="450" y="55" width="41" height="14" /> 
 +        </bpmndi:BPMNLabel> 
 +      </bpmndi:BPMNShape> 
 +      <bpmndi:BPMNShape id="Event_1ltc3ao_di" bpmnElement="Event_1ltc3ao"> 
 +        <omgdc:Bounds x="352" y="112" width="36" height="36" /> 
 +        <bpmndi:BPMNLabel> 
 +          <omgdc:Bounds x="349" y="155" width="43" height="14" /> 
 +        </bpmndi:BPMNLabel> 
 +      </bpmndi:BPMNShape> 
 +      <bpmndi:BPMNShape id="Event_0am8is2_di" bpmnElement="Event_0r0tew3"> 
 +        <omgdc:Bounds x="232" y="-98" width="36" height="36" /> 
 +        <bpmndi:BPMNLabel> 
 +          <omgdc:Bounds x="205" y="-55" width="90" height="14" /> 
 +        </bpmndi:BPMNLabel> 
 +      </bpmndi:BPMNShape> 
 +      <bpmndi:BPMNEdge id="Flow_1mqvexf_di" bpmnElement="Flow_1mqvexf"> 
 +        <omgdi:waypoint x="148" y="-120" /> 
 +        <omgdi:waypoint x="200" y="-120" /> 
 +      </bpmndi:BPMNEdge> 
 +      <bpmndi:BPMNEdge id="Flow_1fkn8r9_di" bpmnElement="Flow_1fkn8r9"> 
 +        <omgdi:waypoint x="250" y="-62" /> 
 +        <omgdi:waypoint x="250" y="-10" /> 
 +      </bpmndi:BPMNEdge> 
 +      <bpmndi:BPMNEdge id="Flow_0b5yo8b_di" bpmnElement="Flow_0b5yo8b"> 
 +        <omgdi:waypoint x="300" y="-120" /> 
 +        <omgdi:waypoint x="352" y="-120" /> 
 +      </bpmndi:BPMNEdge> 
 +      <bpmndi:BPMNEdge id="Flow_0gsynar_di" bpmnElement="Flow_0gsynar"> 
 +        <omgdi:waypoint x="300" y="30" /> 
 +        <omgdi:waypoint x="345" y="30" /> 
 +      </bpmndi:BPMNEdge> 
 +      <bpmndi:BPMNEdge id="Flow_0jzxjdu_di" bpmnElement="Flow_0jzxjdu"> 
 +        <omgdi:waypoint x="395" y="30" /> 
 +        <omgdi:waypoint x="452" y="30" /> 
 +        <bpmndi:BPMNLabel> 
 +          <omgdc:Bounds x="417" y="12" width="13" height="14" /> 
 +        </bpmndi:BPMNLabel> 
 +      </bpmndi:BPMNEdge> 
 +      <bpmndi:BPMNEdge id="Flow_16a0qq5_di" bpmnElement="Flow_16a0qq5"> 
 +        <omgdi:waypoint x="370" y="55" /> 
 +        <omgdi:waypoint x="370" y="112" /> 
 +        <bpmndi:BPMNLabel> 
 +          <omgdc:Bounds x="377" y="78" width="17" height="14" /> 
 +        </bpmndi:BPMNLabel> 
 +      </bpmndi:BPMNEdge> 
 +    </bpmndi:BPMNPlane> 
 +  </bpmndi:BPMNDiagram> 
 +</definitions> 
 +</bpmnio> 
 +===== Примечания =====
  
-Исключения из указанного выше правила+  - Прикрепленный обработчик разрывает логику подпроцесса: часть логики оказывается внутри подпроцесса, часть - снаружи. Рассматриваемая альтернативная техника лишена этого недостатка. 
 +  - Как правило, предпочтительно [[ru:rule:collapsed_subprocess | изображать подпроцесс в свернутом виде ]], чтобы абстрагироваться от его внутреннего устройства, но в данном случае есть смысл показать подпроцесс развернутым, чтобы прояснить логику процесса. 
 +  - Как правило, [[ru:rule:explicit_parallel_split| из действия или события не должно выходить несколько потоков управления ]], но в данном случае допустимо изобразить основную и контрольную ветви выходящими непосредственно из стартового события:
  
 +<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_0kf0077">
 +    <subProcess id="Activity_1tn5n73">
 +      <startEvent id="Event_13ec10q">
 +        <outgoing>Flow_1qbujp7</outgoing>
 +        <outgoing>Flow_1v8e8eg</outgoing>
 +      </startEvent>
 +      <task id="Activity_1mnvjuz" name="Получить оплату">
 +        <incoming>Flow_1qbujp7</incoming>
 +        <outgoing>Flow_0xinlw8</outgoing>
 +      </task>
 +      <intermediateCatchEvent id="Event_0r0tew3" name="Срок оплаты">
 +        <incoming>Flow_0tjh6sh</incoming>
 +        <outgoing>Flow_0vj1spf</outgoing>
 +        <timerEventDefinition id="TimerEventDefinition_1a77cp0" />
 +      </intermediateCatchEvent>
 +      <exclusiveGateway id="Gateway_1jxup79">
 +        <incoming>Flow_1fpmuu7</incoming>
 +        <incoming>Flow_1v8e8eg</incoming>
 +        <outgoing>Flow_0tjh6sh</outgoing>
 +      </exclusiveGateway>
 +      <sequenceFlow id="Flow_0tjh6sh" sourceRef="Gateway_1jxup79" targetRef="Event_0r0tew3" />
 +      <sequenceFlow id="Flow_0xinlw8" sourceRef="Activity_1mnvjuz" targetRef="Event_1k1tn88" />
 +      <endEvent id="Event_1k1tn88" name="Оплачено">
 +        <incoming>Flow_0xinlw8</incoming>
 +        <terminateEventDefinition id="TerminateEventDefinition_0ku242o" />
 +      </endEvent>
 +      <task id="Activity_12mr8cn" name="Выяснить у клиента причину задержки">
 +        <incoming>Flow_0vj1spf</incoming>
 +        <outgoing>Flow_0v7giyt</outgoing>
 +      </task>
 +      <sequenceFlow id="Flow_0vj1spf" sourceRef="Event_0r0tew3" targetRef="Activity_12mr8cn" />
 +      <exclusiveGateway id="Gateway_0gfb7mo" name="Ждать еще?">
 +        <incoming>Flow_0v7giyt</incoming>
 +        <outgoing>Flow_0xssdyb</outgoing>
 +        <outgoing>Flow_1fpmuu7</outgoing>
 +      </exclusiveGateway>
 +      <sequenceFlow id="Flow_0v7giyt" sourceRef="Activity_12mr8cn" targetRef="Gateway_0gfb7mo" />
 +      <sequenceFlow id="Flow_0xssdyb" name="нет" sourceRef="Gateway_0gfb7mo" targetRef="Event_04k06ga" />
 +      <sequenceFlow id="Flow_1fpmuu7" name="да" sourceRef="Gateway_0gfb7mo" targetRef="Gateway_1jxup79" />
 +      <endEvent id="Event_04k06ga" name="Не оплачено">
 +        <incoming>Flow_0xssdyb</incoming>
 +        <terminateEventDefinition id="TerminateEventDefinition_0jd5cs4" />
 +      </endEvent>
 +      <sequenceFlow id="Flow_1qbujp7" sourceRef="Event_13ec10q" targetRef="Activity_1mnvjuz" />
 +      <sequenceFlow id="Flow_1v8e8eg" sourceRef="Event_13ec10q" targetRef="Gateway_1jxup79" />
 +    </subProcess>
 +  </process>
 +  <bpmndi:BPMNDiagram id="BpmnDiagram_1">
 +    <bpmndi:BPMNPlane id="BpmnPlane_1" bpmnElement="Process_0kf0077">
 +      <bpmndi:BPMNShape id="Activity_1tn5n73_di" bpmnElement="Activity_1tn5n73" isExpanded="true">
 +        <omgdc:Bounds x="350" y="-620" width="580" height="330" />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Activity_1mnvjuz_di" bpmnElement="Activity_1mnvjuz">
 +        <omgdc:Bounds x="490" y="-410" width="100" height="80" />
 +        <bpmndi:BPMNLabel />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Event_1f2yzhy_di" bpmnElement="Event_0r0tew3">
 +        <omgdc:Bounds x="522" y="-498" width="36" height="36" />
 +        <bpmndi:BPMNLabel>
 +          <omgdc:Bounds x="495" y="-455" width="90" height="14" />
 +        </bpmndi:BPMNLabel>
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Event_0s7eoii_di" bpmnElement="Event_1k1tn88">
 +        <omgdc:Bounds x="652" y="-388" width="36" height="36" />
 +        <bpmndi:BPMNLabel>
 +          <omgdc:Bounds x="659" y="-345" width="23" height="14" />
 +        </bpmndi:BPMNLabel>
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Activity_12mr8cn_di" bpmnElement="Activity_12mr8cn">
 +        <omgdc:Bounds x="620" y="-520" width="100" height="80" />
 +        <bpmndi:BPMNLabel />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Gateway_0gfb7mo_di" bpmnElement="Gateway_0gfb7mo" isMarkerVisible="true">
 +        <omgdc:Bounds x="765" y="-505" width="50" height="50" />
 +        <bpmndi:BPMNLabel>
 +          <omgdc:Bounds x="762" y="-448" width="56" height="14" />
 +        </bpmndi:BPMNLabel>
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Event_1kp0poi_di" bpmnElement="Event_04k06ga">
 +        <omgdc:Bounds x="852" y="-498" width="36" height="36" />
 +        <bpmndi:BPMNLabel>
 +          <omgdc:Bounds x="849" y="-455" width="42" height="14" />
 +        </bpmndi:BPMNLabel>
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Event_13ec10q_di" bpmnElement="Event_13ec10q">
 +        <omgdc:Bounds x="402" y="-388" width="36" height="36" />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNShape id="Gateway_1jxup79_di" bpmnElement="Gateway_1jxup79" isMarkerVisible="true">
 +        <omgdc:Bounds x="395" y="-505" width="50" height="50" />
 +      </bpmndi:BPMNShape>
 +      <bpmndi:BPMNEdge id="Flow_0tjh6sh_di" bpmnElement="Flow_0tjh6sh">
 +        <omgdi:waypoint x="445" y="-480" />
 +        <omgdi:waypoint x="522" y="-480" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_0xinlw8_di" bpmnElement="Flow_0xinlw8">
 +        <omgdi:waypoint x="590" y="-370" />
 +        <omgdi:waypoint x="652" y="-370" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_0vj1spf_di" bpmnElement="Flow_0vj1spf">
 +        <omgdi:waypoint x="558" y="-480" />
 +        <omgdi:waypoint x="620" y="-480" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_0v7giyt_di" bpmnElement="Flow_0v7giyt">
 +        <omgdi:waypoint x="720" y="-480" />
 +        <omgdi:waypoint x="765" y="-480" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_0xssdyb_di" bpmnElement="Flow_0xssdyb">
 +        <omgdi:waypoint x="815" y="-480" />
 +        <omgdi:waypoint x="852" y="-480" />
 +        <bpmndi:BPMNLabel>
 +          <omgdc:Bounds x="827" y="-498" width="13" height="14" />
 +        </bpmndi:BPMNLabel>
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_1fpmuu7_di" bpmnElement="Flow_1fpmuu7">
 +        <omgdi:waypoint x="790" y="-505" />
 +        <omgdi:waypoint x="790" y="-570" />
 +        <omgdi:waypoint x="420" y="-570" />
 +        <omgdi:waypoint x="420" y="-505" />
 +        <bpmndi:BPMNLabel>
 +          <omgdc:Bounds x="597" y="-588" width="17" height="14" />
 +        </bpmndi:BPMNLabel>
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_1qbujp7_di" bpmnElement="Flow_1qbujp7">
 +        <omgdi:waypoint x="438" y="-370" />
 +        <omgdi:waypoint x="490" y="-370" />
 +      </bpmndi:BPMNEdge>
 +      <bpmndi:BPMNEdge id="Flow_1v8e8eg_di" bpmnElement="Flow_1v8e8eg">
 +        <omgdi:waypoint x="420" y="-388" />
 +        <omgdi:waypoint x="420" y="-455" />
 +      </bpmndi:BPMNEdge>
 +    </bpmndi:BPMNPlane>
 +  </bpmndi:BPMNDiagram>
 +</definitions>
 +</bpmnio>
 ===== Смотри также ===== ===== Смотри также =====
  
-Тут ссылки на страницы со схожим контентом (этот раздел опционален) +  * [[ru:rule:event_gateway_warning]]
 ===== Автор(ы) ===== ===== Автор(ы) =====
  
-Тут подпись + --- //[[user:bell|Anatoly Belaychuk]] 2024-01-08 18:53//
  • Последнее изменение: 2024-01-08 17:10
  • 127.0.0.1