После освоения атомов нотации — потоков, шлюзов, событий (06.02.01 Потоки, шлюзы, события) и организационного слоя (06.02.02 Пулы, дорожки и артефакты) — на проекте нужно собирать из них целостные процессы. Здесь — композиционные схемы BPMN (idioms): повторяющиеся конструкции для согласования, тайм-аутов, параллелизма, межучастникового обмена. Это не 01.06 Принципы и паттерны проектирования решений в смысле архитектуры ПО, а готовые фрагменты потока управления. Полная семантика шлюзов и событий — в 06.02.01 Потоки, шлюзы, события; обзор нотации для SA — в 03.04.01 BPMN 2.0 - введение и основы. Схемы ниже — BPMN 2.0: у задач указан тип, прерывающее граничное событие помечено cancelActivity="true", непрерывающее — false. Линия от граничного события в обоих случаях sequence flow; прерывание задаёт атрибут события, а не стиль стрелки. Семантика — в 06.02.01 Потоки, шлюзы, события.

1. Суть темы

Эта заметка — третий уровень ветки 06.02: не «что такое XOR», а как из элементов собрать типовой процесс. Порядок чтения: 03.04.01 BPMN 2.0 - введение и основы (если BPMN новый) → 06.02.01 Потоки, шлюзы, события → 06.02.02 Пулы, дорожки и артефакты → эта статья → 06.02.04 Работа с Camunda для исполнения.

Для SA достаточно 03.04.01 BPMN 2.0 - введение и основы, если нужен обзор нотации на уровне BRD и collaboration-диаграмм без исполнения в движке. Ветку 06.02.* имеет смысл проходить, когда модель должна быть исполняемой, проходит строгое ревью по Method & Style или уходит в 06.02.04 Работа с Camunda.

УровеньГдеЧто даёт
Обзор нотации, виды задач03.04.01 BPMN 2.0 - введение и основыТочка входа SA, общая карта BPMN
Семантика потоков, шлюзов, событий06.02.01 Потоки, шлюзы, событияПравила токенов, маркеры, boundary events
Пулы, дорожки, данные06.02.02 Пулы, дорожки и артефактыCollaboration, message flow, артефакты
Типовые схемы сборкиэта заметкаКаталог паттернов и anti-patterns
Исполнение в движке06.02.04 Работа с CamundaJob workers, incidents, таймеры в runtime

Паттерны ниже согласованы с Workflow Patterns Initiative (WPI): control-flow idioms BPMN имеют прямые аналоги в каталоге WCP. Каталог WPI шире нотации — не каждый WCP рисуется одним элементом BPMN.

Паттерн статьиWCPЭлемент BPMN
2.1 SequenceWCP1sequence flow между задачами
2.2 XOR-split / joinWCP4, WCP5exclusive gateway
2.3 AND-split / joinWCP2, WCP3parallel gateway
2.4 OR-split / joinWCP6, WCP7inclusive gateway
2.5 Standard loopWCP21loop characteristics на задаче
2.5 Цикл через шлюзWCP22обратный sequence flow
2.6 Timeout, 2.8 ErrorWCP19boundary interrupting event
2.9 CompensationWCP27transaction subprocess + compensation events
2.13 Event-based gatewayWCP38deferred choice через catch-события
2.15 MI parallel / sequentialWCP12, WCP13multi-instance task
2.17 TerminateWCP43terminate end event

WCP9 (structured discriminator) в BPMN реализуется обходными путями — XOR-merge после parallel split; прямого элемента нет. Подробная семантика discriminator — на workflowpatterns.com.

2. Ключевые понятия

Ниже — наиболее частые схемы на enterprise-проектах. Контекст данных (data object, input/output на задаче) — 06.02.02 Пулы, дорожки и артефакты; здесь не повторяем.

П. 2.1–2.4 — базовые шлюзы; полная семантика токенов и таблицы сравнения — в 06.02.01 Потоки, шлюзы, события. Здесь — компактные напоминания для каталога; составной пример комбинации — в п. 2.4a.

2.1 Последовательный процесс (Sequence)

Линейная цепочка без ветвлений. Семантика — 06.02.01 Потоки, шлюзы, события.

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_seq" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0">
  <bpmn:collaboration id="Collaboration_seq"><bpmn:participant id="shop" name="Магазин" processRef="process_seq" /></bpmn:collaboration>
  <bpmn:process id="process_seq" name="Магазин" isExecutable="false"><bpmn:laneSet id="LaneSet_shop"><bpmn:lane id="ops" name="1. Оператор"><bpmn:flowNodeRef>q_s</bpmn:flowNodeRef><bpmn:flowNodeRef>q_a</bpmn:flowNodeRef><bpmn:flowNodeRef>q_b</bpmn:flowNodeRef><bpmn:flowNodeRef>q_e</bpmn:flowNodeRef></bpmn:lane></bpmn:laneSet><bpmn:startEvent id="q_s" name="1.1"><bpmn:outgoing>Flow_0</bpmn:outgoing></bpmn:startEvent><bpmn:userTask id="q_a" name="1.2 Принять&#10;заявку"><bpmn:incoming>Flow_0</bpmn:incoming><bpmn:outgoing>Flow_1</bpmn:outgoing></bpmn:userTask><bpmn:serviceTask id="q_b" name="1.3 Записать&#10;в реестр"><bpmn:incoming>Flow_1</bpmn:incoming><bpmn:outgoing>Flow_2</bpmn:outgoing></bpmn:serviceTask><bpmn:endEvent id="q_e" name="1.4"><bpmn:incoming>Flow_2</bpmn:incoming></bpmn:endEvent><bpmn:sequenceFlow id="Flow_0" sourceRef="q_s" targetRef="q_a" /><bpmn:sequenceFlow id="Flow_1" sourceRef="q_a" targetRef="q_b" /><bpmn:sequenceFlow id="Flow_2" sourceRef="q_b" targetRef="q_e" /></bpmn:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_seq">
    <bpmndi:BPMNPlane id="BPMNPlane_seq" bpmnElement="Collaboration_seq">
      <bpmndi:BPMNShape id="shop_di" bpmnElement="shop" isHorizontal="true"><dc:Bounds x="80" y="40" width="826" height="166" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ops_di" bpmnElement="ops" isHorizontal="true"><dc:Bounds x="110" y="40" width="796" height="166" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="q_s_di" bpmnElement="q_s"><dc:Bounds x="153" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="158" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="q_a_di" bpmnElement="q_a"><dc:Bounds x="280" y="86" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="q_b_di" bpmnElement="q_b"><dc:Bounds x="544" y="86" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="q_e_di" bpmnElement="q_e"><dc:Bounds x="815" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="820" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="Flow_0_di" bpmnElement="Flow_0"><di:waypoint x="189" y="126" /><di:waypoint x="280" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1"><di:waypoint x="460" y="126" /><di:waypoint x="544" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_2_di" bpmnElement="Flow_2"><di:waypoint x="724" y="126" /><di:waypoint x="815" y="126" /></bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>

2.2 Простое ветвление (XOR-split / XOR-join)

Один путь из нескольких по условию.

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_xor" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0">
  <bpmn:collaboration id="Collaboration_xor"><bpmn:participant id="shop" name="Магазин" processRef="process_xor" /></bpmn:collaboration>
  <bpmn:process id="process_xor" name="Магазин" isExecutable="false"><bpmn:laneSet id="LaneSet_shop"><bpmn:lane id="ops" name="1. Оператор"><bpmn:flowNodeRef>x_s</bpmn:flowNodeRef><bpmn:flowNodeRef>x_g</bpmn:flowNodeRef><bpmn:flowNodeRef>x_ok</bpmn:flowNodeRef><bpmn:flowNodeRef>x_ask</bpmn:flowNodeRef><bpmn:flowNodeRef>x_j</bpmn:flowNodeRef><bpmn:flowNodeRef>x_e</bpmn:flowNodeRef></bpmn:lane></bpmn:laneSet><bpmn:startEvent id="x_s" name="1.1"><bpmn:outgoing>Flow_0</bpmn:outgoing></bpmn:startEvent><bpmn:exclusiveGateway id="x_g" name="1.2 Сумма&#10;выше лимита?"><bpmn:incoming>Flow_0</bpmn:incoming><bpmn:outgoing>Flow_1</bpmn:outgoing><bpmn:outgoing>Flow_2</bpmn:outgoing></bpmn:exclusiveGateway><bpmn:serviceTask id="x_ok" name="1.3 Провести"><bpmn:incoming>Flow_1</bpmn:incoming><bpmn:outgoing>Flow_3</bpmn:outgoing></bpmn:serviceTask><bpmn:userTask id="x_ask" name="1.4 Согласовать"><bpmn:incoming>Flow_2</bpmn:incoming><bpmn:outgoing>Flow_4</bpmn:outgoing></bpmn:userTask><bpmn:exclusiveGateway id="x_j" name="1.5"><bpmn:incoming>Flow_3</bpmn:incoming><bpmn:incoming>Flow_4</bpmn:incoming><bpmn:outgoing>Flow_5</bpmn:outgoing></bpmn:exclusiveGateway><bpmn:endEvent id="x_e" name="1.6"><bpmn:incoming>Flow_5</bpmn:incoming></bpmn:endEvent><bpmn:sequenceFlow id="Flow_0" sourceRef="x_s" targetRef="x_g" /><bpmn:sequenceFlow id="Flow_1" name="нет" sourceRef="x_g" targetRef="x_ok" /><bpmn:sequenceFlow id="Flow_2" name="да" sourceRef="x_g" targetRef="x_ask" /><bpmn:sequenceFlow id="Flow_3" sourceRef="x_ok" targetRef="x_j" /><bpmn:sequenceFlow id="Flow_4" sourceRef="x_ask" targetRef="x_j" /><bpmn:sequenceFlow id="Flow_5" sourceRef="x_j" targetRef="x_e" /></bpmn:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_xor">
    <bpmndi:BPMNPlane id="BPMNPlane_xor" bpmnElement="Collaboration_xor">
      <bpmndi:BPMNShape id="shop_di" bpmnElement="shop" isHorizontal="true"><dc:Bounds x="80" y="40" width="830" height="324" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ops_di" bpmnElement="ops" isHorizontal="true"><dc:Bounds x="110" y="40" width="800" height="324" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="x_s_di" bpmnElement="x_s"><dc:Bounds x="153" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="158" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="x_g_di" bpmnElement="x_g" isMarkerVisible="true"><dc:Bounds x="280" y="101" width="50" height="50" /><bpmndi:BPMNLabel><dc:Bounds x="263" y="55" width="85" height="28" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="x_ok_di" bpmnElement="x_ok"><dc:Bounds x="414" y="86" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="x_ask_di" bpmnElement="x_ask"><dc:Bounds x="414" y="244" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="x_j_di" bpmnElement="x_j" isMarkerVisible="true"><dc:Bounds x="678" y="101" width="50" height="50" /><bpmndi:BPMNLabel><dc:Bounds x="690" y="69" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="x_e_di" bpmnElement="x_e"><dc:Bounds x="819" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="824" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="Flow_0_di" bpmnElement="Flow_0"><di:waypoint x="189" y="126" /><di:waypoint x="280" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1"><di:waypoint x="330" y="126" /><di:waypoint x="414" y="126" /><bpmndi:BPMNLabel><dc:Bounds x="338" y="108" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_2_di" bpmnElement="Flow_2"><di:waypoint x="305" y="151" /><di:waypoint x="305" y="284" /><di:waypoint x="414" y="284" /><bpmndi:BPMNLabel><dc:Bounds x="313" y="157" width="24" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_3_di" bpmnElement="Flow_3"><di:waypoint x="594" y="126" /><di:waypoint x="678" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_4_di" bpmnElement="Flow_4"><di:waypoint x="594" y="284" /><di:waypoint x="703" y="284" /><di:waypoint x="703" y="151" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_5_di" bpmnElement="Flow_5"><di:waypoint x="728" y="126" /><di:waypoint x="819" y="126" /></bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>

Слияние XOR: после split выполняется ровно одна ветка — неявное слияние в одну задачу допустимо в симметричных structured-диаграммах; на исполняемых моделях — явный XOR-merge, как на схеме.

2.3 Параллельное выполнение (AND-split / AND-join)

