我需要在两条路径上使用fork进行处理:
用户任务的路径
服务任务的路径
如果ServiceTask完成计算而不等待用户对UserTask的反应,则进程必须移至MoreTasks。
如何在ServiceTask完成后自动完成UserTask 无需编写java (仅使用camunda bpmn表示法)?
我已经尝试过使用信号事件,但它有效,但信号会影响所有进程实例。我尝试过使用mesage事件,但是UserTask没有收到它,可能是因为我没有任何消息编辑器...
答案 0 :(得分:1)
好的,所以这是Camunda删除Activiti引擎中的用户功能的极少数情况之一。 在Activiti中,可以(在BPMN内部)定义信号是全局抛出(默认)还是仅抛存到当前流程实例。虽然这可能与BPMN规范不符,但它对于您的场景非常有用。
不幸的是,你不能在Camunda做到这一点。 现在,如果您不介意在任务侦听器中编写一个小Groovy脚本,则可以将信号订阅限制为仅当前进程抛出的那些信号:
RuntimeService.signalEventReceived(String signalName, String executionId);
有关详细信息,请参阅Camunda文档。
如果这仍然是不可能的,那么我建议您将用户和服务任务包装在嵌入式子流程中,并在服务任务后立即抛出异常事件。
现在,在嵌入式子流程上附加一个错误边界事件处理程序。
像这样(图表来自文档),但没有OR网关。
当您的服务任务完成时,它将抛出一个错误事件,该事件将冒泡到边界监听器并关闭嵌入式子流程中的所有任务。
希望这有帮助。
答案 1 :(得分:0)
我曾经有类似的要求,但我没有没有编码java 约束,我必须使这个解决方法使其工作:
它不干净,但工作正常,我的客户对结果感到满意。