Если 06.02.01 Потоки, шлюзы, события определяют динамику процесса — как и в каком порядке движется работа, — то пулы, дорожки и артефакты задают организационный и информационный контекст: кто выполняет работу и какие документы и данные при этом участвуют. Без этого слоя диаграмма остаётся блок-схемой одного исполнителя; с ним — модель совместного процесса с границами ответственности и трассируемостью данных.

1. Суть темы

Эта заметка — углубление ветки 06.02 по организационному и информационному слою BPMN. Обзор нотации и виды задач — в 03.04.01 BPMN 2.0 - введение и основы (ветка SA «описание бизнес-процессов»); если вы уже прошли 03.04, здесь — детали пулов, дорожек, артефактов и типовые ошибки компоновки. Если заходите только через 06.02 — сначала 03.04.01, затем 06.02.01 Потоки, шлюзы, события, затем эта заметка.

BPMN различает два уровня диаграммы, и пулы с дорожками ведут себя на них по-разному:

Тип диаграммыЧто моделируетсяПулыДорожки
Диаграмма процесса (Process Diagram)Один процесс внутри одного участникаРовно один пул (явный или неявный)Роли и подразделения внутри этого участника
Диаграмма взаимодействия (Collaboration Diagram)Несколько участников и обмен между нимиНесколько пулов; каждый процесс — ровно в одном пулеДорожки внутри каждого пула по необходимости

Правило «каждый процесс обязан находиться ровно в одном пуле» и «между пулами только потоки сообщений» относится к collaboration. На диаграмме процесса с одним пулом и дорожками «Отдел A / Отдел B / CRM» вы моделируете передачу работы внутри одной организации через sequence flow, пересекающий границы дорожек — без message flow.

Пул (Pool) — участник процесса: организация, юридическое лицо, автономная система или внешний актор верхнего уровня. Дорожка (Lane) — роль, должность, подразделение или система-исполнитель внутри одного пула. Артефакты (Artifacts) — объекты данных, хранилища, группы и аннотации; они не двигают токен, но документируют информационный контекст.

Когда нужен только протокол обмена между участниками без детализации процессов внутри пулов, используют диаграмму хореографии (Choreography Diagram) — см. 06.02.03 Типовые паттерны BPMN. Collaboration с white box избыточен, если внутренние шаги партнёров не важны.

Аналогия «чёрного ящика» пула близка к внешнему актору на 03.01.02 Моделирование контекста системы (Context Diagram): внутреннее устройство участника нас не интересует, важны только сообщения на границе.

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

2.1 Пулы (Pools)

Пул — контейнер для процесса участника. Графически это большой прямоугольник; имя пула размещается вдоль границы.

Participant и Pool. В XML-модели BPMN на collaboration Participant — логический участник (модельный элемент с именем и ссылкой на процесс); Pool — его графическое представление на диаграмме. На process diagram participant может быть не нарисован — пул неявный. При импорте в Camunda или валидации XSD «pool» и «participant» не синонимы: у participant может быть пустой processRef (участник без детализированного процесса), а pool на рисунке всё равно показывает его границу.

ВидОписаниеПример
«Белый ящик» (white box)Внутри пула показан процесс: события, задачи, шлюзы, sequence flow.Пул «Интернет-магазин» с детальным процессом обработки заказа.
«Чёрный ящик» (black box)Графическая договорённость: внутри пула нет элементов процесса. Message flow идёт к границе пула или к событию/активности на границе.Пул «Платёжная система»: отправляем запрос, получаем ответ; внутренняя логика вне фокуса модели.
Пул без процессаМодельный случай: participant на collaboration без processRef (или с пустым процессом) — партнёр присутствует, но его внутренний поток не моделируется. Визуально совпадает с black box, но отличие в XML: есть participant, нет привязанного process.Пул «Банк-эквайер» только с message flow к границе; legacy-система как контрагент без BPMN-процесса.