Split и merge — оба параллельные (+). Без AND-merge поток может уйти до завершения одной из веток.

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_and" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0">
  <bpmn:collaboration id="Collaboration_and"><bpmn:participant id="shop" name="Магазин" processRef="process_and" /></bpmn:collaboration>
  <bpmn:process id="process_and" name="Магазин" isExecutable="false"><bpmn:laneSet id="LaneSet_shop"><bpmn:lane id="ops" name="1. Исполнение"><bpmn:flowNodeRef>n_s</bpmn:flowNodeRef><bpmn:flowNodeRef>n_g</bpmn:flowNodeRef><bpmn:flowNodeRef>n_a</bpmn:flowNodeRef><bpmn:flowNodeRef>n_b</bpmn:flowNodeRef><bpmn:flowNodeRef>n_j</bpmn:flowNodeRef><bpmn:flowNodeRef>n_c</bpmn:flowNodeRef><bpmn:flowNodeRef>n_e</bpmn:flowNodeRef></bpmn:lane></bpmn:laneSet><bpmn:startEvent id="n_s" name="1.1"><bpmn:outgoing>Flow_0</bpmn:outgoing></bpmn:startEvent><bpmn:parallelGateway id="n_g" name="1.2"><bpmn:incoming>Flow_0</bpmn:incoming><bpmn:outgoing>Flow_1</bpmn:outgoing><bpmn:outgoing>Flow_2</bpmn:outgoing></bpmn:parallelGateway><bpmn:manualTask id="n_a" name="1.3 Упаковать"><bpmn:incoming>Flow_1</bpmn:incoming><bpmn:outgoing>Flow_3</bpmn:outgoing></bpmn:manualTask><bpmn:serviceTask id="n_b" name="1.4 Выставить&#10;счёт"><bpmn:incoming>Flow_2</bpmn:incoming><bpmn:outgoing>Flow_4</bpmn:outgoing></bpmn:serviceTask><bpmn:parallelGateway id="n_j" name="1.5"><bpmn:incoming>Flow_3</bpmn:incoming><bpmn:incoming>Flow_4</bpmn:incoming><bpmn:outgoing>Flow_5</bpmn:outgoing></bpmn:parallelGateway><bpmn:sendTask id="n_c" name="1.6 Отгрузить"><bpmn:incoming>Flow_5</bpmn:incoming><bpmn:outgoing>Flow_6</bpmn:outgoing></bpmn:sendTask><bpmn:endEvent id="n_e" name="1.7"><bpmn:incoming>Flow_6</bpmn:incoming></bpmn:endEvent><bpmn:sequenceFlow id="Flow_0" sourceRef="n_s" targetRef="n_g" /><bpmn:sequenceFlow id="Flow_1" sourceRef="n_g" targetRef="n_a" /><bpmn:sequenceFlow id="Flow_2" sourceRef="n_g" targetRef="n_b" /><bpmn:sequenceFlow id="Flow_3" sourceRef="n_a" targetRef="n_j" /><bpmn:sequenceFlow id="Flow_4" sourceRef="n_b" targetRef="n_j" /><bpmn:sequenceFlow id="Flow_5" sourceRef="n_j" targetRef="n_c" /><bpmn:sequenceFlow id="Flow_6" sourceRef="n_c" targetRef="n_e" /></bpmn:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_and">
    <bpmndi:BPMNPlane id="BPMNPlane_and" bpmnElement="Collaboration_and">
      <bpmndi:BPMNShape id="shop_di" bpmnElement="shop" isHorizontal="true"><dc:Bounds x="80" y="40" width="1094" height="324" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ops_di" bpmnElement="ops" isHorizontal="true"><dc:Bounds x="110" y="40" width="1064" height="324" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="n_s_di" bpmnElement="n_s"><dc:Bounds x="153" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="158" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="n_g_di" bpmnElement="n_g" isMarkerVisible="true"><dc:Bounds x="280" y="101" width="50" height="50" /><bpmndi:BPMNLabel><dc:Bounds x="292" y="69" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="n_a_di" bpmnElement="n_a"><dc:Bounds x="414" y="86" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="n_b_di" bpmnElement="n_b"><dc:Bounds x="414" y="244" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="n_j_di" bpmnElement="n_j" isMarkerVisible="true"><dc:Bounds x="678" y="101" width="50" height="50" /><bpmndi:BPMNLabel><dc:Bounds x="690" y="69" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="n_c_di" bpmnElement="n_c"><dc:Bounds x="812" y="86" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="n_e_di" bpmnElement="n_e"><dc:Bounds x="1083" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="1088" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="Flow_0_di" bpmnElement="Flow_0"><di:waypoint x="189" y="126" /><di:waypoint x="280" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1"><di:waypoint x="330" y="126" /><di:waypoint x="414" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_2_di" bpmnElement="Flow_2"><di:waypoint x="305" y="151" /><di:waypoint x="305" y="284" /><di:waypoint x="414" y="284" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_3_di" bpmnElement="Flow_3"><di:waypoint x="594" y="126" /><di:waypoint x="678" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_4_di" bpmnElement="Flow_4"><di:waypoint x="594" y="284" /><di:waypoint x="703" y="284" /><di:waypoint x="703" y="151" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_5_di" bpmnElement="Flow_5"><di:waypoint x="728" y="126" /><di:waypoint x="812" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_6_di" bpmnElement="Flow_6"><di:waypoint x="992" y="126" /><di:waypoint x="1083" y="126" /></bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>

2.4 Условный параллелизм (OR-split / OR-join)

OR активирует подмножество исходящих путей по условиям на sequence flow. OR-merge ждёт завершения только активированных веток.

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_or" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0">
  <bpmn:collaboration id="Collaboration_or"><bpmn:participant id="shop" name="Магазин" processRef="process_or" /></bpmn:collaboration>
  <bpmn:process id="process_or" name="Магазин" isExecutable="false"><bpmn:laneSet id="LaneSet_shop"><bpmn:lane id="ops" name="1. Контроль"><bpmn:flowNodeRef>o_s</bpmn:flowNodeRef><bpmn:flowNodeRef>o_g</bpmn:flowNodeRef><bpmn:flowNodeRef>o_a</bpmn:flowNodeRef><bpmn:flowNodeRef>o_b</bpmn:flowNodeRef><bpmn:flowNodeRef>o_j</bpmn:flowNodeRef><bpmn:flowNodeRef>o_e</bpmn:flowNodeRef></bpmn:lane></bpmn:laneSet><bpmn:startEvent id="o_s" name="1.1"><bpmn:outgoing>Flow_0</bpmn:outgoing></bpmn:startEvent><bpmn:inclusiveGateway id="o_g" name="1.2 Какие&#10;проверки?"><bpmn:incoming>Flow_0</bpmn:incoming><bpmn:outgoing>Flow_1</bpmn:outgoing><bpmn:outgoing>Flow_2</bpmn:outgoing></bpmn:inclusiveGateway><bpmn:userTask id="o_a" name="1.3 Аудит&#10;суммы"><bpmn:incoming>Flow_1</bpmn:incoming><bpmn:outgoing>Flow_3</bpmn:outgoing></bpmn:userTask><bpmn:serviceTask id="o_b" name="1.4 Валютный&#10;контроль"><bpmn:incoming>Flow_2</bpmn:incoming><bpmn:outgoing>Flow_4</bpmn:outgoing></bpmn:serviceTask><bpmn:inclusiveGateway id="o_j" name="1.5"><bpmn:incoming>Flow_3</bpmn:incoming><bpmn:incoming>Flow_4</bpmn:incoming><bpmn:outgoing>Flow_5</bpmn:outgoing></bpmn:inclusiveGateway><bpmn:endEvent id="o_e" name="1.6"><bpmn:incoming>Flow_5</bpmn:incoming></bpmn:endEvent><bpmn:sequenceFlow id="Flow_0" sourceRef="o_s" targetRef="o_g" /><bpmn:sequenceFlow id="Flow_1" name="сумма" sourceRef="o_g" targetRef="o_a" /><bpmn:sequenceFlow id="Flow_2" name="валюта" sourceRef="o_g" targetRef="o_b" /><bpmn:sequenceFlow id="Flow_3" sourceRef="o_a" targetRef="o_j" /><bpmn:sequenceFlow id="Flow_4" sourceRef="o_b" targetRef="o_j" /><bpmn:sequenceFlow id="Flow_5" sourceRef="o_j" targetRef="o_e" /></bpmn:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_or">
    <bpmndi:BPMNPlane id="BPMNPlane_or" bpmnElement="Collaboration_or">
      <bpmndi:BPMNShape id="shop_di" bpmnElement="shop" isHorizontal="true"><dc:Bounds x="80" y="40" width="830" height="324" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ops_di" bpmnElement="ops" isHorizontal="true"><dc:Bounds x="110" y="40" width="800" height="324" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="o_s_di" bpmnElement="o_s"><dc:Bounds x="153" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="158" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="o_g_di" bpmnElement="o_g" isMarkerVisible="true"><dc:Bounds x="280" y="101" width="50" height="50" /><bpmndi:BPMNLabel><dc:Bounds x="272" y="55" width="66" height="28" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="o_a_di" bpmnElement="o_a"><dc:Bounds x="414" y="86" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="o_b_di" bpmnElement="o_b"><dc:Bounds x="414" y="244" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="o_j_di" bpmnElement="o_j" isMarkerVisible="true"><dc:Bounds x="678" y="101" width="50" height="50" /><bpmndi:BPMNLabel><dc:Bounds x="690" y="69" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="o_e_di" bpmnElement="o_e"><dc:Bounds x="819" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="824" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="Flow_0_di" bpmnElement="Flow_0"><di:waypoint x="189" y="126" /><di:waypoint x="280" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1"><di:waypoint x="330" y="126" /><di:waypoint x="414" y="126" /><bpmndi:BPMNLabel><dc:Bounds x="338" y="108" width="40" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_2_di" bpmnElement="Flow_2"><di:waypoint x="305" y="151" /><di:waypoint x="305" y="284" /><di:waypoint x="414" y="284" /><bpmndi:BPMNLabel><dc:Bounds x="313" y="157" width="46" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_3_di" bpmnElement="Flow_3"><di:waypoint x="594" y="126" /><di:waypoint x="678" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_4_di" bpmnElement="Flow_4"><di:waypoint x="594" y="284" /><di:waypoint x="703" y="284" /><di:waypoint x="703" y="151" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_5_di" bpmnElement="Flow_5"><di:waypoint x="728" y="126" /><di:waypoint x="819" y="126" /></bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>

2.4a Составной пример: OR + AND + timeout

Типичная enterprise-сборка: часть веток параллельно, часть — по условию, SLA на ожидании.

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_mix" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0">
  <bpmn:collaboration id="Collaboration_mix"><bpmn:participant id="shop" name="Магазин" processRef="process_mix" /></bpmn:collaboration>
  <bpmn:process id="process_mix" name="Магазин" isExecutable="false"><bpmn:laneSet id="LaneSet_shop"><bpmn:lane id="ops" name="1. Исполнение"><bpmn:flowNodeRef>m_s</bpmn:flowNodeRef><bpmn:flowNodeRef>m_or</bpmn:flowNodeRef><bpmn:flowNodeRef>m_a</bpmn:flowNodeRef><bpmn:flowNodeRef>m_b</bpmn:flowNodeRef><bpmn:flowNodeRef>m_t</bpmn:flowNodeRef><bpmn:flowNodeRef>m_and</bpmn:flowNodeRef><bpmn:flowNodeRef>m_c</bpmn:flowNodeRef><bpmn:flowNodeRef>m_e</bpmn:flowNodeRef><bpmn:flowNodeRef>m_late</bpmn:flowNodeRef><bpmn:flowNodeRef>m_end2</bpmn:flowNodeRef></bpmn:lane></bpmn:laneSet><bpmn:startEvent id="m_s" name="1.1"><bpmn:outgoing>Flow_0</bpmn:outgoing></bpmn:startEvent><bpmn:inclusiveGateway id="m_or" name="1.2 Что&#10;запускать?"><bpmn:incoming>Flow_0</bpmn:incoming><bpmn:outgoing>Flow_1</bpmn:outgoing><bpmn:outgoing>Flow_2</bpmn:outgoing></bpmn:inclusiveGateway><bpmn:serviceTask id="m_a" name="1.3 Проверить&#10;лимит"><bpmn:incoming>Flow_1</bpmn:incoming><bpmn:outgoing>Flow_3</bpmn:outgoing></bpmn:serviceTask><bpmn:userTask id="m_b" name="1.4 Запросить&#10;документы"><bpmn:incoming>Flow_2</bpmn:incoming><bpmn:outgoing>Flow_4</bpmn:outgoing></bpmn:userTask><bpmn:boundaryEvent id="m_t" name="2 дня" attachedToRef="m_b" cancelActivity="true"><bpmn:outgoing>Flow_7</bpmn:outgoing><bpmn:timerEventDefinition id="m_t_def" /></bpmn:boundaryEvent><bpmn:parallelGateway id="m_and" name="1.6"><bpmn:incoming>Flow_3</bpmn:incoming><bpmn:incoming>Flow_4</bpmn:incoming><bpmn:outgoing>Flow_5</bpmn:outgoing></bpmn:parallelGateway><bpmn:sendTask id="m_c" name="1.7 Уведомить"><bpmn:incoming>Flow_5</bpmn:incoming><bpmn:outgoing>Flow_6</bpmn:outgoing></bpmn:sendTask><bpmn:endEvent id="m_e" name="1.8"><bpmn:incoming>Flow_6</bpmn:incoming></bpmn:endEvent><bpmn:userTask id="m_late" name="1.5 Эскалировать&#10;просрочку"><bpmn:incoming>Flow_7</bpmn:incoming><bpmn:outgoing>Flow_8</bpmn:outgoing></bpmn:userTask><bpmn:endEvent id="m_end2" name="1.9"><bpmn:incoming>Flow_8</bpmn:incoming></bpmn:endEvent><bpmn:sequenceFlow id="Flow_0" sourceRef="m_s" targetRef="m_or" /><bpmn:sequenceFlow id="Flow_1" name="лимит" sourceRef="m_or" targetRef="m_a" /><bpmn:sequenceFlow id="Flow_2" name="документы" sourceRef="m_or" targetRef="m_b" /><bpmn:sequenceFlow id="Flow_3" sourceRef="m_a" targetRef="m_and" /><bpmn:sequenceFlow id="Flow_4" sourceRef="m_b" targetRef="m_and" /><bpmn:sequenceFlow id="Flow_5" sourceRef="m_and" targetRef="m_c" /><bpmn:sequenceFlow id="Flow_6" sourceRef="m_c" targetRef="m_e" /><bpmn:sequenceFlow id="Flow_7" name="SLA" sourceRef="m_t" targetRef="m_late" /><bpmn:sequenceFlow id="Flow_8" sourceRef="m_late" targetRef="m_end2" /></bpmn:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_mix">
    <bpmndi:BPMNPlane id="BPMNPlane_mix" bpmnElement="Collaboration_mix">
      <bpmndi:BPMNShape id="shop_di" bpmnElement="shop" isHorizontal="true"><dc:Bounds x="80" y="40" width="1094" height="324" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ops_di" bpmnElement="ops" isHorizontal="true"><dc:Bounds x="110" y="40" width="1064" height="324" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="m_s_di" bpmnElement="m_s"><dc:Bounds x="153" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="158" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="m_or_di" bpmnElement="m_or" isMarkerVisible="true"><dc:Bounds x="280" y="101" width="50" height="50" /><bpmndi:BPMNLabel><dc:Bounds x="269" y="55" width="72" height="28" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="m_a_di" bpmnElement="m_a"><dc:Bounds x="414" y="86" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="m_b_di" bpmnElement="m_b"><dc:Bounds x="414" y="244" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="m_t_di" bpmnElement="m_t"><dc:Bounds x="486" y="306" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="484" y="350" width="40" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="m_and_di" bpmnElement="m_and" isMarkerVisible="true"><dc:Bounds x="678" y="101" width="50" height="50" /><bpmndi:BPMNLabel><dc:Bounds x="690" y="69" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="m_c_di" bpmnElement="m_c"><dc:Bounds x="812" y="86" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="m_e_di" bpmnElement="m_e"><dc:Bounds x="1083" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="1088" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="m_late_di" bpmnElement="m_late"><dc:Bounds x="812" y="244" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="m_end2_di" bpmnElement="m_end2"><dc:Bounds x="1083" y="266" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="1088" y="310" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="Flow_0_di" bpmnElement="Flow_0"><di:waypoint x="189" y="126" /><di:waypoint x="280" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1"><di:waypoint x="330" y="126" /><di:waypoint x="414" y="126" /><bpmndi:BPMNLabel><dc:Bounds x="338" y="108" width="40" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_2_di" bpmnElement="Flow_2"><di:waypoint x="305" y="151" /><di:waypoint x="305" y="284" /><di:waypoint x="414" y="284" /><bpmndi:BPMNLabel><dc:Bounds x="313" y="157" width="66" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_3_di" bpmnElement="Flow_3"><di:waypoint x="594" y="126" /><di:waypoint x="678" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_4_di" bpmnElement="Flow_4"><di:waypoint x="594" y="284" /><di:waypoint x="703" y="284" /><di:waypoint x="703" y="151" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_5_di" bpmnElement="Flow_5"><di:waypoint x="728" y="126" /><di:waypoint x="812" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_6_di" bpmnElement="Flow_6"><di:waypoint x="992" y="126" /><di:waypoint x="1083" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_7_di" bpmnElement="Flow_7"><di:waypoint x="522" y="324" /><di:waypoint x="902" y="324" /><bpmndi:BPMNLabel><dc:Bounds x="532" y="350" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_8_di" bpmnElement="Flow_8"><di:waypoint x="992" y="284" /><di:waypoint x="1083" y="284" /></bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>

