У меня возникла проблема с асинхронными рабочими процессами. У меня есть этот дизайн:Activiti: при сбое CallActivity рабочий процесс никогда не заканчивается
Workflow1:
start -> ScriptActivity1
(бросает NullPointerException, чтобы проверить обработку ошибок)-> end
workflow2:
start -> CallActivity
(который называет workflow1)-> end
Я вижу, что если я развернуть рабочий процесс как асинхронный, если Workflow1 терпит неудачу, workflow2 никогда не заканчивается, но этого не происходит, когда они развертываются как синхронными.
Кроме того, если я выполняю только рабочий процесс1, он неправильно отображает соответствующее исключение.
Кто-нибудь знает, как справиться с этой проблемой?
Вы управляете NPE где-нибудь? Если нет, это ожидаемое поведение, если у вас есть асинхронные задачи. Когда Activiti получает техническое исключение (любое, что не является подклассом BpmnError) из активности, оно будет повторять его несколько раз. После достижения предела повторного запуска двигатель отказывается, но соответствующее задание сохраняется в таблице управления - по крайней мере, для «классического» исполнителя заданий. Предполагается, что технические ошибки в производстве обычно вызваны временными проблемами, такими как внешний сервиз, недоступный. Вы можете перезапустить неудавшееся задание с помощью API или обновления db. –