Правила пулов на collaboration:

  • Элементы одного процесса нельзя размещать в разных пулах.
  • Между пулами — только потоки сообщений (Message Flow): пунктир с пустой стрелкой. Sequence flow не пересекает границу пула.
  • На одной collaboration может быть несколько процессов — по одному (или ни одного) в каждом пуле. Это не «один процесс, разрезанный на пулы».

Потоки сообщений (кратко; семантика send/receive и message events — в 06.02.01 Потоки, шлюзы, события):

  • Соединяют разные пулы (или пул с внешним участником).
  • Message в BPMN — элемент данных сообщения; Message Flow — линия передачи. Имеет смысл именовать сообщение (message name) для интеграционного анализа — см. 03.01.04 Интерфейсы и интеграционные взаимодействия.
  • Пунктир внутри одного пула — это не message flow, а ошибка моделирования (для порядка шагов — sequence flow).

Точки крепления message flow (типовой паттерн на ревью):

Конец линииДопустимые якоря
У отправителяSend Task, Message Intermediate Throw Event, Message End Event; для black box — граница пула
У получателяReceive Task, Message Start Event, Message Intermediate Catch Event; для black box — граница пула

Линия не «висит в воздухе» между пулами: каждый конец привязан к активности, событию или контуру пула. Задачи Send/Receive и message throw/catch — в 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_pools_box" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0">
  <bpmn:collaboration id="Collaboration_pools_box"><bpmn:participant id="bb_buyer" name="Покупатель" /><bpmn:participant id="wb_shop" name="Магазин" processRef="process_wb" /><bpmn:messageFlow id="Message_0" name="Заказ" sourceRef="bb_buyer" targetRef="wb_recv" /><bpmn:messageFlow id="Message_1" name="Доставка" sourceRef="wb_send" targetRef="bb_buyer" /></bpmn:collaboration>
  <bpmn:process id="process_wb" name="Магазин" isExecutable="false"><bpmn:laneSet id="LaneSet_wb_shop"><bpmn:lane id="wb_sales" name="1. Продажи"><bpmn:flowNodeRef>wb_recv</bpmn:flowNodeRef><bpmn:flowNodeRef>wb_check</bpmn:flowNodeRef></bpmn:lane><bpmn:lane id="wb_wh" name="2. Склад"><bpmn:flowNodeRef>wb_pack</bpmn:flowNodeRef><bpmn:flowNodeRef>wb_send</bpmn:flowNodeRef></bpmn:lane></bpmn:laneSet><bpmn:receiveTask id="wb_recv" name="1.1 Получить&#10;заказ"><bpmn:outgoing>Flow_0</bpmn:outgoing></bpmn:receiveTask><bpmn:serviceTask id="wb_check" name="1.2 Проверить&#10;наличие"><bpmn:incoming>Flow_0</bpmn:incoming><bpmn:outgoing>Flow_1</bpmn:outgoing></bpmn:serviceTask><bpmn:manualTask id="wb_pack" name="2.1 Упаковать"><bpmn:incoming>Flow_1</bpmn:incoming><bpmn:outgoing>Flow_2</bpmn:outgoing></bpmn:manualTask><bpmn:sendTask id="wb_send" name="2.2 Сообщить&#10;о доставке"><bpmn:incoming>Flow_2</bpmn:incoming></bpmn:sendTask><bpmn:sequenceFlow id="Flow_0" sourceRef="wb_recv" targetRef="wb_check" /><bpmn:sequenceFlow id="Flow_1" sourceRef="wb_check" targetRef="wb_pack" /><bpmn:sequenceFlow id="Flow_2" sourceRef="wb_pack" targetRef="wb_send" /></bpmn:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_pools_box">
    <bpmndi:BPMNPlane id="BPMNPlane_pools_box" bpmnElement="Collaboration_pools_box">
      <bpmndi:BPMNShape id="bb_buyer_di" bpmnElement="bb_buyer" isHorizontal="true"><dc:Bounds x="80" y="40" width="1086" height="120" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="wb_shop_di" bpmnElement="wb_shop" isHorizontal="true"><dc:Bounds x="80" y="250" width="1086" height="332" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="wb_sales_di" bpmnElement="wb_sales" isHorizontal="true"><dc:Bounds x="110" y="250" width="1056" height="166" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="wb_wh_di" bpmnElement="wb_wh" isHorizontal="true"><dc:Bounds x="110" y="416" width="1056" height="166" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="wb_recv_di" bpmnElement="wb_recv"><dc:Bounds x="146" y="296" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="wb_check_di" bpmnElement="wb_check"><dc:Bounds x="410" y="296" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="wb_pack_di" bpmnElement="wb_pack"><dc:Bounds x="674" y="462" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="wb_send_di" bpmnElement="wb_send"><dc:Bounds x="938" y="462" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="Flow_0_di" bpmnElement="Flow_0"><di:waypoint x="326" y="336" /><di:waypoint x="410" y="336" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1"><di:waypoint x="590" y="336" /><di:waypoint x="764" y="336" /><di:waypoint x="764" y="462" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_2_di" bpmnElement="Flow_2"><di:waypoint x="854" y="502" /><di:waypoint x="938" y="502" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Message_0_di" bpmnElement="Message_0"><di:waypoint x="623" y="160" /><di:waypoint x="623" y="196" /><di:waypoint x="236" y="196" /><di:waypoint x="236" y="296" /><bpmndi:BPMNLabel><dc:Bounds x="631" y="171" width="40" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Message_1_di" bpmnElement="Message_1"><di:waypoint x="1028" y="462" /><di:waypoint x="1028" y="196" /><di:waypoint x="1028" y="160" /><bpmndi:BPMNLabel><dc:Bounds x="1036" y="322" width="59" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>