2.5 Цикл (Loop)

Два механизма BPMN — не смешивайте на одной задаче без необходимости:

МеханизмКак рисовать в BPMNКогда
Standard loopМаркер петли на нижней границе задачиПовтор одной задачи по loopCondition в loop characteristics
Цикл через XOR-шлюзОбратный sequence flow через шлюзПовтор блока из нескольких шагов

Standard loop — итерация внутри задачи; исходящий поток только после выхода из цикла. Нет обратной стрелки sequence flow на ту же задачу:

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_loop1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0">
  <bpmn:collaboration id="Collaboration_loop1"><bpmn:participant id="shop" name="Магазин" processRef="process_loop1" /></bpmn:collaboration>
  <bpmn:process id="process_loop1" name="Магазин" isExecutable="false"><bpmn:laneSet id="LaneSet_shop"><bpmn:lane id="ops" name="1. Оператор"><bpmn:flowNodeRef>lp_s</bpmn:flowNodeRef><bpmn:flowNodeRef>lp_t</bpmn:flowNodeRef><bpmn:flowNodeRef>lp_e</bpmn:flowNodeRef></bpmn:lane></bpmn:laneSet><bpmn:startEvent id="lp_s" name="1.1"><bpmn:outgoing>Flow_0</bpmn:outgoing></bpmn:startEvent><bpmn:userTask id="lp_t" name="1.2 Уточнить&#10;заявку"><bpmn:incoming>Flow_0</bpmn:incoming><bpmn:outgoing>Flow_1</bpmn:outgoing><bpmn:standardLoopCharacteristics /></bpmn:userTask><bpmn:endEvent id="lp_e" name="1.3"><bpmn:incoming>Flow_1</bpmn:incoming></bpmn:endEvent><bpmn:sequenceFlow id="Flow_0" sourceRef="lp_s" targetRef="lp_t" /><bpmn:sequenceFlow id="Flow_1" sourceRef="lp_t" targetRef="lp_e" /></bpmn:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_loop1">
    <bpmndi:BPMNPlane id="BPMNPlane_loop1" bpmnElement="Collaboration_loop1">
      <bpmndi:BPMNShape id="shop_di" bpmnElement="shop" isHorizontal="true"><dc:Bounds x="80" y="40" width="562" height="166" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ops_di" bpmnElement="ops" isHorizontal="true"><dc:Bounds x="110" y="40" width="532" height="166" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="lp_s_di" bpmnElement="lp_s"><dc:Bounds x="153" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="158" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="lp_t_di" bpmnElement="lp_t"><dc:Bounds x="280" y="86" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="lp_e_di" bpmnElement="lp_e"><dc:Bounds x="551" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="556" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="Flow_0_di" bpmnElement="Flow_0"><di:waypoint x="189" y="126" /><di:waypoint x="280" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1"><di:waypoint x="460" y="126" /><di:waypoint x="551" y="126" /></bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>

Цикл через шлюз — повтор блока; здесь обратный поток уместен:

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_loop2" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0">
  <bpmn:collaboration id="Collaboration_loop2"><bpmn:participant id="shop" name="Магазин" processRef="process_loop2" /></bpmn:collaboration>
  <bpmn:process id="process_loop2" name="Магазин" isExecutable="false"><bpmn:laneSet id="LaneSet_shop"><bpmn:lane id="ops" name="1. Оператор"><bpmn:flowNodeRef>lg_s</bpmn:flowNodeRef><bpmn:flowNodeRef>lg_t</bpmn:flowNodeRef><bpmn:flowNodeRef>lg_g</bpmn:flowNodeRef><bpmn:flowNodeRef>lg_e</bpmn:flowNodeRef><bpmn:flowNodeRef>lg_fix</bpmn:flowNodeRef></bpmn:lane></bpmn:laneSet><bpmn:startEvent id="lg_s" name="1.1"><bpmn:outgoing>Flow_0</bpmn:outgoing></bpmn:startEvent><bpmn:userTask id="lg_t" name="1.2 Проверить&#10;комплект"><bpmn:incoming>Flow_0</bpmn:incoming><bpmn:incoming>Flow_4</bpmn:incoming><bpmn:outgoing>Flow_1</bpmn:outgoing></bpmn:userTask><bpmn:exclusiveGateway id="lg_g" name="1.3 Принято?"><bpmn:incoming>Flow_1</bpmn:incoming><bpmn:outgoing>Flow_2</bpmn:outgoing><bpmn:outgoing>Flow_3</bpmn:outgoing></bpmn:exclusiveGateway><bpmn:endEvent id="lg_e" name="1.4"><bpmn:incoming>Flow_2</bpmn:incoming></bpmn:endEvent><bpmn:manualTask id="lg_fix" name="1.5 Исправить"><bpmn:incoming>Flow_3</bpmn:incoming><bpmn:outgoing>Flow_4</bpmn:outgoing></bpmn:manualTask><bpmn:sequenceFlow id="Flow_0" sourceRef="lg_s" targetRef="lg_t" /><bpmn:sequenceFlow id="Flow_1" sourceRef="lg_t" targetRef="lg_g" /><bpmn:sequenceFlow id="Flow_2" name="да" sourceRef="lg_g" targetRef="lg_e" /><bpmn:sequenceFlow id="Flow_3" name="нет" sourceRef="lg_g" targetRef="lg_fix" /><bpmn:sequenceFlow id="Flow_4" sourceRef="lg_fix" targetRef="lg_t" /></bpmn:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_loop2">
    <bpmndi:BPMNPlane id="BPMNPlane_loop2" bpmnElement="Collaboration_loop2">
      <bpmndi:BPMNShape id="shop_di" bpmnElement="shop" isHorizontal="true"><dc:Bounds x="80" y="40" width="696" height="324" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ops_di" bpmnElement="ops" isHorizontal="true"><dc:Bounds x="110" y="40" width="666" height="324" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="lg_s_di" bpmnElement="lg_s"><dc:Bounds x="153" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="158" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="lg_t_di" bpmnElement="lg_t"><dc:Bounds x="280" y="86" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="lg_g_di" bpmnElement="lg_g" isMarkerVisible="true"><dc:Bounds x="544" y="101" width="50" height="50" /><bpmndi:BPMNLabel><dc:Bounds x="527" y="69" width="85" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="lg_e_di" bpmnElement="lg_e"><dc:Bounds x="685" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="690" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="lg_fix_di" bpmnElement="lg_fix"><dc:Bounds x="280" y="244" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="Flow_0_di" bpmnElement="Flow_0"><di:waypoint x="189" y="126" /><di:waypoint x="280" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1"><di:waypoint x="460" y="126" /><di:waypoint x="544" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_2_di" bpmnElement="Flow_2"><di:waypoint x="594" y="126" /><di:waypoint x="685" y="126" /><bpmndi:BPMNLabel><dc:Bounds x="602" y="108" width="24" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_3_di" bpmnElement="Flow_3"><di:waypoint x="569" y="151" /><di:waypoint x="569" y="284" /><di:waypoint x="460" y="284" /><bpmndi:BPMNLabel><dc:Bounds x="577" y="157" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_4_di" bpmnElement="Flow_4"><di:waypoint x="370" y="244" /><di:waypoint x="370" y="166" /></bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>

Повторение задаёт маркер на задаче (standardLoopCharacteristics), а не обратный sequence flow.

2.6 Обработка тайм-аута (Timeout)

Граничное timer catch на контуре задачи. Прерывающий таймер отменяет задачу; непрерывающий запускает параллельную ветку, задача продолжается.

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_timeout" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0">
  <bpmn:collaboration id="Collaboration_timeout"><bpmn:participant id="shop" name="Магазин" processRef="process_timeout" /></bpmn:collaboration>
  <bpmn:process id="process_timeout" name="Магазин" isExecutable="false"><bpmn:laneSet id="LaneSet_shop"><bpmn:lane id="ops" name="1. Поддержка"><bpmn:flowNodeRef>to_s</bpmn:flowNodeRef><bpmn:flowNodeRef>to_t</bpmn:flowNodeRef><bpmn:flowNodeRef>to_b</bpmn:flowNodeRef><bpmn:flowNodeRef>to_e</bpmn:flowNodeRef><bpmn:flowNodeRef>to_esc</bpmn:flowNodeRef><bpmn:flowNodeRef>to_end</bpmn:flowNodeRef></bpmn:lane></bpmn:laneSet><bpmn:startEvent id="to_s" name="1.1"><bpmn:outgoing>Flow_0</bpmn:outgoing></bpmn:startEvent><bpmn:userTask id="to_t" name="1.2 Ответить&#10;клиенту"><bpmn:incoming>Flow_0</bpmn:incoming><bpmn:outgoing>Flow_1</bpmn:outgoing></bpmn:userTask><bpmn:boundaryEvent id="to_b" name="4 ч" attachedToRef="to_t" cancelActivity="true"><bpmn:outgoing>Flow_2</bpmn:outgoing><bpmn:timerEventDefinition id="to_b_def" /></bpmn:boundaryEvent><bpmn:endEvent id="to_e" name="1.3"><bpmn:incoming>Flow_1</bpmn:incoming></bpmn:endEvent><bpmn:userTask id="to_esc" name="1.4 Передать&#10;старшему"><bpmn:incoming>Flow_2</bpmn:incoming><bpmn:outgoing>Flow_3</bpmn:outgoing></bpmn:userTask><bpmn:endEvent id="to_end" name="1.5"><bpmn:incoming>Flow_3</bpmn:incoming></bpmn:endEvent><bpmn:sequenceFlow id="Flow_0" sourceRef="to_s" targetRef="to_t" /><bpmn:sequenceFlow id="Flow_1" sourceRef="to_t" targetRef="to_e" /><bpmn:sequenceFlow id="Flow_2" name="SLA" sourceRef="to_b" targetRef="to_esc" /><bpmn:sequenceFlow id="Flow_3" sourceRef="to_esc" targetRef="to_end" /></bpmn:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_timeout">
    <bpmndi:BPMNPlane id="BPMNPlane_timeout" bpmnElement="Collaboration_timeout">
      <bpmndi:BPMNShape id="shop_di" bpmnElement="shop" isHorizontal="true"><dc:Bounds x="80" y="40" width="826" height="324" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ops_di" bpmnElement="ops" isHorizontal="true"><dc:Bounds x="110" y="40" width="796" height="324" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="to_s_di" bpmnElement="to_s"><dc:Bounds x="153" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="158" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="to_t_di" bpmnElement="to_t"><dc:Bounds x="280" y="86" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="to_b_di" bpmnElement="to_b"><dc:Bounds x="352" y="148" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="357" y="192" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="to_e_di" bpmnElement="to_e"><dc:Bounds x="616" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="621" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="to_esc_di" bpmnElement="to_esc"><dc:Bounds x="544" y="244" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="to_end_di" bpmnElement="to_end"><dc:Bounds x="815" y="266" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="820" y="310" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="Flow_0_di" bpmnElement="Flow_0"><di:waypoint x="189" y="126" /><di:waypoint x="280" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1"><di:waypoint x="460" y="126" /><di:waypoint x="616" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_2_di" bpmnElement="Flow_2"><di:waypoint x="388" y="166" /><di:waypoint x="634" y="166" /><di:waypoint x="634" y="244" /><bpmndi:BPMNLabel><dc:Bounds x="398" y="192" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_3_di" bpmnElement="Flow_3"><di:waypoint x="724" y="284" /><di:waypoint x="815" y="284" /></bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>

