Activiti流程暂停重启异常:'already in state 'suspended''解决方案
在Activiti中,当流程暂停时,可以通过查询流程实例的状态来判断流程是否处于暂停状态。如果流程处于暂停状态,可以使用runtimeService.activateProcessInstanceById(processInstanceId)方法将流程激活。
当重启被暂停的流程时,如果流程已经处于暂停状态,会抛出org.activiti.engine.ActivitiException: Cannot activate process instance 'processInstanceId': already in state 'suspended'异常。
因此,在重启流程之前,你可以使用runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).active().singleResult()方法来查询流程实例是否处于暂停状态。如果查询结果不为null,则表示流程已经处于暂停状态,可以给用户提示流程已经被暂停,并进行相应的处理;如果查询结果为null,则可以使用runtimeService.activateProcessInstanceById(processInstanceId)方法将流程激活。
下面是一个示例代码:
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
.processInstanceId(processInstanceId)
.active()
.singleResult();
if (processInstance != null) {
// 流程已经被暂停
// 提示流程已经被暂停,进行相应的处理
} else {
// 激活流程
runtimeService.activateProcessInstanceById(processInstanceId);
}
希望对你有帮助!
原文地址: https://www.cveoy.top/t/topic/pkiu 著作权归作者所有。请勿转载和采集!