У «Покупателя» нет процесса: это participant без processRef. Message flow «Заказ» приходит на receive task магазина, ответ «Доставка» крепится к границе чёрного ящика. Внутри магазина — только sequence flow.

2.2 Дорожки (Lanes)

Дорожка — логический раздел внутри одного пула: конкретная роль, должность, подразделение или система, выполняющая часть работ.

Виды представления:

  • Горизонтальные — классический вид; каждая дорожка на всю ширину пула.
  • Вертикальные — та же семантика, другая ориентация; удобно для длинных процессов и печати в Confluence.
  • Вложенные — дорожка внутри дорожки (отдел → группа → исполнитель). Задача лежит в самой глубокой дорожке того исполнителя, который её выполняет; ответственность наследуется от родительской дорожки.

Правила дорожек:

  • Дорожки существуют только внутри пула.
  • Задача и подпроцесс размещаются в дорожке исполнителя — того, кто реально выполняет действие, а не того, кто инициировал передачу.
  • Sequence flow свободно пересекает границы дорожек внутри одного пула — это передача работы между ролями, не межорганизационный обмен.
  • Пул без явного lane set в инструментах трактуется как один неявный процесс в одной «неименованной» дорожке; для нескольких ролей lane set лучше задавать явно.

Именуйте дорожки по роли или системе («Менеджер по продажам», «CRM»), а не по ФИО сотрудника. Участники процесса как стейкholders — 02.01.03 Анализ заинтересованных сторон (Stakeholder Map).

Дорожка задаёт организационную ответственность на диаграмме, но не назначает автоматически исполнителя в BPMN-движке (candidate groups, assignment) — это настраивается отдельно; см. 06.02.04 Работа с Camunda.

