我们正在使用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”。而是要启动一个新的流程实例。所有流程实例都是隔离的,并且错误与特定实例相关联。该规则的唯一例外是当流程实例是“子流程”时。在这种情况下,错误可能会冒泡到父流程实例。

我将修改您的逻辑,以通过信号(可能是最简单的方法)或直接从服务内部启动子流程实例。

子流程实例的不同之处仅在于它们具有可在初始化时设置的父流程实例ID。

09-11 17:27