У меня в Activiti запущен процесс, который состоит только из сервисных задач. Процесс длится долго, и в некоторых случаях я хотел бы завершить его на полпути. Процесс запущен с использованием
ProcessInstance pi = runtimeService.startProcessInstanceById(
processDefinitionId, executionParameters);
На форуме activiti процессы можно прекращено вызовом
void deleteProcessInstance(String processInstanceId, String deleteReason);
on runtimeService
.
Проблема в том, что метод startProcessInstanceById
возвращается только после завершения выполнения. Так что я не получаю processInstance
, если процесс не завершен.
Однако я отладил код и смог найти processInstanceId
в реализации _ 7_.
Теперь, когда я вызываю runtimeService.deleteProcessInstance(processInstanceId, deleteReason)
метод из другого потока, я получаю ActivitiObjectNotFoundException
сообщение о том, что данный processInstanceId не существует.
Более того, когда processInstance запущен, вызов runtimeService.createProcessInstanceQuery().list()
возвращает пустой список, даже если процесс запущен.