<?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_lanes_shop" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0">
  <bpmn:collaboration id="Collaboration_lanes_shop"><bpmn:participant id="lane_shop" name="Магазин" processRef="process_lanes" /></bpmn:collaboration>
  <bpmn:process id="process_lanes" name="Магазин" isExecutable="false"><bpmn:laneSet id="LaneSet_lane_shop"><bpmn:lane id="sales" name="1. Продажи"><bpmn:flowNodeRef>l_req</bpmn:flowNodeRef><bpmn:flowNodeRef>l_bill</bpmn:flowNodeRef></bpmn:lane><bpmn:lane id="floor" name="2. Склад"><bpmn:flowNodeRef>l_pick</bpmn:flowNodeRef><bpmn:flowNodeRef>l_hand</bpmn:flowNodeRef></bpmn:lane></bpmn:laneSet><bpmn:userTask id="l_req" name="1.1 Обработать&#10;заявку"><bpmn:outgoing>Flow_0</bpmn:outgoing></bpmn:userTask><bpmn:serviceTask id="l_bill" name="1.2 Выставить&#10;счёт"><bpmn:incoming>Flow_0</bpmn:incoming><bpmn:outgoing>Flow_1</bpmn:outgoing></bpmn:serviceTask><bpmn:manualTask id="l_pick" name="2.1 Собрать&#10;товар"><bpmn:incoming>Flow_1</bpmn:incoming><bpmn:outgoing>Flow_2</bpmn:outgoing></bpmn:manualTask><bpmn:sendTask id="l_hand" name="2.2 Передать&#10;в доставку"><bpmn:incoming>Flow_2</bpmn:incoming></bpmn:sendTask><bpmn:sequenceFlow id="Flow_0" sourceRef="l_req" targetRef="l_bill" /><bpmn:sequenceFlow id="Flow_1" sourceRef="l_bill" targetRef="l_pick" /><bpmn:sequenceFlow id="Flow_2" sourceRef="l_pick" targetRef="l_hand" /></bpmn:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_lanes_shop">
    <bpmndi:BPMNPlane id="BPMNPlane_lanes_shop" bpmnElement="Collaboration_lanes_shop">
      <bpmndi:BPMNShape id="lane_shop_di" bpmnElement="lane_shop" isHorizontal="true"><dc:Bounds x="80" y="40" width="1086" height="332" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="sales_di" bpmnElement="sales" isHorizontal="true"><dc:Bounds x="110" y="40" width="1056" height="166" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="floor_di" bpmnElement="floor" isHorizontal="true"><dc:Bounds x="110" y="206" width="1056" height="166" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="l_req_di" bpmnElement="l_req"><dc:Bounds x="146" y="86" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="l_bill_di" bpmnElement="l_bill"><dc:Bounds x="410" y="86" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="l_pick_di" bpmnElement="l_pick"><dc:Bounds x="674" y="252" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="l_hand_di" bpmnElement="l_hand"><dc:Bounds x="938" y="252" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="Flow_0_di" bpmnElement="Flow_0"><di:waypoint x="326" y="126" /><di:waypoint x="410" y="126" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1"><di:waypoint x="590" y="126" /><di:waypoint x="764" y="126" /><di:waypoint x="764" y="252" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_2_di" bpmnElement="Flow_2"><di:waypoint x="854" y="292" /><di:waypoint x="938" y="292" /></bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>

Дорожки «Продажи» и «Склад» внутри одного пула. Sequence flow переходит от продаж к складу без message flow.

2.3 Артефакты (Artifacts)

Артефакты дают дополнительную информацию и не влияют на поток управления и сообщений.

Объекты данных (Data Objects)

Информация, которую задачи читают, создают или изменяют. Изображение — прямоугольник с загнутым углом (лист).

  • Data Object — именованный объект («Заказ», «Счёт-фактура»).
  • Data Input / Data Output — явное направление данных в/из задачи (маркер на границе задачи + ассоциация).
  • Collection — маркер «три линии» снизу; набор однотипных объектов («Список заказов»).

Data Input/Output vs ассоциация к Data Object: для аналитической диаграммы и ревью достаточно dotted association от Data Object к задаче — читатель видит, какой документ участвует в шаге. Data Input/Output имеет смысл, когда нужна явная семантика «вход/выход» задачи: исполняемая модель, формальная спецификация I/O, экспорт в движок с привязкой data mapping. На эскизе процесса для стейкholders — association; на диаграмме для разработки и Camunda — I/O при необходимости.

