Транзакция Activiti не выполняется достаточно быстро, не может найти собственный процесс через API - PullRequest
0 голосов
/ 20 июня 2019

У меня есть процесс, который подготовит входной файл, если файл существует, будет выполнена служебная задача, которая запускает обработчик пакетной пружины. Это из коробки уже асинхронно без явной пометки как таковой. Таким образом, если во время импорта возникнет ошибка, мой BPMN все равно продолжится. По этой причине я прикрепил waitSignal к сервиз задачи. Моя идея заключалась в том, что, как только мое пакетное задание будет завершено, запускается прослушиватель - я использую API действия, чтобы найти текущий процесс по переменной процесса (имя файла) и сообщить об этом.

Проблема в том, что когда задача завершается слишком быстро (менее 100 мс), она не может найти ни процесс, ни его экземпляр, иногда он находит процесс, но не экземпляр. Насколько я понял, api активности просто запросит постоянные данные в базе данных для запуска или приостановленных процессов. В этом случае я думаю, что процесс не известен в БД, поэтому я не могу отправить сигнал, используя API процесса.

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

...