我需要在两个路径上使用fork进行处理:
用户任务的路径
服务任务路径
如果ServiceTask完成计算而没有等待用户对UserTask的反应,则流程必须移至MoreTasks。
如何在ServiceTask完成后自动完成UserTask而无需在Java上进行编码(仅使用camunda bpmn表示法)?
我已经尝试过使用信号事件,并且它可以工作,但是信号会影响所有过程实例。我尝试使用消息事件,但是UserTask没有收到它,可能是因为我没有任何消息发送者...
最佳答案
好的,这是Camunda删除Activiti引擎中一个有用的功能的罕见情况之一。
在Activiti中,可以(在BPMN内部)定义是全局(默认)还是仅向当前流程实例抛出信号。尽管这可能与BPMN规范不符,但是对于诸如您这样的场景,它非常有用。
不幸的是,您无法在Camunda做到这一点。
现在,如果您不介意在任务侦听器中编写一些Groovy脚本,则可以将信号订阅限制为仅由当前进程抛出的那些信号:
RuntimeService.signalEventReceived(String signalName, String executionId);
有关更多详细信息,请参考Camunda文档。
如果仍然无法解决问题,那么我建议您将“用户和服务”任务包装在嵌入式子进程中,并在“服务”任务之后立即引发异常事件。
现在,在嵌入式子进程上附加一个错误边界事件处理程序。
像这样的东西(图表来自文档),但是没有OR网关。
服务任务完成后,它将引发一个错误事件,该事件将冒泡到边界侦听器并关闭嵌入式子进程中的所有任务。
希望这可以帮助。