BPMN: моделирование процессов, события, шлюзы и задачи
Материал посвящён Business Process Model Notation (BPMN) с практическими примерами и рекомендациями для профессиональной сертификации.
Краткое описание
BPMN — это графическая нотация для моделирования бизнес-процессов, которая предоставляет единый язык для бизнес-аналитиков, разработчиков и менеджеров.
Определение и назначение
Business Process Model Notation (BPMN) — международный стандарт графического представления бизнес-процессов, разработанный Object Management Group (OMG). Версия 2.0 доступна с 2011 года.
Основные цели:
- Стандартизация: единая нотация для всех участников
- Коммуникация: улучшенное взаимопонимание между бизнесом и IT
- Автоматизация: основа для автоматизации процессов и workflow-engines
- Оптимизация: визуализация для анализа и улучшения процессов
Ключевые элементы:
- События: начальные, промежуточные и конечные события
- Действия: задачи и подпроцессы
- Шлюзы: условия и ветвления
- Связи: потоки последовательности и сообщений
- Бассейны и полосы: организационные единицы и зоны ответственности
BPMN охватывает полный жизненный цикл процессов: от анализа через внедрение к мониторингу и совершенствованию.
Важные элементы стандарта
- Стандартная нотация для моделирования бизнес-процессов
- События: стартовые, промежуточные и финальные с разными типами
- Шлюзы: исключающие, параллельные, включающие для управления ходом процесса
- Задачи: пользовательские, сервисные, скриптовые, ручные
- Бассейны и полосы: организационная структура и ответственность
- Поток последовательности: порядок выполнения шагов процесса
- Поток сообщений: взаимодействие между бассейнами
- Значение для сертификации: управление и оптимизация процессов
Основные компоненты
- События: круглые элементы для событий в процессе
- Действия: прямоугольные элементы для задач
- Шлюзы: ромбовидные элементы для принятия решений
- Связи: стрелки для потоков процессов и сообщений
- Бассейны: контейнеры для целых процессов
- Полосы: деление бассейнов по зонам ответственности
- Артефакты: документы, данные, группировки
- Объекты данных: информационные элементы в процессе
Практические примеры
1. Процесс заказа (простой пример)
<!-- BPMN 2.0 XML структура -->
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL">
<!-- Бассейн для полного процесса -->
<process id="bestellprozess" name="Bestellprozess">
<!-- Start Event -->
<startEvent id="start" name="Bestellung eingegangen"/>
<!-- Task: проверка заказа -->
<userTask id="pruefen" name="Bestellung prüfen">
<documentation>Verfügbarkeit und Kundendaten prüfen</documentation>
</userTask>
<!-- Exclusive Gateway: решение -->
<exclusiveGateway id="entscheidung" name="Verfügbarkeit prüfen"/>
<!-- Task: отклонение заказа -->
<userTask id="ablehnen" name="Bestellung ablehnen">
<documentation>Kunde über Nichtverfügbarkeit informieren</documentation>
</userTask>
<!-- Task: обработка заказа -->
<serviceTask id="bearbeiten" name="Bestellung bearbeiten">
<documentation>Automatische Verarbeitung im System</documentation>
</serviceTask>
<!-- End Events -->
<endEvent id="ende_ablehnung" name="Bestellung abgelehnt"/>
<endEvent id="ende_erfolg" name="Bestellung bearbeitet"/>
<!-- Sequence Flows -->
<sequenceFlow sourceRef="start" targetRef="pruefen"/>
<sequenceFlow sourceRef="pruefen" targetRef="entscheidung"/>
<sequenceFlow sourceRef="entscheidung" targetRef="ablehnen">
<conditionExpression xsi:type="tFormalExpression">${nichtVerfuegbar}</conditionExpression>
</sequenceFlow>
<sequenceFlow sourceRef="entscheidung" targetRef="bearbeiten">
<conditionExpression xsi:type="tFormalExpression">${verfuegbar}</conditionExpression>
</sequenceFlow>
<sequenceFlow sourceRef="ablehnen" targetRef="ende_ablehnung"/>
<sequenceFlow sourceRef="bearbeiten" targetRef="ende_erfolg"/>
</process>
</definitions>
2. Процесс согласования с параллельными этапами
<process id="genehmigungsprozess" name="Genehmigungsprozess">
<!-- Start Event -->
<startEvent id="start" name="Antrag eingegangen"/>
<!-- User Task: проверка заявки -->
<userTask id="antragPruefen" name="Antrag prüfen">
<potentialOwner>
<resourceAssignmentExpression>${manager}</resourceAssignmentExpression>
</potentialOwner>
</userTask>
<!-- Parallel Gateway -->
<parallelGateway id="parallelStart" name="Parallelprüfung beginnen"/>
<!-- Параллельные задачи -->
<serviceTask id="finanzPruefung" name="Finanzprüfung">
<documentation>Budget und Kosten prüfen</documentation>
</serviceTask>
<userTask id="rechtlichePruefung" name="Rechtliche Prüfung">
<documentation>Rechtliche Aspekte prüfen</documentation>
</userTask>
<!-- Parallel Gateway объединение -->
<parallelGateway id="parallelEnd" name="Ergebnisse zusammenführen"/>
<!-- Exclusive Gateway: решение -->
<exclusiveGateway id="genehmigungsEntscheidung" name="Genehmigung"/>
<!-- Задачи -->
<userTask id="genehmigen" name="Antrag genehmigen">
<documentation>Genehmigung erteilen und umsetzen</documentation>
</userTask>
<userTask id="ablehnen" name="Antrag ablehnen">
<documentation>Ablehnung begründen und kommunizieren</documentation>
</userTask>
<!-- End Events -->
<endEvent id="genehmigt" name="Antrag genehmigt"/>
<endEvent id="abgelehnt" name="Antrag abgelehnt"/>
<!-- Sequence Flows -->
<sequenceFlow sourceRef="start" targetRef="antragPruefen"/>
<sequenceFlow sourceRef="antragPruefen" targetRef="parallelStart"/>
<!-- Параллельные ветви -->
<sequenceFlow sourceRef="parallelStart" targetRef="finanzPruefung"/>
<sequenceFlow sourceRef="parallelStart" targetRef="rechtlichePruefung"/>
<sequenceFlow sourceRef="finanzPruefung" targetRef="parallelEnd"/>
<sequenceFlow sourceRef="rechtlichePruefung" targetRef="parallelEnd"/>
<sequenceFlow sourceRef="parallelEnd" targetRef="genehmigungsEntscheidung"/>
<!-- Принятие решения -->
<sequenceFlow sourceRef="genehmigungsEntscheidung" targetRef="genehmigen">
<conditionExpression>${genehmigt}</conditionExpression>
</sequenceFlow>
<sequenceFlow sourceRef="genehmigungsEntscheidung" targetRef="ablehnen">
<conditionExpression>${abgelehnt}</conditionExpression>
</sequenceFlow>
<sequenceFlow sourceRef="genehmigen" targetRef="genehmigt"/>
<sequenceFlow sourceRef="ablehnen" targetRef="abgelehnt"/>
</process>
3. Многобассейновый процесс (кроссфункциональный)
<!-- Бассейн 1: отдел продаж -->
<pool id="vertrieb" name="Vertrieb">
<lane id="vertriebLane" name="Vertriebsmitarbeiter">
<startEvent id="angebotErstellen" name="Angebot erstellen"/>
<userTask id="angebotErstellenTask" name="Angebot ausarbeiten"/>
<endEvent id="angebotGesendet" name="Angebot gesendet"/>
<sequenceFlow sourceRef="angebotErstellen" targetRef="angebotErstellenTask"/>
<sequenceFlow sourceRef="angebotErstellenTask" targetRef="angebotGesendet"/>
</lane>
</pool>
<!-- Бассейн 2: управление -->
<pool id="management" name="Management">
<lane id="managementLane" name="Manager">
<intermediateCatchEvent id="angebotErhalten" name="Angebot erhalten"/>
<userTask id="angebotPruefen" name="Angebot prüfen"/>
<exclusiveGateway id="genehmigungsGateway" name="Genehmigung"/>
<sequenceFlow sourceRef="angebotErhalten" targetRef="angebotPruefen"/>
<sequenceFlow sourceRef="angebotPruefen" targetRef="genehmigungsGateway"/>
</lane>
</pool>
<!-- Message Flow между бассейнами -->
<messageFlow id="angebotFlow" sourceRef="angebotGesendet" targetRef="angebotErhalten"/>
Элементы BPMN подробно
События
○ Start Event ○ Intermediate Event ● End Event
(пустой круг) (круг с символом) (толстая линия)
Типы:
- Timer Event (⏰)
- Message Event (✉)
- Error Event (❌)
- Signal Event (📡)
- Terminate Event (⏹)
Задачи
□ User Task ◇ Service Task ◈ Script Task
(пользователь) (автоматическая) (скрипт)
Типы:
- Manual Task (ручная)
- Receive Task (получение)
- Send Task (отправка)
- Business Rule Task (правила)
Шлюзы
◇ Exclusive Gateway + Parallel Gateway ○ Inclusive Gateway
(исключающее ИЛИ) (параллельное И) (включающее ИЛИ)
Типы:
- Complex Gateway (сложный)
- Event Gateway (событийный)
Пулы и дорожки
┌─────────────────────────────────────┐
│ Pool (организационная единица) │
├─────────────────────────────────────┤
│ Lane (сфера ответственности) │
│ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ │
│ │Task │ │GW │ │Task │ │End │ │
│ └─────┘ └─────┘ └─────┘ └─────┘ │
└─────────────────────────────────────┘
Преимущества и недостатки
Преимущества BPMN
- Стандартизация: единая нотация для всех участников
- Визуализация: интуитивное представление сложных процессов
- Автоматизация: прямая реализация в движках workflow
- Документация: живая документация процессов
- Анализ: основа для оптимизации процессов
Недостатки
- Сложность: при очень больших процессах становится трудночитаемым
- Кривая обучения: требует освоения нотации
- Over-Engineering: чрезмерно детальная модель может быть контрпродуктивна
- Поддержка: изменения требуют обновления моделей
BPMN на практике
Оптимизация процессов
- Анализ As-Is: смоделировать текущий процесс
- Выявление узких мест: найти затруднения и дублирование
- Проектирование To-Be: разработать оптимизированный процесс
- Внедрение: запустить новые процессы
- Мониторинг: измерять результаты и вносить корректировки
Автоматизация
// Пример Camunda BPM Engine
import org.camunda.bpm.engine.*;
@Service
public class BestellService {
@Autowired
private RuntimeService runtimeService;
@Autowired
private TaskService taskService;
public void starteBestellprozess(Bestellung bestellung) {
// Запустить процесс
Map<String, Object> variables = new HashMap<>();
variables.put("bestellung", bestellung);
variables.put("kundenId", bestellung.getKundenId());
ProcessInstance process = runtimeService.startProcessInstanceByKey(
"bestellprozess", variables);
System.out.println("Процесс запущен: " + process.getId());
}
public void bearbeiteAufgabe(String taskId, Map<String, Object> variables) {
// Завершить пользовательскую задачу
taskService.complete(taskId, variables);
}
}
Часто встречающиеся вопросы на экзаменах
-
В чём разница между пулом и дорожкой? Пул представляет организационную единицу, дорожка разделяет пул по сферам ответственности.
-
Объясните различные типы шлюзов! Exclusive Gateway (исключающее ИЛИ), Parallel Gateway (параллельное И), Inclusive Gateway (включающее ИЛИ).
-
Когда использовать Message Flow вместо Sequence Flow? Message Flow для взаимодействия между пулами, Sequence Flow внутри одного пула.
-
Какова цель BPMN в разработке программного обеспечения? Основа для автоматизации workflow и внедрения процессов.
Основные источники
- https://www.omg.org/spec/BPMN/2.0/
- https://de.wikipedia.org/wiki/Business_Process_Model_and_Notation
- https://www.bpmn.io/
Дополнительные статьи по BPMN
BPMN является стандартом моделирования бизнес-процессов. Следующие статьи помогут разобраться со всеми аспектами BPMN и применять его на практике.
Основы и концепции
- BPMN Business Process Model and Notation — полное введение в BPMN и моделирование процессов
- BPMN Grundlagen Prozessmodellierung — детальное описание элементов BPMN с пулами и дорожками