SLA формулируйте проверяемо — 02.04.02 Критерии приёмки (Acceptance Criteria).

2.7 Эскалация (Escalation)

Граничное escalation-событие. Часто непрерывающее: основная задача не отменяется, параллельно уведомляется вышестоящий уровень. Две параллельные ветки сходятся в AND-merge — иначе модель неоднозначна для исполняемых движков.

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_esc" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0">
  <bpmn:collaboration id="Collaboration_esc"><bpmn:participant id="shop" name="Магазин" processRef="process_esc" /></bpmn:collaboration>
  <bpmn:process id="process_esc" name="Магазин" isExecutable="false"><bpmn:laneSet id="LaneSet_shop"><bpmn:lane id="ops" name="1. Исполнение"><bpmn:flowNodeRef>es_s</bpmn:flowNodeRef><bpmn:flowNodeRef>es_t</bpmn:flowNodeRef><bpmn:flowNodeRef>es_b</bpmn:flowNodeRef><bpmn:flowNodeRef>es_j</bpmn:flowNodeRef><bpmn:flowNodeRef>es_e</bpmn:flowNodeRef><bpmn:flowNodeRef>es_boss</bpmn:flowNodeRef></bpmn:lane></bpmn:laneSet><bpmn:startEvent id="es_s" name="1.1"><bpmn:outgoing>Flow_0</bpmn:outgoing></bpmn:startEvent><bpmn:userTask id="es_t" name="1.2 Согласовать&#10;скидку"><bpmn:incoming>Flow_0</bpmn:incoming><bpmn:outgoing>Flow_1</bpmn:outgoing></bpmn:userTask><bpmn:boundaryEvent id="es_b" name="эскалация" attachedToRef="es_t" cancelActivity="false"><bpmn:outgoing>Flow_2</bpmn:outgoing><bpmn:escalationEventDefinition id="es_b_def" /></bpmn:boundaryEvent><bpmn:parallelGateway id="es_j" name="1.5"><bpmn:incoming>Flow_1</bpmn:incoming><bpmn:incoming>Flow_3</bpmn:incoming><bpmn:outgoing>Flow_4</bpmn:outgoing></bpmn:parallelGateway><bpmn:endEvent id="es_e" name="1.6"><bpmn:incoming>Flow_4</bpmn:incoming></bpmn:endEvent><bpmn:userTask id="es_boss" name="1.4 Решить&#10;у руководителя"><bpmn:incoming>Flow_2</bpmn:incoming><bpmn:outgoing>Flow_3</bpmn:outgoing></bpmn:userTask><bpmn:sequenceFlow id="Flow_0" sourceRef="es_s" targetRef="es_t" /><bpmn:sequenceFlow id="Flow_1" sourceRef="es_t" targetRef="es_j" /><bpmn:sequenceFlow id="Flow_2" sourceRef="es_b" targetRef="es_boss" /><bpmn:sequenceFlow id="Flow_3" sourceRef="es_boss" targetRef="es_j" /><bpmn:sequenceFlow id="Flow_4" sourceRef="es_j" targetRef="es_e" /></bpmn:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_esc">
    <bpmndi:BPMNPlane id="BPMNPlane_esc" bpmnElement="Collaboration_esc">
      <bpmndi:BPMNShape id="shop_di" bpmnElement="shop" isHorizontal="true"><dc:Bounds x="80" y="40" width="826" height="324" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ops_di" bpmnElement="ops" isHorizontal="true"><dc:Bounds x="110" y="40" width="796" height="324" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="es_s_di" bpmnElement="es_s"><dc:Bounds x="153" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="158" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="es_t_di" bpmnElement="es_t"><dc:Bounds x="280" y="86" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="es_b_di" bpmnElement="es_b"><dc:Bounds x="352" y="148" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="337" y="192" width="66" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="es_j_di" bpmnElement="es_j" isMarkerVisible="true"><dc:Bounds x="609" y="101" width="50" height="50" /><bpmndi:BPMNLabel><dc:Bounds x="621" y="69" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="es_e_di" bpmnElement="es_e"><dc:Bounds x="815" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="820" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="es_boss_di" bpmnElement="es_boss"><dc:Bounds x="544" y="244" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="Flow_0_di" bpmnElement="Flow_0"><di:waypoint x="189" y="126" /><di:waypoint x="280" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1"><di:waypoint x="460" y="126" /><di:waypoint x="609" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_2_di" bpmnElement="Flow_2"><di:waypoint x="388" y="166" /><di:waypoint x="634" y="166" /><di:waypoint x="634" y="244" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_3_di" bpmnElement="Flow_3"><di:waypoint x="724" y="284" /><di:waypoint x="752" y="284" /><di:waypoint x="752" y="151" /><di:waypoint x="634" y="151" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_4_di" bpmnElement="Flow_4"><di:waypoint x="659" y="126" /><di:waypoint x="815" y="126" /></bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>

Всплытие (bubbling): если задача в подпроцессе, прерывающая эскалация может передать управление родительскому процессу — на верхнем уровне нужен escalation handler.

2.8 Обработка ошибки (Error Boundary Event)

Граничное error catch — прерывающее: задача отменяется, поток идёт на обработчик.

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_err" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0">
  <bpmn:collaboration id="Collaboration_err"><bpmn:participant id="shop" name="Магазин" processRef="process_err" /></bpmn:collaboration>
  <bpmn:process id="process_err" name="Магазин" isExecutable="false"><bpmn:laneSet id="LaneSet_shop"><bpmn:lane id="ops" name="1. Оплата"><bpmn:flowNodeRef>er_s</bpmn:flowNodeRef><bpmn:flowNodeRef>er_t</bpmn:flowNodeRef><bpmn:flowNodeRef>er_b</bpmn:flowNodeRef><bpmn:flowNodeRef>er_e</bpmn:flowNodeRef><bpmn:flowNodeRef>er_h</bpmn:flowNodeRef><bpmn:flowNodeRef>er_end</bpmn:flowNodeRef></bpmn:lane></bpmn:laneSet><bpmn:startEvent id="er_s" name="1.1"><bpmn:outgoing>Flow_0</bpmn:outgoing></bpmn:startEvent><bpmn:serviceTask id="er_t" name="1.2 Списать&#10;оплату"><bpmn:incoming>Flow_0</bpmn:incoming><bpmn:outgoing>Flow_1</bpmn:outgoing></bpmn:serviceTask><bpmn:boundaryEvent id="er_b" name="ошибка" attachedToRef="er_t" cancelActivity="true"><bpmn:outgoing>Flow_2</bpmn:outgoing><bpmn:errorEventDefinition id="er_b_def" /></bpmn:boundaryEvent><bpmn:endEvent id="er_e" name="1.3"><bpmn:incoming>Flow_1</bpmn:incoming></bpmn:endEvent><bpmn:userTask id="er_h" name="1.4 Разобрать&#10;ошибку"><bpmn:incoming>Flow_2</bpmn:incoming><bpmn:outgoing>Flow_3</bpmn:outgoing></bpmn:userTask><bpmn:endEvent id="er_end" name="1.5"><bpmn:incoming>Flow_3</bpmn:incoming><bpmn:errorEventDefinition id="er_end_def" /></bpmn:endEvent><bpmn:sequenceFlow id="Flow_0" sourceRef="er_s" targetRef="er_t" /><bpmn:sequenceFlow id="Flow_1" sourceRef="er_t" targetRef="er_e" /><bpmn:sequenceFlow id="Flow_2" sourceRef="er_b" targetRef="er_h" /><bpmn:sequenceFlow id="Flow_3" sourceRef="er_h" targetRef="er_end" /></bpmn:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_err">
    <bpmndi:BPMNPlane id="BPMNPlane_err" bpmnElement="Collaboration_err">
      <bpmndi:BPMNShape id="shop_di" bpmnElement="shop" isHorizontal="true"><dc:Bounds x="80" y="40" width="826" height="324" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ops_di" bpmnElement="ops" isHorizontal="true"><dc:Bounds x="110" y="40" width="796" height="324" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="er_s_di" bpmnElement="er_s"><dc:Bounds x="153" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="158" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="er_t_di" bpmnElement="er_t"><dc:Bounds x="280" y="86" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="er_b_di" bpmnElement="er_b"><dc:Bounds x="352" y="148" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="347" y="192" width="46" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="er_e_di" bpmnElement="er_e"><dc:Bounds x="616" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="621" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="er_h_di" bpmnElement="er_h"><dc:Bounds x="544" y="244" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="er_end_di" bpmnElement="er_end"><dc:Bounds x="815" y="266" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="820" y="310" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="Flow_0_di" bpmnElement="Flow_0"><di:waypoint x="189" y="126" /><di:waypoint x="280" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1"><di:waypoint x="460" y="126" /><di:waypoint x="616" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_2_di" bpmnElement="Flow_2"><di:waypoint x="388" y="166" /><di:waypoint x="634" y="166" /><di:waypoint x="634" y="244" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_3_di" bpmnElement="Flow_3"><di:waypoint x="724" y="284" /><di:waypoint x="815" y="284" /></bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>

2.9 Компенсация BPMN (Compensation) — vs упрощённый откат

Настоящий паттерн компенсации BPMN: транзакционный подпроцесс, задачи с compensation marker (⚙), compensation boundary на контур подпроцесса и compensation throw при cancel/error — откат уже завершённых шагов. Детали транзакций — 03.04.01 BPMN 2.0 - введение и основы.

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_comp" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0">
  <bpmn:collaboration id="Collaboration_comp"><bpmn:participant id="shop" name="Магазин" processRef="process_comp" /></bpmn:collaboration>
  <bpmn:process id="process_comp" name="Магазин" isExecutable="false"><bpmn:laneSet id="LaneSet_shop"><bpmn:lane id="pay" name="1. Финансы"><bpmn:flowNodeRef>c_s</bpmn:flowNodeRef><bpmn:flowNodeRef>c_t</bpmn:flowNodeRef><bpmn:flowNodeRef>c_b</bpmn:flowNodeRef><bpmn:flowNodeRef>c_e</bpmn:flowNodeRef><bpmn:flowNodeRef>c_r</bpmn:flowNodeRef></bpmn:lane></bpmn:laneSet><bpmn:startEvent id="c_s" name="1.1"><bpmn:outgoing>Flow_0</bpmn:outgoing></bpmn:startEvent><bpmn:serviceTask id="c_t" name="1.2 Списать&#10;оплату"><bpmn:incoming>Flow_0</bpmn:incoming><bpmn:outgoing>Flow_1</bpmn:outgoing></bpmn:serviceTask><bpmn:boundaryEvent id="c_b" attachedToRef="c_t" cancelActivity="true"><bpmn:compensateEventDefinition id="c_b_def" /></bpmn:boundaryEvent><bpmn:endEvent id="c_e" name="1.3"><bpmn:incoming>Flow_1</bpmn:incoming></bpmn:endEvent><bpmn:serviceTask id="c_r" name="1.4 Вернуть&#10;оплату" isForCompensation="true"></bpmn:serviceTask><bpmn:sequenceFlow id="Flow_0" sourceRef="c_s" targetRef="c_t" /><bpmn:sequenceFlow id="Flow_1" sourceRef="c_t" targetRef="c_e" /><bpmn:association id="Assoc_0" sourceRef="c_b" targetRef="c_r" associationDirection="None" /></bpmn:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_comp">
    <bpmndi:BPMNPlane id="BPMNPlane_comp" bpmnElement="Collaboration_comp">
      <bpmndi:BPMNShape id="shop_di" bpmnElement="shop" isHorizontal="true"><dc:Bounds x="80" y="40" width="562" height="324" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="pay_di" bpmnElement="pay" isHorizontal="true"><dc:Bounds x="110" y="40" width="532" height="324" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="c_s_di" bpmnElement="c_s"><dc:Bounds x="153" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="158" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="c_t_di" bpmnElement="c_t"><dc:Bounds x="280" y="86" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="c_b_di" bpmnElement="c_b"><dc:Bounds x="352" y="148" width="36" height="36" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="c_e_di" bpmnElement="c_e"><dc:Bounds x="551" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="556" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="c_r_di" bpmnElement="c_r"><dc:Bounds x="280" y="244" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="Flow_0_di" bpmnElement="Flow_0"><di:waypoint x="189" y="126" /><di:waypoint x="280" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1"><di:waypoint x="460" y="126" /><di:waypoint x="551" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Assoc_0_di" bpmnElement="Assoc_0"><di:waypoint x="370" y="184" /><di:waypoint x="370" y="244" /></bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>

