Как обозначить в BPMN повторение одной задачи до выполнения условия?

Как обозначить в BPMN повторение одной задачи до выполнения условия?

Проходите собеседования с ИИ помощником Hintsage

Краткий ответ

Используйте маркер цикла у задачи, если одна и та же задача должна выполняться повторно, пока условие продолжения истинно или пока не выполнено условие завершения. Это показывает повторение экземпляра задачи, а не параллельный запуск нескольких экземпляров.

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

Исторический контекст

BPMN создавался для унифицированного описания бизнес-процессов, чтобы бизнес-аналитики, владельцы процессов и технические команды одинаково трактовали порядок и условия выполнения работ. Для повторений важно отличать обычный цикл от параллельной обработки набора объектов и от возврата процесса по сложной логике.

Графическое обозначение цикла решает проблему дублирования одинаковых задач на диаграмме и делает намерение модели явным: задача может выполняться более одного раза в рамках одного экземпляра процесса.

Постановка проблемы

Предположим, процесс проверяет комплектность заявки. Пока данные неполны, сотрудник запрашивает исправления и повторяет проверку. Если нарисовать задачу только один раз без обозначения цикла, модель будет выглядеть так, будто проверка выполняется однократно.

Если вместо цикла применить параллельное множественное выполнение, можно ошибочно создать несколько одновременных проверок. Если без необходимости использовать шлюз с обратной связью, повторение станет понятнее только после изучения дополнительных ветвей, а простая логика будет перегружена.

Подробное решение

Маркер цикла ставят на границе задачи. Он означает, что после выполнения задачи процесс может снова запустить ту же задачу согласно условию цикла.

В модели необходимо отдельно зафиксировать:

  • что именно проверяется перед продолжением или после выполнения задачи;
  • при каком условии выполняется повтор;
  • при каком условии цикл завершается;
  • существует ли ограничение на число попыток;
  • что происходит при достижении лимита или невозможности продолжения.

Маркер цикла подходит, когда повторяется одна логически неделимая работа. Он не означает обработку коллекции объектов: для запуска задачи по каждому элементу набора применяется многоэкземплярный маркер. При этом многоэкземплярное выполнение может быть последовательным или параллельным, поэтому подмена одного механизма другим меняет семантику процесса.

Исключающий шлюз с обратным потоком предпочтителен, когда результат задачи выбирает разные дальнейшие действия: например, при ошибке нужно отправить уведомление, зафиксировать причину и только затем вернуть процесс на повторную проверку. Компромисс состоит в том, что шлюзовая схема подробнее и гибче, но для простого повторения одной задачи она может быть избыточной.

Условие цикла должно быть связано с измеримым состоянием процесса. Формулировка вроде «повторять при необходимости» недостаточна: аналитик должен определить, кто и по какому результату устанавливает необходимость повторения.

Ситуация из практики

В процессе регистрации поставщика оператор проверяет документы. Если комплект неполный, поставщик может дослать документы, после чего выполняется повторная проверка.

Рассматривались три варианта:

  1. Скопировать задачу несколько раз. Это быстро для одного сценария, но не отражает неограниченное число повторов и приводит к дублированию.
  2. Использовать многоэкземплярный маркер. Он предназначен для обработки нескольких элементов коллекции, поэтому не описывает последовательные попытки проверки одной заявки.
  3. Использовать маркер цикла. Он компактно показывает повторение одной задачи и соответствует смыслу процесса.

Выбран маркер цикла, а в текстовой документации зафиксированы условие завершения проверки и максимальное число попыток. Если лимит превышен, процесс переходит в отдельную ветвь ручного разбора. Это сохранило простоту основной диаграммы и не скрыло важное исключение.

Что кандидаты часто упускают

1. Дополнительный вопрос: чем цикл отличается от многоэкземплярного выполнения?

Цикл повторяет одну задачу последовательно в зависимости от условия. Многоэкземплярное выполнение запускает задачу для элементов коллекции, например для каждого документа или участника; экземпляры могут выполняться последовательно или параллельно.

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

2. Дополнительный вопрос: когда вместо маркера цикла нужен обратный поток через шлюз?

Шлюз нужен, когда результат задачи определяет разные сценарии или перед повтором выполняются дополнительные действия. Например, при отклонении данных процесс может сначала сформировать уведомление, записать причину отказа и только затем вернуть заявку на исправление.

Маркер цикла лучше показывает локальное повторение. Обратный поток через шлюз лучше показывает сложную бизнес-логику, но требует явно определить условия ветвления и избежать бесконечного цикла.

3. Дополнительный вопрос: как предотвратить бесконечное повторение?

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

Одного визуального маркера недостаточно, если условие цикла не определено. Иначе разные исполнители могут по-разному трактовать момент завершения, а автоматизация процесса не сможет надежно определить, когда прекращать повторения.