Исполнитель Задач
Исполнитель задач (Job Executor) отвечает за управление и выполнение асинхронных задач. Он обрабатывает такие задачи, как таймеры, асинхронные продолжения и другие фоновые процессы, которые необходимо выполнять вне основного потока процесса. Перенос задач на исполнитель задач обеспечивает сохранение отзывчивости и эффективности основного потока выполнения.
Исполнитель задач работает в многопоточной среде, что позволяет ему обрабатывать несколько задач одновременно. Он извлекает задачи из базы данных, выполняет их и обновляет их статус соответственно. Этот механизм необходим для реализации таких функций, как отложенные задачи и запланированные события в бизнес-процессах.
Типы Задач
Исполнитель задач берёт на себя два основных типа задач:
-
Timer Jobs: Эти задачи запланированы на выполнение в определенное время, часто связанные с пограничными событиями в моделях BPMN.
-
Асинхронные задачи: Создаются, когда задача помечена атрибутом
flowable:async="true"
, указывающим на то, что она должна выполняться асинхронно.
Поток Выполнения
-
Когда экземпляр процесса достигает точки, где необходима асинхронная задача или таймер, исполнитель задач добавляет соответствующую запись в таблицу
ACT_RU_JOB
. -
Для задач с таймером поток периодически проверяет задачи, которые должны быть выполнены, и запускает их соответственно.
-
Для асинхронных задач, как только API-вызов для создания задачи успешно завершен, слушатель транзакций запускает исполнителя задач, чтобы выполнить эту задачу.