Не путать с XOR-веткой «если не успешно — откатить вручную»:

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_fakecomp" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0">
  <bpmn:collaboration id="Collaboration_fakecomp"><bpmn:participant id="shop" name="Магазин" processRef="process_fakecomp" /></bpmn:collaboration>
  <bpmn:process id="process_fakecomp" name="Магазин" isExecutable="false"><bpmn:laneSet id="LaneSet_shop"><bpmn:lane id="ops" name="1. Оператор"><bpmn:flowNodeRef>f_s</bpmn:flowNodeRef><bpmn:flowNodeRef>f_t</bpmn:flowNodeRef><bpmn:flowNodeRef>f_g</bpmn:flowNodeRef><bpmn:flowNodeRef>f_e</bpmn:flowNodeRef><bpmn:flowNodeRef>f_u</bpmn:flowNodeRef><bpmn:flowNodeRef>f_end</bpmn:flowNodeRef></bpmn:lane></bpmn:laneSet><bpmn:startEvent id="f_s" name="1.1"><bpmn:outgoing>Flow_0</bpmn:outgoing></bpmn:startEvent><bpmn:serviceTask id="f_t" name="1.2 Провести&#10;операцию"><bpmn:incoming>Flow_0</bpmn:incoming><bpmn:outgoing>Flow_1</bpmn:outgoing></bpmn:serviceTask><bpmn:exclusiveGateway id="f_g" name="1.3 Успех?"><bpmn:incoming>Flow_1</bpmn:incoming><bpmn:outgoing>Flow_2</bpmn:outgoing><bpmn:outgoing>Flow_3</bpmn:outgoing></bpmn:exclusiveGateway><bpmn:endEvent id="f_e" name="1.4"><bpmn:incoming>Flow_2</bpmn:incoming></bpmn:endEvent><bpmn:userTask id="f_u" name="1.5 Откатить&#10;вручную"><bpmn:incoming>Flow_3</bpmn:incoming><bpmn:outgoing>Flow_4</bpmn:outgoing></bpmn:userTask><bpmn:endEvent id="f_end" name="1.6"><bpmn:incoming>Flow_4</bpmn:incoming></bpmn:endEvent><bpmn:sequenceFlow id="Flow_0" sourceRef="f_s" targetRef="f_t" /><bpmn:sequenceFlow id="Flow_1" sourceRef="f_t" targetRef="f_g" /><bpmn:sequenceFlow id="Flow_2" name="да" sourceRef="f_g" targetRef="f_e" /><bpmn:sequenceFlow id="Flow_3" name="нет" sourceRef="f_g" targetRef="f_u" /><bpmn:sequenceFlow id="Flow_4" sourceRef="f_u" targetRef="f_end" /></bpmn:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_fakecomp">
    <bpmndi:BPMNPlane id="BPMNPlane_fakecomp" bpmnElement="Collaboration_fakecomp">
      <bpmndi:BPMNShape id="shop_di" bpmnElement="shop" isHorizontal="true"><dc:Bounds x="80" y="40" width="960" height="324" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ops_di" bpmnElement="ops" isHorizontal="true"><dc:Bounds x="110" y="40" width="930" height="324" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="f_s_di" bpmnElement="f_s"><dc:Bounds x="153" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="158" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="f_t_di" bpmnElement="f_t"><dc:Bounds x="280" y="86" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="f_g_di" bpmnElement="f_g" isMarkerVisible="true"><dc:Bounds x="544" y="101" width="50" height="50" /><bpmndi:BPMNLabel><dc:Bounds x="533" y="69" width="72" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="f_e_di" bpmnElement="f_e"><dc:Bounds x="750" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="755" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="f_u_di" bpmnElement="f_u"><dc:Bounds x="678" y="244" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="f_end_di" bpmnElement="f_end"><dc:Bounds x="949" y="266" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="954" y="310" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="Flow_0_di" bpmnElement="Flow_0"><di:waypoint x="189" y="126" /><di:waypoint x="280" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1"><di:waypoint x="460" y="126" /><di:waypoint x="544" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_2_di" bpmnElement="Flow_2"><di:waypoint x="594" y="126" /><di:waypoint x="750" y="126" /><bpmndi:BPMNLabel><dc:Bounds x="602" y="108" width="24" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_3_di" bpmnElement="Flow_3"><di:waypoint x="569" y="151" /><di:waypoint x="569" y="284" /><di:waypoint x="678" y="284" /><bpmndi:BPMNLabel><dc:Bounds x="577" y="157" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_4_di" bpmnElement="Flow_4"><di:waypoint x="858" y="284" /><di:waypoint x="949" y="284" /></bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>

На ревью исполняемой модели требуйте compensation markers или фиксируйте откат в 10.01.08 Шаблон сквозной фичи (BPMN-процесс).

2.10 Паттерн «Согласование» (Approval)

Один пул, несколько дорожек — sequence flow между lanes (не message flow):

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_approve" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0">
  <bpmn:collaboration id="Collaboration_approve"><bpmn:participant id="hr" name="Заявка" processRef="process_approve" /></bpmn:collaboration>
  <bpmn:process id="process_approve" name="Заявка" isExecutable="false"><bpmn:laneSet id="LaneSet_hr"><bpmn:lane id="emp" name="1. Сотрудник"><bpmn:flowNodeRef>ap_s</bpmn:flowNodeRef><bpmn:flowNodeRef>ap_u</bpmn:flowNodeRef></bpmn:lane><bpmn:lane id="boss" name="2. Руководитель"><bpmn:flowNodeRef>ap_r</bpmn:flowNodeRef><bpmn:flowNodeRef>ap_g</bpmn:flowNodeRef></bpmn:lane><bpmn:lane id="sys" name="3. Портал"><bpmn:flowNodeRef>ap_ok</bpmn:flowNodeRef><bpmn:flowNodeRef>ap_no</bpmn:flowNodeRef><bpmn:flowNodeRef>ap_e1</bpmn:flowNodeRef><bpmn:flowNodeRef>ap_e2</bpmn:flowNodeRef></bpmn:lane></bpmn:laneSet><bpmn:startEvent id="ap_s" name="1.1"><bpmn:outgoing>Flow_0</bpmn:outgoing></bpmn:startEvent><bpmn:userTask id="ap_u" name="1.2 Подать&#10;заявку"><bpmn:incoming>Flow_0</bpmn:incoming><bpmn:outgoing>Flow_1</bpmn:outgoing></bpmn:userTask><bpmn:userTask id="ap_r" name="2.1 Проверить&#10;заявку"><bpmn:incoming>Flow_1</bpmn:incoming><bpmn:outgoing>Flow_2</bpmn:outgoing></bpmn:userTask><bpmn:exclusiveGateway id="ap_g" name="2.2 Согласовано?"><bpmn:incoming>Flow_2</bpmn:incoming><bpmn:outgoing>Flow_3</bpmn:outgoing><bpmn:outgoing>Flow_4</bpmn:outgoing></bpmn:exclusiveGateway><bpmn:serviceTask id="ap_ok" name="3.1 Зафиксировать&#10;согласие"><bpmn:incoming>Flow_3</bpmn:incoming><bpmn:outgoing>Flow_5</bpmn:outgoing></bpmn:serviceTask><bpmn:sendTask id="ap_no" name="3.2 Сообщить&#10;об отказе"><bpmn:incoming>Flow_4</bpmn:incoming><bpmn:outgoing>Flow_6</bpmn:outgoing></bpmn:sendTask><bpmn:endEvent id="ap_e1" name="3.3"><bpmn:incoming>Flow_5</bpmn:incoming></bpmn:endEvent><bpmn:endEvent id="ap_e2" name="3.4"><bpmn:incoming>Flow_6</bpmn:incoming></bpmn:endEvent><bpmn:sequenceFlow id="Flow_0" sourceRef="ap_s" targetRef="ap_u" /><bpmn:sequenceFlow id="Flow_1" sourceRef="ap_u" targetRef="ap_r" /><bpmn:sequenceFlow id="Flow_2" sourceRef="ap_r" targetRef="ap_g" /><bpmn:sequenceFlow id="Flow_3" name="да" sourceRef="ap_g" targetRef="ap_ok" /><bpmn:sequenceFlow id="Flow_4" name="нет" sourceRef="ap_g" targetRef="ap_no" /><bpmn:sequenceFlow id="Flow_5" sourceRef="ap_ok" targetRef="ap_e1" /><bpmn:sequenceFlow id="Flow_6" sourceRef="ap_no" targetRef="ap_e2" /></bpmn:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_approve">
    <bpmndi:BPMNPlane id="BPMNPlane_approve" bpmnElement="Collaboration_approve">
      <bpmndi:BPMNShape id="hr_di" bpmnElement="hr" isHorizontal="true"><dc:Bounds x="80" y="40" width="1224" height="656" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="emp_di" bpmnElement="emp" isHorizontal="true"><dc:Bounds x="110" y="40" width="1194" height="166" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="boss_di" bpmnElement="boss" isHorizontal="true"><dc:Bounds x="110" y="206" width="1194" height="166" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="sys_di" bpmnElement="sys" isHorizontal="true"><dc:Bounds x="110" y="372" width="1194" height="324" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ap_s_di" bpmnElement="ap_s"><dc:Bounds x="153" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="158" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ap_u_di" bpmnElement="ap_u"><dc:Bounds x="280" y="86" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ap_r_di" bpmnElement="ap_r"><dc:Bounds x="544" y="252" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ap_g_di" bpmnElement="ap_g" isMarkerVisible="true"><dc:Bounds x="808" y="267" width="50" height="50" /><bpmndi:BPMNLabel><dc:Bounds x="778" y="235" width="110" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ap_ok_di" bpmnElement="ap_ok"><dc:Bounds x="942" y="418" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ap_no_di" bpmnElement="ap_no"><dc:Bounds x="942" y="576" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ap_e1_di" bpmnElement="ap_e1"><dc:Bounds x="1213" y="440" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="1218" y="484" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ap_e2_di" bpmnElement="ap_e2"><dc:Bounds x="1213" y="598" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="1218" y="642" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="Flow_0_di" bpmnElement="Flow_0"><di:waypoint x="189" y="126" /><di:waypoint x="280" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1"><di:waypoint x="460" y="126" /><di:waypoint x="634" y="126" /><di:waypoint x="634" y="252" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_2_di" bpmnElement="Flow_2"><di:waypoint x="724" y="292" /><di:waypoint x="808" y="292" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_3_di" bpmnElement="Flow_3"><di:waypoint x="858" y="292" /><di:waypoint x="1032" y="292" /><di:waypoint x="1032" y="418" /><bpmndi:BPMNLabel><dc:Bounds x="866" y="274" width="24" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_4_di" bpmnElement="Flow_4"><di:waypoint x="833" y="317" /><di:waypoint x="833" y="616" /><di:waypoint x="942" y="616" /><bpmndi:BPMNLabel><dc:Bounds x="841" y="323" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_5_di" bpmnElement="Flow_5"><di:waypoint x="1122" y="458" /><di:waypoint x="1213" y="458" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_6_di" bpmnElement="Flow_6"><di:waypoint x="1122" y="616" /><di:waypoint x="1213" y="616" /></bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>

Таймеры просрочки, матрица согласующих — 10.01.08 Шаблон сквозной фичи (BPMN-процесс).

2.11 Межпуловое взаимодействие (Message между участниками)

