Введение
Задача (Task) в нотации BPMN 2.0 – атомарная единица работы внутри процесса, которая не декомпозируется на более мелкие элементы в рамках данной модели. Задача изображается прямоугольником со скруглёнными углами и представляет конкретное действие, которое должно быть выполнено: заполнить форму, отправить письмо, выполнить расчёт, вызвать внешний сервис. Если действие слишком сложное для одного прямоугольника, оно описывается как подпроцесс (Sub-Process).
Задачи являются наиболее частым элементом BPMN-диаграмм и именно в задачах сосредоточена реальная «работа» процесса – всё, что происходит между событиями и шлюзами.
История и контекст
Концепция атомарной единицы работы присутствовала в блок-схемах с 1960-х годов. В BPMN 1.0 (2004) задача была введена как базовый элемент наряду с событиями и шлюзами. В BPMN 2.0 (2011) типология задач была существенно расширена: введены семь типов задач с различной семантикой исполнения, а также маркеры (пиктограммы), визуально обозначающие тип.
В исполняемых BPMS-системах (Camunda, Activiti, Flowable) каждый тип задачи имеет чётко определённое поведение: User Task создаёт запись в очереди задач пользователя, Service Task вызывает Java Bean или REST-сервис, Script Task исполняет код на скриптовом языке.
Как это работает
BPMN 2.0 определяет следующие типы задач:
- User Task (пользовательская задача) – требует действий живого человека. Движок создаёт задание в inbox пользователя или группы. Самый распространённый тип при автоматизации согласований и бизнес-процессов.
- Service Task (сервисная задача) – автоматически вызывает внешний веб-сервис или программный компонент (Java, REST API). Не требует участия человека.
- Script Task (скриптовая задача) – исполняет скрипт (JavaScript, Groovy, Python) непосредственно движком.
- Manual Task (ручная задача) – выполняется человеком вне системы; BPM-движок не управляет ею напрямую.
- Business Rule Task (задача бизнес-правил) – вызывает движок бизнес-правил (DMN, Drools).
- Send/Receive Task – отправка и получение сообщений.
- Call Activity – вызов внешнего (переиспользуемого) процесса или задачи.
Задачи имеют атрибуты: имя, документация, назначение (assignee, candidate group для User Task), таймеры, граничные события.
Где применяется
- Автоматизация согласований – User Task для каждого участника цепочки согласования.
- Интеграционные процессы – Service Task для вызова внешних сервисов (CRM, ERP, API ФНС).
- Обработка документов – скриптовые задачи для трансформации данных.
- Управление клиентскими заявками – пользовательские задачи с формами ввода данных.
Преимущества и ограничения
Преимущества: чёткая типизация задач позволяет точно описать поведение процесса и однозначно реализовать его в BPMS. Разделение на User Task и Service Task наглядно показывает, где нужен человек, а где автоматика.
Ограничения: при злоупотреблении Manual Task BPMS теряет контроль над ходом процесса. Слишком мелкая декомпозиция на задачи делает модель нечитаемой – необходимо группировать в подпроцессы.
Связь с другими понятиями
Подпроцесс – группа задач, скрытая за одним элементом для управления сложностью. Событие (процесс) – запускает или прерывает задачу через граничные события. Шлюз (BPMN) – управляет, по какому пути перейти после задачи. Пул и дорожка – определяют, кому назначена задача (исполнитель/роль). BPMN – нотация, в которой задача является базовым строительным блоком.