Как работают блок задач и блок задержки в бизнес-процессах
В статье разобраны типовые ошибки, приводящие к дублированию задач или их не созданию в бизнес-процессах. Объяснены причины и даны рекомендации по правильной настройке блоков задач, задержек и вложенных процессов.
В конструкторе бизнес-процессов нашего приложения часто используются блоки задач и задержки. Правильная комбинация этих элементов позволяет строить чёткие, управляемые сценарии. Но если использовать их неосмотрительно — можно столкнуться с дублированием задач или их не созданием.
Типичная проблема
Пример: есть две задачи, после выполнения их обеих должны создаваться следующие две задачи.
Представим типичную ситуацию:
- Есть две задачи: Задача 1 и Задача 2
- После их завершения должны быть созданы: Задача 11 и Задача 22
- Между ними стоит задержка
Такой сценарий встречается часто. Можно предположить, что как только обе задачи завершатся с произведенным результатом, после задержки создадутся следующие.
Но на деле:
- Завершилась Задача 1 → стрелка в задержку → задержка сработала → блок задач создал Задачи 11 и 22
- Завершилась Задача 2 → всё повторяется → блок задач снова создал Задачи 11 и 22
Итог: каждая следующая задача создаётся дважды.

Почему так происходит?
- Блок задержки не объединяет потоки. Он срабатывает каждый раз независимо, на каждую входящую стрелку
- Блок задач, стоящий после задержки, отрабатывает на каждое её срабатывание — и каждый раз создаёт одни и те же задачи заново
Как избежать дублирования задач
Чтобы задачи 11 и 22 создавались только один раз после завершения обеих предыдущих:
- Не ставьте задержку между группами задач
- Проведите стрелки напрямую от Задачи 1 и Задачи 2 в блоки задач
- Блоки задач будут ждать обе стрелки, и сработают только когда обе задачи завершатся
На схеме: задача 11 создастся только после произведенного результата в задачах 1 и 2, задача 22 также создастся только после произведенного результата в задачах 1 и 2.

Задачи могут не создаваться
Не всегда задачи создаются, даже если логика процесса кажется правильной. Иногда задачи не выполняются, потому что:
- В блок задач ведёт несколько стрелок, и не все условия выполнения стрелок выполняются к моменту их активации
- Например, вторая стрелка может быть невыполнима на момент создания задач (например, если не выполнены какие-то предшествующие условия или задачи)
Важно: Задержка после блока задач не задерживает создание задач, потому что они создаются в момент активации блока. Она может применяться только к следующим действиям, но не к созданию задач.
Рекомендация: используйте вложенные процессы
Чтобы упростить схему и уменьшить количество связей:
- Объедините логически связанные шаги в вложенные процессы
- Например, Задача 1 и Задача 2 → в один процесс
- Задача 11 и 22 → в другой процесс
- В итоговом процессе свяжите их одной стрелкой: процесс → процесс
- Это минимизирует ошибки, упростит визуальную логику и облегчит поддержку
Вывод
- Задержка срабатывает на каждое входящее событие отдельно
- Блок задач ждёт все входящие стрелки — используйте это, чтобы избежать дублей
- Если хотя бы одна из входящих в блок задач стрелок не выполнима, задача не создастся
- Не ставьте задержку перед блоком задач, если ждёте завершения нескольких шагов перед её созданием
- Вложенные процессы — отличный способ упрощения и локализации логики