Между разными пулами — только message flow (пунктир); sequence flow не пересекает границу пула — 06.02.02 Пулы, дорожки и артефакты. Процесс участника-получателя стартует по message start или перехватывает message catch после своего start event.

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_messages" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0">
  <bpmn:collaboration id="Collaboration_messages"><bpmn:participant id="msg_buyer" name="Покупатель" processRef="process_msg_buyer" /><bpmn:participant id="msg_shop" name="Магазин" processRef="process_msg_shop" /><bpmn:messageFlow id="Message_0" name="Заказ" sourceRef="mb_send" targetRef="ms_s" /><bpmn:messageFlow id="Message_1" name="Статус" sourceRef="ms_send" targetRef="mb_wait" /></bpmn:collaboration>
  <bpmn:process id="process_msg_buyer" name="Покупатель" isExecutable="false"><bpmn:laneSet id="LaneSet_msg_buyer"><bpmn:lane id="msg_b" name="Покупатель"><bpmn:flowNodeRef>mb_s</bpmn:flowNodeRef><bpmn:flowNodeRef>mb_send</bpmn:flowNodeRef><bpmn:flowNodeRef>mb_wait</bpmn:flowNodeRef><bpmn:flowNodeRef>mb_e</bpmn:flowNodeRef></bpmn:lane></bpmn:laneSet><bpmn:startEvent id="mb_s" name="1.1"><bpmn:outgoing>Flow_0</bpmn:outgoing></bpmn:startEvent><bpmn:sendTask id="mb_send" name="1.2 Отправить&#10;заказ"><bpmn:incoming>Flow_0</bpmn:incoming><bpmn:outgoing>Flow_1</bpmn:outgoing></bpmn:sendTask><bpmn:receiveTask id="mb_wait" name="1.3 Получить&#10;ответ"><bpmn:incoming>Flow_1</bpmn:incoming><bpmn:outgoing>Flow_2</bpmn:outgoing></bpmn:receiveTask><bpmn:endEvent id="mb_e" name="1.4"><bpmn:incoming>Flow_2</bpmn:incoming></bpmn:endEvent><bpmn:sequenceFlow id="Flow_0" sourceRef="mb_s" targetRef="mb_send" /><bpmn:sequenceFlow id="Flow_1" sourceRef="mb_send" targetRef="mb_wait" /><bpmn:sequenceFlow id="Flow_2" sourceRef="mb_wait" targetRef="mb_e" /></bpmn:process><bpmn:process id="process_msg_shop" name="Магазин" isExecutable="false"><bpmn:laneSet id="LaneSet_msg_shop"><bpmn:lane id="msg_s" name="1. Продажи"><bpmn:flowNodeRef>ms_s</bpmn:flowNodeRef><bpmn:flowNodeRef>ms_do</bpmn:flowNodeRef><bpmn:flowNodeRef>ms_send</bpmn:flowNodeRef></bpmn:lane></bpmn:laneSet><bpmn:startEvent id="ms_s" name="1.1"><bpmn:outgoing>Flow_3</bpmn:outgoing><bpmn:messageEventDefinition id="ms_s_def" /></bpmn:startEvent><bpmn:serviceTask id="ms_do" name="1.2 Принять&#10;заказ"><bpmn:incoming>Flow_3</bpmn:incoming><bpmn:outgoing>Flow_4</bpmn:outgoing></bpmn:serviceTask><bpmn:sendTask id="ms_send" name="1.3 Сообщить&#10;статус"><bpmn:incoming>Flow_4</bpmn:incoming></bpmn:sendTask><bpmn:sequenceFlow id="Flow_3" sourceRef="ms_s" targetRef="ms_do" /><bpmn:sequenceFlow id="Flow_4" sourceRef="ms_do" targetRef="ms_send" /></bpmn:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_messages">
    <bpmndi:BPMNPlane id="BPMNPlane_messages" bpmnElement="Collaboration_messages">
      <bpmndi:BPMNShape id="msg_buyer_di" bpmnElement="msg_buyer" isHorizontal="true"><dc:Bounds x="80" y="40" width="956" height="166" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="msg_b_di" bpmnElement="msg_b" isHorizontal="true"><dc:Bounds x="110" y="40" width="926" height="166" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="msg_shop_di" bpmnElement="msg_shop" isHorizontal="true"><dc:Bounds x="80" y="296" width="956" height="166" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="msg_s_di" bpmnElement="msg_s" isHorizontal="true"><dc:Bounds x="110" y="296" width="926" height="166" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="mb_s_di" bpmnElement="mb_s"><dc:Bounds x="153" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="158" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="mb_send_di" bpmnElement="mb_send"><dc:Bounds x="280" y="86" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="mb_wait_di" bpmnElement="mb_wait"><dc:Bounds x="544" y="86" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="mb_e_di" bpmnElement="mb_e"><dc:Bounds x="880" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="885" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ms_s_di" bpmnElement="ms_s"><dc:Bounds x="352" y="364" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="357" y="408" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ms_do_di" bpmnElement="ms_do"><dc:Bounds x="544" y="342" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ms_send_di" bpmnElement="ms_send"><dc:Bounds x="808" y="342" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="Flow_0_di" bpmnElement="Flow_0"><di:waypoint x="189" y="126" /><di:waypoint x="280" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1"><di:waypoint x="460" y="126" /><di:waypoint x="544" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_2_di" bpmnElement="Flow_2"><di:waypoint x="724" y="126" /><di:waypoint x="880" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_3_di" bpmnElement="Flow_3"><di:waypoint x="388" y="382" /><di:waypoint x="544" y="382" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_4_di" bpmnElement="Flow_4"><di:waypoint x="724" y="382" /><di:waypoint x="808" y="382" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Message_0_di" bpmnElement="Message_0"><di:waypoint x="370" y="166" /><di:waypoint x="370" y="202" /><di:waypoint x="370" y="364" /><bpmndi:BPMNLabel><dc:Bounds x="378" y="177" width="40" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Message_1_di" bpmnElement="Message_1"><di:waypoint x="898" y="342" /><di:waypoint x="898" y="202" /><di:waypoint x="634" y="202" /><di:waypoint x="634" y="166" /><bpmndi:BPMNLabel><dc:Bounds x="906" y="265" width="46" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>

Именуйте сообщения (message name) для 02.03.04 Трассировка требований (концепция), 03.01.04 Интерфейсы и интеграционные взаимодействия и 03.05.03 Спецификации контрактов (OpenAPI, AsyncAPI, Protobuf). Асинхронная доставка между системами — 03.05.04 Асинхронное взаимодействие (очереди, Kafka, Events).

2.12 Подпроцесс и вызов (Subprocess / Call Activity)

Embedded subprocess — сворачивает блок в одном пуле; Call Activity — переиспользует отдельный процесс по ссылке.

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_sub" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0">
  <bpmn:collaboration id="Collaboration_sub"><bpmn:participant id="shop" name="Магазин" processRef="process_sub" /></bpmn:collaboration>
  <bpmn:process id="process_sub" name="Магазин" isExecutable="false"><bpmn:laneSet id="LaneSet_shop"><bpmn:lane id="ops" name="1. Оператор"><bpmn:flowNodeRef>su_s</bpmn:flowNodeRef><bpmn:flowNodeRef>su_sub</bpmn:flowNodeRef><bpmn:flowNodeRef>su_call</bpmn:flowNodeRef><bpmn:flowNodeRef>su_e</bpmn:flowNodeRef></bpmn:lane></bpmn:laneSet><bpmn:startEvent id="su_s" name="1.1"><bpmn:outgoing>Flow_0</bpmn:outgoing></bpmn:startEvent><bpmn:subProcess id="su_sub" name="1.2 Собрать&#10;заказ"><bpmn:incoming>Flow_0</bpmn:incoming><bpmn:outgoing>Flow_1</bpmn:outgoing></bpmn:subProcess><bpmn:callActivity id="su_call" name="1.3 Согласовать&#10;скидку" calledElement="process_discount"><bpmn:incoming>Flow_1</bpmn:incoming><bpmn:outgoing>Flow_2</bpmn:outgoing></bpmn:callActivity><bpmn:endEvent id="su_e" name="1.4"><bpmn:incoming>Flow_2</bpmn:incoming></bpmn:endEvent><bpmn:sequenceFlow id="Flow_0" sourceRef="su_s" targetRef="su_sub" /><bpmn:sequenceFlow id="Flow_1" sourceRef="su_sub" targetRef="su_call" /><bpmn:sequenceFlow id="Flow_2" sourceRef="su_call" targetRef="su_e" /></bpmn:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_sub">
    <bpmndi:BPMNPlane id="BPMNPlane_sub" bpmnElement="Collaboration_sub">
      <bpmndi:BPMNShape id="shop_di" bpmnElement="shop" isHorizontal="true"><dc:Bounds x="80" y="40" width="826" height="166" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ops_di" bpmnElement="ops" isHorizontal="true"><dc:Bounds x="110" y="40" width="796" height="166" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="su_s_di" bpmnElement="su_s"><dc:Bounds x="153" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="158" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="su_sub_di" bpmnElement="su_sub" isExpanded="false"><dc:Bounds x="280" y="86" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="su_call_di" bpmnElement="su_call"><dc:Bounds x="544" y="86" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="su_e_di" bpmnElement="su_e"><dc:Bounds x="815" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="820" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="Flow_0_di" bpmnElement="Flow_0"><di:waypoint x="189" y="126" /><di:waypoint x="280" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1"><di:waypoint x="460" y="126" /><di:waypoint x="544" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_2_di" bpmnElement="Flow_2"><di:waypoint x="724" y="126" /><di:waypoint x="815" y="126" /></bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>

2.13 Ожидание одного из событий (Event-based Gateway)

После event-based gateway — только catch-события, не задачи. Сработало одно — остальные пути отменяются; merge запрещён.

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_evgw" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0">
  <bpmn:collaboration id="Collaboration_evgw"><bpmn:participant id="shop" name="Магазин" processRef="process_evgw" /></bpmn:collaboration>
  <bpmn:process id="process_evgw" name="Магазин" isExecutable="false"><bpmn:laneSet id="LaneSet_shop"><bpmn:lane id="ops" name="1. Ожидание"><bpmn:flowNodeRef>ev_s</bpmn:flowNodeRef><bpmn:flowNodeRef>ev_g</bpmn:flowNodeRef><bpmn:flowNodeRef>ev_m</bpmn:flowNodeRef><bpmn:flowNodeRef>ev_t</bpmn:flowNodeRef><bpmn:flowNodeRef>ev_ok</bpmn:flowNodeRef><bpmn:flowNodeRef>ev_stop</bpmn:flowNodeRef><bpmn:flowNodeRef>ev_e1</bpmn:flowNodeRef><bpmn:flowNodeRef>ev_e2</bpmn:flowNodeRef></bpmn:lane></bpmn:laneSet><bpmn:startEvent id="ev_s" name="1.1"><bpmn:outgoing>Flow_0</bpmn:outgoing></bpmn:startEvent><bpmn:eventBasedGateway id="ev_g" name="1.2 Чем&#10;ответят?"><bpmn:incoming>Flow_0</bpmn:incoming><bpmn:outgoing>Flow_1</bpmn:outgoing><bpmn:outgoing>Flow_2</bpmn:outgoing></bpmn:eventBasedGateway><bpmn:intermediateCatchEvent id="ev_m" name="1.3 ответ"><bpmn:incoming>Flow_1</bpmn:incoming><bpmn:outgoing>Flow_3</bpmn:outgoing><bpmn:messageEventDefinition id="ev_m_def" /></bpmn:intermediateCatchEvent><bpmn:intermediateCatchEvent id="ev_t" name="1.4 2 дня"><bpmn:incoming>Flow_2</bpmn:incoming><bpmn:outgoing>Flow_4</bpmn:outgoing><bpmn:timerEventDefinition id="ev_t_def" /></bpmn:intermediateCatchEvent><bpmn:userTask id="ev_ok" name="1.5 Продолжить"><bpmn:incoming>Flow_3</bpmn:incoming><bpmn:outgoing>Flow_5</bpmn:outgoing></bpmn:userTask><bpmn:sendTask id="ev_stop" name="1.6 Закрыть&#10;по таймеру"><bpmn:incoming>Flow_4</bpmn:incoming><bpmn:outgoing>Flow_6</bpmn:outgoing></bpmn:sendTask><bpmn:endEvent id="ev_e1" name="1.7"><bpmn:incoming>Flow_5</bpmn:incoming></bpmn:endEvent><bpmn:endEvent id="ev_e2" name="1.8"><bpmn:incoming>Flow_6</bpmn:incoming></bpmn:endEvent><bpmn:sequenceFlow id="Flow_0" sourceRef="ev_s" targetRef="ev_g" /><bpmn:sequenceFlow id="Flow_1" sourceRef="ev_g" targetRef="ev_m" /><bpmn:sequenceFlow id="Flow_2" sourceRef="ev_g" targetRef="ev_t" /><bpmn:sequenceFlow id="Flow_3" sourceRef="ev_m" targetRef="ev_ok" /><bpmn:sequenceFlow id="Flow_4" sourceRef="ev_t" targetRef="ev_stop" /><bpmn:sequenceFlow id="Flow_5" sourceRef="ev_ok" targetRef="ev_e1" /><bpmn:sequenceFlow id="Flow_6" sourceRef="ev_stop" targetRef="ev_e2" /></bpmn:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_evgw">
    <bpmndi:BPMNPlane id="BPMNPlane_evgw" bpmnElement="Collaboration_evgw">
      <bpmndi:BPMNShape id="shop_di" bpmnElement="shop" isHorizontal="true"><dc:Bounds x="80" y="40" width="830" height="324" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ops_di" bpmnElement="ops" isHorizontal="true"><dc:Bounds x="110" y="40" width="800" height="324" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ev_s_di" bpmnElement="ev_s"><dc:Bounds x="153" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="158" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ev_g_di" bpmnElement="ev_g" isMarkerVisible="true"><dc:Bounds x="280" y="101" width="50" height="50" /><bpmndi:BPMNLabel><dc:Bounds x="276" y="55" width="59" height="28" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ev_m_di" bpmnElement="ev_m"><dc:Bounds x="421" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="406" y="152" width="66" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ev_t_di" bpmnElement="ev_t"><dc:Bounds x="421" y="266" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="406" y="310" width="66" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ev_ok_di" bpmnElement="ev_ok"><dc:Bounds x="548" y="86" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ev_stop_di" bpmnElement="ev_stop"><dc:Bounds x="548" y="244" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ev_e1_di" bpmnElement="ev_e1"><dc:Bounds x="819" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="824" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ev_e2_di" bpmnElement="ev_e2"><dc:Bounds x="819" y="266" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="824" y="310" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="Flow_0_di" bpmnElement="Flow_0"><di:waypoint x="189" y="126" /><di:waypoint x="280" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1"><di:waypoint x="330" y="126" /><di:waypoint x="421" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_2_di" bpmnElement="Flow_2"><di:waypoint x="305" y="151" /><di:waypoint x="305" y="284" /><di:waypoint x="421" y="284" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_3_di" bpmnElement="Flow_3"><di:waypoint x="457" y="126" /><di:waypoint x="548" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_4_di" bpmnElement="Flow_4"><di:waypoint x="457" y="284" /><di:waypoint x="548" y="284" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_5_di" bpmnElement="Flow_5"><di:waypoint x="728" y="126" /><di:waypoint x="819" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_6_di" bpmnElement="Flow_6"><di:waypoint x="728" y="284" /><di:waypoint x="819" y="284" /></bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>