Семантику имён объектов фиксируйте в 03.03.03 Словарь данных (описание) и 10.01.14 Шаблон глоссария и словаря данных; аналогия с потоками на DFD — 03.04.02 Диаграмма потоков данных (DFD).

Хранилище данных (Data Store)

Отдельный тип артефакта, не подвид Data Object. Цилиндр на диаграмме; показывает, где данные сохраняются между экземплярами процесса (БД, реестр, файловое хранилище). Связь с задачами — через ассоциацию «чтение/запись», без движения токена.

Группы (Groups)

Пунктирный прямоугольник с закруглёнными углами объединяет элементы визуально — для фазы, зоны согласования, scope анализа. Группа не создаёт scope для потока: токен не «знает» о границе группы. Для инкапсуляции логики используйте подпроцесс или транзакцию, а не группу.

Текстовые аннотации (Text Annotations)

Прямоугольник с открытой левой стороной, связанный ассоциацией с любым элементом. Пояснения, примеры, бизнес-правила на диаграмме.

В XML-модели BPMN также есть элемент Documentation — машиночитаемое описание процесса или элемента; на печатной диаграмме его часто дублируют text annotation для читателя.

Ассоциации (Associations)

Пунктирная линия (с открытой стрелкой при необходимости) связывает артефакт с задачей, событием, шлюзом или message flow.

СвязьДопустимо?Когда использовать
Data Object ↔ задачаДаДокумент/данные у шага; достаточно для большинства аналитических диаграмм
Data Input/Output ↔ задачаДаЯвный вход/выход; исполняемая модель, формальный I/O
Data Object ↔ message flowДаКакое содержимое передаётся между пулами
Data Object ↔ sequence flowНетSequence flow не несёт данных
Annotation ↔ любой элементДаПояснения без влияния на поток

Для трассировки требований документируйте: имя объекта данных, связанные задачи, при межпульном обмене — имя сообщения и связанный data object; см. 02.03.04 Трассировка требований (концепция).

