我们使用 Activiti BPMN 图来运行我们的工作流程。 在我们的主进程中,我们正在运行附加进程(innerProcess) 服务任务内部 - MyServiceTask 。见下文。 问题是,如果innerProcess进程中抛出异常,那么我不会在MyServiceTask中获取它,只有在主进程完成后,异常才会冒泡。
但我希望能够捕获 MyServiceTask 中的异常,以防万一发生。 你能帮忙吗?
public class MyServiceTask implements JavaDelegate
{
@Inject
private RuntimeService runtimeService;
public void execute(DelegateExecution context) throws Exception
{
runtimeService.startProcessInstanceByKey("innerProcess", paramMap);
}
}
最佳答案
根据您的代码,您没有运行第二个“Activiti”。相反,您正在启动一个新的流程实例。所有流程实例都是隔离的,并且错误与特定实例相关联。该规则的唯一异常(exception)是流程实例是“子流程”。在这种情况下,错误可能会向上冒泡到父流程实例。
我会修改您的逻辑,以通过信号(可能是最简单的方法)或直接从服务内启动子流程实例。
子流程实例的不同之处仅在于它们具有可在初始化时设置的父流程实例 ID。
关于java - 主Activiti中没有从内部Activiti接收到异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50943316/