Сравнение OR vs event-based — 06.02.01 Потоки, шлюзы, события.

2.14 Подпроцесс событий (Event Subprocess)

Обработчик на уровне процесса: стартует по catch-событию, пока процесс активен.

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_evsub" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0">
  <bpmn:collaboration id="Collaboration_evsub"><bpmn:participant id="shop" name="Магазин" processRef="process_evsub" /></bpmn:collaboration>
  <bpmn:process id="process_evsub" name="Магазин" isExecutable="false"><bpmn:laneSet id="LaneSet_shop"><bpmn:lane id="ops" name="1. Заказ"><bpmn:flowNodeRef>esu_s</bpmn:flowNodeRef><bpmn:flowNodeRef>esu_t</bpmn:flowNodeRef><bpmn:flowNodeRef>esu_e</bpmn:flowNodeRef><bpmn:flowNodeRef>esu_sub</bpmn:flowNodeRef></bpmn:lane></bpmn:laneSet><bpmn:startEvent id="esu_s" name="1.1"><bpmn:outgoing>Flow_0</bpmn:outgoing></bpmn:startEvent><bpmn:userTask id="esu_t" name="1.2 Вести&#10;заказ"><bpmn:incoming>Flow_0</bpmn:incoming><bpmn:outgoing>Flow_1</bpmn:outgoing></bpmn:userTask><bpmn:endEvent id="esu_e" name="1.3"><bpmn:incoming>Flow_1</bpmn:incoming></bpmn:endEvent><bpmn:subProcess id="esu_sub" name="Отмена по сообщению" triggeredByEvent="true"></bpmn:subProcess><bpmn:sequenceFlow id="Flow_0" sourceRef="esu_s" targetRef="esu_t" /><bpmn:sequenceFlow id="Flow_1" sourceRef="esu_t" targetRef="esu_e" /></bpmn:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_evsub">
    <bpmndi:BPMNPlane id="BPMNPlane_evsub" bpmnElement="Collaboration_evsub">
      <bpmndi:BPMNShape id="shop_di" bpmnElement="shop" isHorizontal="true"><dc:Bounds x="80" y="40" width="562" height="324" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ops_di" bpmnElement="ops" isHorizontal="true"><dc:Bounds x="110" y="40" width="532" height="324" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="esu_s_di" bpmnElement="esu_s"><dc:Bounds x="153" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="158" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="esu_t_di" bpmnElement="esu_t"><dc:Bounds x="280" y="86" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="esu_e_di" bpmnElement="esu_e"><dc:Bounds x="551" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="556" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="esu_sub_di" bpmnElement="esu_sub" isExpanded="false"><dc:Bounds x="280" y="244" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="Flow_0_di" bpmnElement="Flow_0"><di:waypoint x="189" y="126" /><di:waypoint x="280" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1"><di:waypoint x="460" y="126" /><di:waypoint x="551" y="126" /></bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>

2.15 Множественные экземпляры (Multiple Instances)

Одна задача для каждого элемента набора. Маркер MI — три линии внизу задачи.

РежимПоведениеПример
Parallel MIВсе экземпляры одновременноПроверить каждую строку заказа
Sequential MIПо очередиСогласование по цепочке департаментов

Completion condition задаётся в loop characteristics, не на шлюзе.

Parallel MI:

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_mip" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0">
  <bpmn:collaboration id="Collaboration_mip"><bpmn:participant id="shop" name="Магазин" processRef="process_mip" /></bpmn:collaboration>
  <bpmn:process id="process_mip" name="Магазин" isExecutable="false"><bpmn:laneSet id="LaneSet_shop"><bpmn:lane id="ops" name="1. Склад"><bpmn:flowNodeRef>mi_s</bpmn:flowNodeRef><bpmn:flowNodeRef>mi_t</bpmn:flowNodeRef><bpmn:flowNodeRef>mi_e</bpmn:flowNodeRef></bpmn:lane></bpmn:laneSet><bpmn:startEvent id="mi_s" name="1.1"><bpmn:outgoing>Flow_0</bpmn:outgoing></bpmn:startEvent><bpmn:userTask id="mi_t" name="1.2 Проверить&#10;строку заказа"><bpmn:incoming>Flow_0</bpmn:incoming><bpmn:outgoing>Flow_1</bpmn:outgoing><bpmn:multiInstanceLoopCharacteristics isSequential="false" /></bpmn:userTask><bpmn:endEvent id="mi_e" name="1.3"><bpmn:incoming>Flow_1</bpmn:incoming></bpmn:endEvent><bpmn:sequenceFlow id="Flow_0" sourceRef="mi_s" targetRef="mi_t" /><bpmn:sequenceFlow id="Flow_1" sourceRef="mi_t" targetRef="mi_e" /></bpmn:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_mip">
    <bpmndi:BPMNPlane id="BPMNPlane_mip" bpmnElement="Collaboration_mip">
      <bpmndi:BPMNShape id="shop_di" bpmnElement="shop" isHorizontal="true"><dc:Bounds x="80" y="40" width="562" height="166" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ops_di" bpmnElement="ops" isHorizontal="true"><dc:Bounds x="110" y="40" width="532" height="166" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="mi_s_di" bpmnElement="mi_s"><dc:Bounds x="153" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="158" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="mi_t_di" bpmnElement="mi_t"><dc:Bounds x="280" y="86" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="mi_e_di" bpmnElement="mi_e"><dc:Bounds x="551" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="556" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="Flow_0_di" bpmnElement="Flow_0"><di:waypoint x="189" y="126" /><di:waypoint x="280" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1"><di:waypoint x="460" y="126" /><di:waypoint x="551" y="126" /></bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>

Sequential MI — типичный паттерн «цепочка согласующих» в одной задаче:

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_mis" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0">
  <bpmn:collaboration id="Collaboration_mis"><bpmn:participant id="shop" name="Магазин" processRef="process_mis" /></bpmn:collaboration>
  <bpmn:process id="process_mis" name="Магазин" isExecutable="false"><bpmn:laneSet id="LaneSet_shop"><bpmn:lane id="ops" name="1. Согласование"><bpmn:flowNodeRef>ms_s</bpmn:flowNodeRef><bpmn:flowNodeRef>ms_t</bpmn:flowNodeRef><bpmn:flowNodeRef>ms_e</bpmn:flowNodeRef></bpmn:lane></bpmn:laneSet><bpmn:startEvent id="ms_s" name="1.1"><bpmn:outgoing>Flow_0</bpmn:outgoing></bpmn:startEvent><bpmn:userTask id="ms_t" name="1.2 Согласовать&#10;в отделе"><bpmn:incoming>Flow_0</bpmn:incoming><bpmn:outgoing>Flow_1</bpmn:outgoing><bpmn:multiInstanceLoopCharacteristics isSequential="true" /></bpmn:userTask><bpmn:endEvent id="ms_e" name="1.3"><bpmn:incoming>Flow_1</bpmn:incoming></bpmn:endEvent><bpmn:sequenceFlow id="Flow_0" sourceRef="ms_s" targetRef="ms_t" /><bpmn:sequenceFlow id="Flow_1" sourceRef="ms_t" targetRef="ms_e" /></bpmn:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_mis">
    <bpmndi:BPMNPlane id="BPMNPlane_mis" bpmnElement="Collaboration_mis">
      <bpmndi:BPMNShape id="shop_di" bpmnElement="shop" isHorizontal="true"><dc:Bounds x="80" y="40" width="562" height="166" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ops_di" bpmnElement="ops" isHorizontal="true"><dc:Bounds x="110" y="40" width="532" height="166" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ms_s_di" bpmnElement="ms_s"><dc:Bounds x="153" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="158" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ms_t_di" bpmnElement="ms_t"><dc:Bounds x="280" y="86" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ms_e_di" bpmnElement="ms_e"><dc:Bounds x="551" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="556" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="Flow_0_di" bpmnElement="Flow_0"><di:waypoint x="189" y="126" /><di:waypoint x="280" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1"><di:waypoint x="460" y="126" /><di:waypoint x="551" y="126" /></bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>

Link throw / link catch — off-page connector: пара событий с одним именем связывает фрагменты одной диаграммы без подпроцесса.

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_link" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0">
  <bpmn:collaboration id="Collaboration_link"><bpmn:participant id="shop" name="Магазин" processRef="process_link" /></bpmn:collaboration>
  <bpmn:process id="process_link" name="Магазин" isExecutable="false"><bpmn:laneSet id="LaneSet_shop"><bpmn:lane id="ops" name="1. Оператор"><bpmn:flowNodeRef>lk_s</bpmn:flowNodeRef><bpmn:flowNodeRef>lk_t</bpmn:flowNodeRef><bpmn:flowNodeRef>lk_throw</bpmn:flowNodeRef><bpmn:flowNodeRef>lk_catch</bpmn:flowNodeRef><bpmn:flowNodeRef>lk_e</bpmn:flowNodeRef></bpmn:lane></bpmn:laneSet><bpmn:startEvent id="lk_s" name="1.1"><bpmn:outgoing>Flow_0</bpmn:outgoing></bpmn:startEvent><bpmn:userTask id="lk_t" name="1.2 Повторить&#10;запрос"><bpmn:incoming>Flow_0</bpmn:incoming><bpmn:outgoing>Flow_1</bpmn:outgoing></bpmn:userTask><bpmn:intermediateThrowEvent id="lk_throw" name="1.3"><bpmn:incoming>Flow_1</bpmn:incoming><bpmn:linkEventDefinition id="lk_throw_def" name="ещё раз" /></bpmn:intermediateThrowEvent><bpmn:intermediateCatchEvent id="lk_catch" name="1.4"><bpmn:outgoing>Flow_2</bpmn:outgoing><bpmn:linkEventDefinition id="lk_catch_def" name="ещё раз" /></bpmn:intermediateCatchEvent><bpmn:endEvent id="lk_e" name="1.5"><bpmn:incoming>Flow_2</bpmn:incoming></bpmn:endEvent><bpmn:sequenceFlow id="Flow_0" sourceRef="lk_s" targetRef="lk_t" /><bpmn:sequenceFlow id="Flow_1" sourceRef="lk_t" targetRef="lk_throw" /><bpmn:sequenceFlow id="Flow_2" sourceRef="lk_catch" targetRef="lk_e" /></bpmn:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_link">
    <bpmndi:BPMNPlane id="BPMNPlane_link" bpmnElement="Collaboration_link">
      <bpmndi:BPMNShape id="shop_di" bpmnElement="shop" isHorizontal="true"><dc:Bounds x="80" y="40" width="562" height="324" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ops_di" bpmnElement="ops" isHorizontal="true"><dc:Bounds x="110" y="40" width="532" height="324" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="lk_s_di" bpmnElement="lk_s"><dc:Bounds x="153" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="158" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="lk_t_di" bpmnElement="lk_t"><dc:Bounds x="280" y="86" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="lk_throw_di" bpmnElement="lk_throw"><dc:Bounds x="551" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="556" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="lk_catch_di" bpmnElement="lk_catch"><dc:Bounds x="153" y="266" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="158" y="310" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="lk_e_di" bpmnElement="lk_e"><dc:Bounds x="352" y="266" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="357" y="310" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="Flow_0_di" bpmnElement="Flow_0"><di:waypoint x="189" y="126" /><di:waypoint x="280" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1"><di:waypoint x="460" y="126" /><di:waypoint x="551" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_2_di" bpmnElement="Flow_2"><di:waypoint x="189" y="284" /><di:waypoint x="352" y="284" /></bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>

2.17 Terminate End Event

