Документация / BPMN
Пулы и дорожки
Пулы и дорожки показывают, кто выполняет работу.
Пул
Пул (pool) — большой прямоугольник с названием участника слева: компания, клиент, внешняя система. В XML пул —
это participant внутри collaboration, связанный с процессом атрибутом processRef. У каждого пула свой процесс,
а взаимодействуют пулы только потоками сообщений.
Пул может быть «чёрным ящиком» — без процесса внутри. Так изображают участника, о внутренней работе которого мы ничего не знаем или не хотим показывать (банк, государственная система).
Дорожка
Дорожка (lane) — полоса внутри пула: роль, должность или подразделение. Задачи в дорожке выполняет этот исполнитель. Потоки управления свободно пересекают дорожки — это один процесс. Дорожки можно вкладывать друг в друга («Отдел продаж» → «Менеджер», «Руководитель»).
<bpmn:process id="Process_Purchase" isExecutable="false">
<bpmn:laneSet id="LaneSet_1">
<bpmn:lane id="Lane_Employee" name="Сотрудник">
<bpmn:flowNodeRef>Request</bpmn:flowNodeRef>
</bpmn:lane>
<bpmn:lane id="Lane_Manager" name="Руководитель">
<bpmn:flowNodeRef>Approve</bpmn:flowNodeRef>
</bpmn:lane>
</bpmn:laneSet>
<bpmn:userTask id="Request" name="Создать заявку" />
<bpmn:userTask id="Approve" name="Согласовать заявку" />
</bpmn:process>
Пример коллаборации
Клиент (чёрный ящик) отправляет заказ, магазин обрабатывает его и отправляет подтверждение.
<?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_Collab" targetNamespace="http://bpmn.io/schema/bpmn">
<bpmn:collaboration id="Collaboration_Shop">
<bpmn:participant id="Customer" name="Клиент" />
<bpmn:participant id="Shop" name="Интернет-магазин" processRef="Process_Shop" />
<bpmn:messageFlow id="Msg_Order" name="Заказ" sourceRef="Customer" targetRef="OrderReceived" />
<bpmn:messageFlow id="Msg_Confirm" name="Подтверждение" sourceRef="Confirm" targetRef="Customer" />
</bpmn:collaboration>
<bpmn:message id="Message_Order" name="Заказ" />
<bpmn:process id="Process_Shop" isExecutable="false">
<bpmn:startEvent id="OrderReceived" name="Заказ получен">
<bpmn:outgoing>F1</bpmn:outgoing>
<bpmn:messageEventDefinition id="Def_Order" messageRef="Message_Order" />
</bpmn:startEvent>
<bpmn:task id="Process" name="Обработать заказ">
<bpmn:incoming>F1</bpmn:incoming>
<bpmn:outgoing>F2</bpmn:outgoing>
</bpmn:task>
<bpmn:sendTask id="Confirm" name="Отправить подтверждение">
<bpmn:incoming>F2</bpmn:incoming>
<bpmn:outgoing>F3</bpmn:outgoing>
</bpmn:sendTask>
<bpmn:endEvent id="Done" name="Заказ принят">
<bpmn:incoming>F3</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="F1" sourceRef="OrderReceived" targetRef="Process" />
<bpmn:sequenceFlow id="F2" sourceRef="Process" targetRef="Confirm" />
<bpmn:sequenceFlow id="F3" sourceRef="Confirm" targetRef="Done" />
</bpmn:process>
<bpmndi:BPMNDiagram id="Diagram_Collab">
<bpmndi:BPMNPlane id="Plane_Collab" bpmnElement="Collaboration_Shop">
<bpmndi:BPMNShape id="Customer_di" bpmnElement="Customer" isHorizontal="true">
<dc:Bounds x="130" y="60" width="600" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Shop_di" bpmnElement="Shop" isHorizontal="true">
<dc:Bounds x="130" y="200" width="600" height="160" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="OrderReceived_di" bpmnElement="OrderReceived">
<dc:Bounds x="202" y="262" width="36" height="36" />
<bpmndi:BPMNLabel><dc:Bounds x="184" y="305" width="72" height="14" /></bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Process_di" bpmnElement="Process">
<dc:Bounds x="290" y="240" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Confirm_di" bpmnElement="Confirm">
<dc:Bounds x="450" y="240" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Done_di" bpmnElement="Done">
<dc:Bounds x="612" y="262" width="36" height="36" />
<bpmndi:BPMNLabel><dc:Bounds x="596" y="305" width="68" height="14" /></bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="F1_di" bpmnElement="F1">
<di:waypoint x="238" y="280" /><di:waypoint x="290" y="280" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="F2_di" bpmnElement="F2">
<di:waypoint x="390" y="280" /><di:waypoint x="450" y="280" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="F3_di" bpmnElement="F3">
<di:waypoint x="550" y="280" /><di:waypoint x="612" y="280" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Msg_Order_di" bpmnElement="Msg_Order">
<di:waypoint x="220" y="140" /><di:waypoint x="220" y="262" />
<bpmndi:BPMNLabel><dc:Bounds x="226" y="190" width="32" height="14" /></bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Msg_Confirm_di" bpmnElement="Msg_Confirm">
<di:waypoint x="500" y="240" /><di:waypoint x="500" y="140" />
<bpmndi:BPMNLabel><dc:Bounds x="506" y="190" width="84" height="14" /></bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>
Советы
- Пул — это участник, а не отдел. Отделы одной компании обычно изображают дорожками одного пула.
- Не соединяйте дорожки потоками сообщений: внутри пула работает один процесс, и передача работы — это поток управления.
- Если в коллаборации несколько подробных пулов, у каждого должны быть свои начальное и конечные события.
Похожие инструменты
Обновлено: 30 сентября 2026 г.