<?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_artifacts" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0">
  <bpmn:collaboration id="Collaboration_artifacts"><bpmn:participant id="art_shop" name="Магазин" processRef="process_art" /></bpmn:collaboration>
  <bpmn:process id="process_art" name="Магазин" isExecutable="false"><bpmn:laneSet id="LaneSet_art_shop"><bpmn:lane id="art" name="1. Исполнение"><bpmn:flowNodeRef>a_make</bpmn:flowNodeRef><bpmn:flowNodeRef>a_pay</bpmn:flowNodeRef><bpmn:flowNodeRef>a_pack</bpmn:flowNodeRef><bpmn:flowNodeRef>a_send</bpmn:flowNodeRef></bpmn:lane></bpmn:laneSet><bpmn:dataObject id="a_doc_obj" /><bpmn:dataObject id="a_track_obj" /><bpmn:userTask id="a_make" name="1.1 Оформить&#10;заказ"><bpmn:outgoing>Flow_0</bpmn:outgoing></bpmn:userTask><bpmn:serviceTask id="a_pay" name="1.2 Проверить&#10;оплату"><bpmn:incoming>Flow_0</bpmn:incoming><bpmn:outgoing>Flow_1</bpmn:outgoing></bpmn:serviceTask><bpmn:manualTask id="a_pack" name="1.3 Упаковать"><bpmn:incoming>Flow_1</bpmn:incoming><bpmn:outgoing>Flow_2</bpmn:outgoing></bpmn:manualTask><bpmn:sendTask id="a_send" name="1.4 Отправить"><bpmn:incoming>Flow_2</bpmn:incoming></bpmn:sendTask><bpmn:dataObjectReference id="a_doc" name="Заказ" dataObjectRef="a_doc_obj" /><bpmn:dataObjectReference id="a_track" name="Трек-номер" dataObjectRef="a_track_obj" /><bpmn:dataStoreReference id="a_store" name="Реестр заказов" /><bpmn:textAnnotation id="a_note"><bpmn:text>Клиент заполняет&#10;форму на сайте</bpmn:text></bpmn:textAnnotation><bpmn:sequenceFlow id="Flow_0" sourceRef="a_make" targetRef="a_pay" /><bpmn:sequenceFlow id="Flow_1" sourceRef="a_pay" targetRef="a_pack" /><bpmn:sequenceFlow id="Flow_2" sourceRef="a_pack" targetRef="a_send" /><bpmn:association id="Assoc_0" sourceRef="a_make" targetRef="a_doc" associationDirection="None" /><bpmn:association id="Assoc_1" sourceRef="a_send" targetRef="a_track" associationDirection="None" /><bpmn:association id="Assoc_2" sourceRef="a_pay" targetRef="a_store" associationDirection="None" /><bpmn:association id="Assoc_3" sourceRef="a_note" targetRef="a_make" associationDirection="None" /></bpmn:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_artifacts">
    <bpmndi:BPMNPlane id="BPMNPlane_artifacts" bpmnElement="Collaboration_artifacts">
      <bpmndi:BPMNShape id="art_shop_di" bpmnElement="art_shop" isHorizontal="true"><dc:Bounds x="80" y="40" width="1086" height="310" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="art_di" bpmnElement="art" isHorizontal="true"><dc:Bounds x="110" y="40" width="1056" height="310" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="a_make_di" bpmnElement="a_make"><dc:Bounds x="146" y="126" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="a_pay_di" bpmnElement="a_pay"><dc:Bounds x="410" y="126" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="a_pack_di" bpmnElement="a_pack"><dc:Bounds x="674" y="126" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="a_send_di" bpmnElement="a_send"><dc:Bounds x="938" y="126" width="180" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="a_doc_di" bpmnElement="a_doc"><dc:Bounds x="218" y="48" width="36" height="50" /><bpmndi:BPMNLabel><dc:Bounds x="216" y="106" width="40" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="a_track_di" bpmnElement="a_track"><dc:Bounds x="1010" y="48" width="36" height="50" /><bpmndi:BPMNLabel><dc:Bounds x="992" y="106" width="72" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="a_store_di" bpmnElement="a_store"><dc:Bounds x="418" y="234" width="50" height="50" /><bpmndi:BPMNLabel><dc:Bounds x="394" y="292" width="98" height="14" /></bpmndi:BPMNLabel></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="a_note_di" bpmnElement="a_note"><dc:Bounds x="146" y="234" width="120" height="44" /></bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="Flow_0_di" bpmnElement="Flow_0"><di:waypoint x="326" y="166" /><di:waypoint x="410" y="166" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1"><di:waypoint x="590" y="166" /><di:waypoint x="674" y="166" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_2_di" bpmnElement="Flow_2"><di:waypoint x="854" y="166" /><di:waypoint x="938" y="166" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Assoc_0_di" bpmnElement="Assoc_0"><di:waypoint x="236" y="126" /><di:waypoint x="236" y="98" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Assoc_1_di" bpmnElement="Assoc_1"><di:waypoint x="1028" y="126" /><di:waypoint x="1028" y="98" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Assoc_2_di" bpmnElement="Assoc_2"><di:waypoint x="410" y="166" /><di:waypoint x="443" y="166" /><di:waypoint x="443" y="234" /></bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Assoc_3_di" bpmnElement="Assoc_3"><di:waypoint x="266" y="256" /><di:waypoint x="236" y="256" /><di:waypoint x="236" y="206" /></bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>

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

3.1 Выбор: один пул с дорожками или несколько пулов