Terminate end event мгновенно завершает все активные токены процесса. Только когда бизнес требует «остановить всё»; иначе — обычный end на каждой ветке.

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_term" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0">
  <bpmn:collaboration id="Collaboration_term"><bpmn:participant id="shop" name="Магазин" processRef="process_term" /></bpmn:collaboration>
  <bpmn:process id="process_term" name="Магазин" isExecutable="false"><bpmn:laneSet id="LaneSet_shop"><bpmn:lane id="ops" name="1. Исполнение"><bpmn:flowNodeRef>tm_s</bpmn:flowNodeRef><bpmn:flowNodeRef>tm_g</bpmn:flowNodeRef><bpmn:flowNodeRef>tm_a</bpmn:flowNodeRef><bpmn:flowNodeRef>tm_b</bpmn:flowNodeRef><bpmn:flowNodeRef>tm_e</bpmn:flowNodeRef><bpmn:flowNodeRef>tm_t</bpmn:flowNodeRef></bpmn:lane></bpmn:laneSet><bpmn:startEvent id="tm_s" name="1.1"><bpmn:outgoing>Flow_0</bpmn:outgoing></bpmn:startEvent><bpmn:parallelGateway id="tm_g" name="1.2"><bpmn:incoming>Flow_0</bpmn:incoming><bpmn:outgoing>Flow_1</bpmn:outgoing><bpmn:outgoing>Flow_2</bpmn:outgoing></bpmn:parallelGateway><bpmn:userTask id="tm_a" name="1.3 Готовить&#10;отчёт"><bpmn:incoming>Flow_1</bpmn:incoming><bpmn:outgoing>Flow_3</bpmn:outgoing></bpmn:userTask><bpmn:receiveTask id="tm_b" name="1.4 Ждать&#10;отмену"><bpmn:incoming>Flow_2</bpmn:incoming><bpmn:outgoing>Flow_4</bpmn:outgoing></bpmn:receiveTask><bpmn:endEvent id="tm_e" name="1.5"><bpmn:incoming>Flow_3</bpmn:incoming></bpmn:endEvent><bpmn:endEvent id="tm_t" name="1.6"><bpmn:incoming>Flow_4</bpmn:incoming><bpmn:terminateEventDefinition id="tm_t_def" /></bpmn:endEvent><bpmn:sequenceFlow id="Flow_0" sourceRef="tm_s" targetRef="tm_g" /><bpmn:sequenceFlow id="Flow_1" sourceRef="tm_g" targetRef="tm_a" /><bpmn:sequenceFlow id="Flow_2" sourceRef="tm_g" targetRef="tm_b" /><bpmn:sequenceFlow id="Flow_3" sourceRef="tm_a" targetRef="tm_e" /><bpmn:sequenceFlow id="Flow_4" sourceRef="tm_b" targetRef="tm_t" /></bpmn:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_term">
    <bpmndi:BPMNPlane id="BPMNPlane_term" bpmnElement="Collaboration_term">
      <bpmndi:BPMNShape id="shop_di" bpmnElement="shop" isHorizontal="true"><dc:Bounds x="80" y="40" width="696" height="324" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ops_di" bpmnElement="ops" isHorizontal="true"><dc:Bounds x="110" y="40" width="666" height="324" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="tm_s_di" bpmnElement="tm_s"><dc:Bounds x="153" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="158" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="tm_g_di" bpmnElement="tm_g" isMarkerVisible="true"><dc:Bounds x="280" y="101" width="50" height="50" /><bpmndi:BPMNLabel><dc:Bounds x="292" y="69" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="tm_a_di" bpmnElement="tm_a"><dc:Bounds x="414" y="86" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="tm_b_di" bpmnElement="tm_b"><dc:Bounds x="414" y="244" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="tm_e_di" bpmnElement="tm_e"><dc:Bounds x="685" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="690" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="tm_t_di" bpmnElement="tm_t"><dc:Bounds x="685" y="266" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="690" y="310" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="Flow_0_di" bpmnElement="Flow_0"><di:waypoint x="189" y="126" /><di:waypoint x="280" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1"><di:waypoint x="330" y="126" /><di:waypoint x="414" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_2_di" bpmnElement="Flow_2"><di:waypoint x="305" y="151" /><di:waypoint x="305" y="284" /><di:waypoint x="414" y="284" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_3_di" bpmnElement="Flow_3"><di:waypoint x="594" y="126" /><di:waypoint x="685" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_4_di" bpmnElement="Flow_4"><di:waypoint x="594" y="284" /><di:waypoint x="685" y="284" /></bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>

3. Как применяется в работе аналитика

  1. Начинайте с последовательности — не добавляйте шлюзы «на будущее».
  2. Шлюзы парные по типу — AND-split → AND-merge; OR-split → OR-merge. XOR-merge опционален в structured XOR, но при сомнении рисуйте явный XOR-join.
  3. Не смешивайте AND и XOR на слиянии — см. anti-pattern в разделе 4.
  4. Граничные события — для SLA, ошибок, эскалаций; не дублируйте логику условными стрелками из середины задачи.
  5. Инкапсулируйте — subprocess / call activity; шаблон — 10.01.08 Шаблон сквозной фичи (BPMN-процесс).
  6. Сверяйтесь со стандартом и WPI — ревью по 08.04 Рецензирование и инспекции (техники Фейгана); исполняемость — 06.02.04 Работа с Camunda.

UML Activity vs BPMN: Activity Diagram подходит для алгоритма внутри сервиса или метода; BPMN — для сквозного процесса с участниками, SLA и исполнением в движке. Подробнее — 06.01.02 Поведенческие диаграммы (State, Activity, Use Case).

Выбор паттерна (кратко):

ЗадачаПаттерн
Один из путей по условиюXOR
Все ветки параллельноAND
Несколько путей по независимым условиямOR
Ждём внешнее событие или времяEvent-based gateway + catch
SLA на задачеBoundary timer
Участники в разных организацияхПулы + message flow + message start
Повтор использования блокаCall activity
N обработчиков одной задачиMI parallel / sequential
Большая диаграмма, разрыв без subprocessLink throw / catch

4. Типовые ошибки и ограничения

Anti-pattern: AND-split → XOR-merge

Параллельные ветки сходятся в XOR — merge «висит», пока не придут все ветки, хотя XOR ждёт одну.

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_bad" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0">
  <bpmn:collaboration id="Collaboration_bad"><bpmn:participant id="shop" name="Магазин" processRef="process_bad" /></bpmn:collaboration>
  <bpmn:process id="process_bad" name="Магазин" isExecutable="false"><bpmn:laneSet id="LaneSet_shop"><bpmn:lane id="ops" name="1. Исполнение"><bpmn:flowNodeRef>bd_s</bpmn:flowNodeRef><bpmn:flowNodeRef>bd_g</bpmn:flowNodeRef><bpmn:flowNodeRef>bd_a</bpmn:flowNodeRef><bpmn:flowNodeRef>bd_b</bpmn:flowNodeRef><bpmn:flowNodeRef>bd_j</bpmn:flowNodeRef><bpmn:flowNodeRef>bd_e</bpmn:flowNodeRef></bpmn:lane></bpmn:laneSet><bpmn:startEvent id="bd_s" name="1.1"><bpmn:outgoing>Flow_0</bpmn:outgoing></bpmn:startEvent><bpmn:parallelGateway id="bd_g" name="1.2"><bpmn:incoming>Flow_0</bpmn:incoming><bpmn:outgoing>Flow_1</bpmn:outgoing><bpmn:outgoing>Flow_2</bpmn:outgoing></bpmn:parallelGateway><bpmn:manualTask id="bd_a" name="1.3 Упаковать"><bpmn:incoming>Flow_1</bpmn:incoming><bpmn:outgoing>Flow_3</bpmn:outgoing></bpmn:manualTask><bpmn:serviceTask id="bd_b" name="1.4 Выставить&#10;счёт"><bpmn:incoming>Flow_2</bpmn:incoming><bpmn:outgoing>Flow_4</bpmn:outgoing></bpmn:serviceTask><bpmn:exclusiveGateway id="bd_j" name="1.5"><bpmn:incoming>Flow_3</bpmn:incoming><bpmn:incoming>Flow_4</bpmn:incoming><bpmn:outgoing>Flow_5</bpmn:outgoing></bpmn:exclusiveGateway><bpmn:endEvent id="bd_e" name="1.6"><bpmn:incoming>Flow_5</bpmn:incoming></bpmn:endEvent><bpmn:sequenceFlow id="Flow_0" sourceRef="bd_s" targetRef="bd_g" /><bpmn:sequenceFlow id="Flow_1" sourceRef="bd_g" targetRef="bd_a" /><bpmn:sequenceFlow id="Flow_2" sourceRef="bd_g" targetRef="bd_b" /><bpmn:sequenceFlow id="Flow_3" sourceRef="bd_a" targetRef="bd_j" /><bpmn:sequenceFlow id="Flow_4" sourceRef="bd_b" targetRef="bd_j" /><bpmn:sequenceFlow id="Flow_5" sourceRef="bd_j" targetRef="bd_e" /></bpmn:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_bad">
    <bpmndi:BPMNPlane id="BPMNPlane_bad" bpmnElement="Collaboration_bad">
      <bpmndi:BPMNShape id="shop_di" bpmnElement="shop" isHorizontal="true"><dc:Bounds x="80" y="40" width="830" height="324" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ops_di" bpmnElement="ops" isHorizontal="true"><dc:Bounds x="110" y="40" width="800" height="324" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="bd_s_di" bpmnElement="bd_s"><dc:Bounds x="153" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="158" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="bd_g_di" bpmnElement="bd_g" isMarkerVisible="true"><dc:Bounds x="280" y="101" width="50" height="50" /><bpmndi:BPMNLabel><dc:Bounds x="292" y="69" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="bd_a_di" bpmnElement="bd_a"><dc:Bounds x="414" y="86" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="bd_b_di" bpmnElement="bd_b"><dc:Bounds x="414" y="244" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="bd_j_di" bpmnElement="bd_j" isMarkerVisible="true"><dc:Bounds x="678" y="101" width="50" height="50" /><bpmndi:BPMNLabel><dc:Bounds x="690" y="69" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="bd_e_di" bpmnElement="bd_e"><dc:Bounds x="819" y="108" width="36" height="36" /><bpmndi:BPMNLabel><dc:Bounds x="824" y="152" width="27" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="Flow_0_di" bpmnElement="Flow_0"><di:waypoint x="189" y="126" /><di:waypoint x="280" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1"><di:waypoint x="330" y="126" /><di:waypoint x="414" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_2_di" bpmnElement="Flow_2"><di:waypoint x="305" y="151" /><di:waypoint x="305" y="284" /><di:waypoint x="414" y="284" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_3_di" bpmnElement="Flow_3"><di:waypoint x="594" y="126" /><di:waypoint x="678" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_4_di" bpmnElement="Flow_4"><di:waypoint x="594" y="284" /><di:waypoint x="703" y="284" /><di:waypoint x="703" y="151" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_5_di" bpmnElement="Flow_5"><di:waypoint x="728" y="126" /><di:waypoint x="819" y="126" /></bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>

Исправление: AND-merge (+) перед «Отгрузить», как в п. 2.3.

Anti-pattern: OR-merge как AND

OR-merge ждёт завершения только активированных на OR-split веток. Ошибка — требовать завершения всех исходящих веток split, включая неактивированные: процесс блокируется навсегда.

Исправление: OR-merge в паре с тем же OR-split; условия на исходящих потоках явные; в спецификации зафиксируйте, какие ветки активировались.

Anti-pattern: неявное слияние после AND-split

Несколько потоков после AND-split сходятся в одну задачу без AND-merge — движок может пропустить шаг до завершения всех веток.

Исправление: явный AND-merge (+), как в п. 2.3 и 2.7.

Другие частые ошибки

ОшибкаПочему плохоЧто делать
Event-based → сразу задачиНарушение BPMN 2.0Catch-события, затем задачи
OR как XORПропуск параллельных ветокOR активирует все истинные условия
Standard loop как XOR-стрелкаНеверная семантикаМаркер петли на задаче, без обратного flow
Message flow внутри пулаСмешение collaboration и processSequence flow между дорожками
Пул без message start/catchПроцесс «висящий» без триггераMessage start или catch после start — п. 2.11
«Compensation» через XORНе откат по стандартуCompensation marker или явная спецификация
N non-interrupting без AND-mergeДве параллельные ветки без синхронизацииAND-merge перед общим шагом — п. 2.7
Terminate без необходимостиОбрывает весь процессТолько при явном требовании
Схема не в BPMN XMLНет типов задач, маркеров MI и boundaryФинальная модель — файл .bpmn и 07.04 Инструменты моделирования (Sparx EA, Lucidchart, draw.io)

Связи с другими разделами базы

Источники и дополнительные материалы

Книги и стандарты

  • OMG. Business Process Model and Notation (BPMN) Version 2.0.2 — норматив по шлюзам, boundary events, MI, event subprocess, compensation. https://www.omg.org/spec/BPMN/2.0.2
  • Брюс Сильвер. «BPMN в действии. Моделирование и анализ бизнес-процессов» — Method & Style, structured models, парность шлюзов. ДМК Пресс.
  • Томас Аллвейер. «BPMN 2.0. Introduction to the Standard for Business Process Modeling» — распространённые шаблоны потоков.
  • Stephen A. White. «BPMN 2.0 and Workflow Patterns» — соответствие элементов BPMN паттернам WPI. https://www.omg.org/bpmn/Documents/Notations_and_Workflow_Patterns.pdf

Каталоги паттернов

Справочники по моделированию