ВопросРешение
Участники — разные юрлица или автономные контрагенты?Отдельные пулы + message flow
Нужна только наша детализация, партнёр — «чёрный ящик»?Наш процесс в white box; партнёр — black box / пул без процесса
Все роли в одной организации, общий процесс?Один пул, дорожки по ролям/отделам
Интеграция с внешней системой — только обмен сообщениями, без видимости её процесса?Система — отдельный пул (black box)
Система внутри нашего контура, задачи CRM видны на той же диаграмме?Дорожка «CRM» внутри нашего пула

Пул на collaboration часто совпадает с границей scope участника — см. 02.01.04 Определение границ решения (Scope Modelling).

Типичная ошибка — два отдела одной компании оформить двумя пулами «Отдел A» и «Отдел B». Правильнее: один пул «Компания», две дорожки; sequence flow между ними.

3.2 Система как исполнитель: пул или дорожка?

КритерийДорожка «Система X»Отдельный пул «Система X»
Система принадлежит той же организации, процесс детализирован✓
Система — внешний SaaS / партнёр, виден только интерфейс✓ (black box)
Нужно показать внутренний процесс системы✓ (white box, отдельный процесс в пуле)
Автоматическая задача (service task) в нашем процессе✓

3.3 Практика построения диаграммы

  1. Определите тип диаграммы: один участник → process; несколько → collaboration.
  2. Назначьте пулы по границам ответственности и юридическим/интеграционным границам, не по orgchart «для красоты».
  3. Внутри пула разложите задачи по дорожкам исполнителей.
  4. Между пулами проведите message flow; крепите к send/receive, message events или границе black box; подпишите сообщения и при необходимости ассоциируйте data objects.
  5. Добавьте артефакты для документов, без которых шаг не примут на ревью или в тестировании.

Шаблон описания сквозного процесса с пулами и дорожками — 10.01.08 Шаблон сквозной фичи (BPMN-процесс). Следующий шаг после базовых элементов — типовые схемы сборки и хореография в 06.02.03 Типовые паттерны BPMN; исполнение в движке — 06.02.04 Работа с Camunda.

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

  • Смешение process и collaboration — правила «один процесс — один пул» и message flow между пулами применяют к collaboration; на одном пуле с дорожками достаточно sequence flow.
  • «Чёрный ящик» с задачами внутри — если показаны задачи участника, это white box; для black box уберите внутреннюю структуру.
  • Message flow без якоря — линия должна крепиться к send/receive, message event или границе пула, а не «висеть» между прямоугольниками.
  • Message flow внутри одного пула — пунктир между двумя задачами одного пула неверен; используйте sequence flow.
  • Data Store внутри раздела Data Object — в нотации это разные артефакты с разной семантикой.
  • Группа вместо подпроцесса — группа не скрывает и не инкапсулирует поток; для reusable или atomic блока — подпроцесс.
  • Задача не в дорожке исполнителя — «Проверить оплату» в дорожке «Клиент», хотя выполняет бухгалтерия, ломает чтение RACI на диаграмме.
  • Дублирование «Клиент» — как пул (внешний актор) и как дорожка внутри «Магазин» на разных диаграммах без явной договорённости команды.
  • Mermaid и PlantUML вместо BPMN XML — в них нет пулов, типов задач и граничных событий. Диаграммы в этой заметке — BPMN 2.0; править и отдавать в движок их нужно из редактора, см. 07.04 Инструменты моделирования (Sparx EA, Lucidchart, draw.io).

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

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

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

  • OMG. Business Process Model and Notation (BPMN) Version 2.0.2 — норматив по Pool, Lane, Participant, Artifact, Data Store. https://www.omg.org/spec/BPMN/2.0.2
  • Брюс Сильвер. «BPMN в действии. Моделирование и анализ бизнес-процессов» — Method & Style: пулы, дорожки, white/black box. ДМК Пресс.
  • Томас Аллвейер. «BPMN 2.0. Introduction to the Standard for Business Process Modeling» — collaboration, артефакты и данные.

Практические руководства

Спецификации и синтаксис