我正在研究Activiti BPMN流程以及它们如何与Spring Integration EIP消息流进行最佳接口。具体来说,我想知道触发一个活动BPMN流程在Spring Integration消息流结束时执行的最简洁或最好的方法是什么。
e.g。我应该从我的EIP流程中的最终服务激活方法触发BPMN流程的消息启动事件吗?
runtimeService.startProcessInstanceByMessage(messageName, processVariables);
e.g。我应该从我的EIP流程中的最终服务激活方法触发BPMN流程的无启动事件吗?
runtimeService.startProcessInstanceById(processDefinitionId, variables);
e.g。还有其他更合适的接口方法吗?
提前致谢, PM。
答案 0 :(得分:2)
我们将Activiti / Spring与spring-integration和AMQP消息传递一起使用。 为了启动这个过程,我们使用第二种方法调用runtimeService()。startProcessInstanceByKey()以确保启动预期的工作流(只有一个)。
所以你的选择取决于你喜欢的东西...... 如果要启动的消息和工作流之间有一对二的关系,请使用第二种方法。
当您向活动引擎(第一种方法)触发消息时,这可能会启动多个工作流程,具体取决于您的工作流程的设计方式以及他们收听的消息。 考虑让两个工作流程监听同一条消息。他们都将开始。 但也许这正是你想要的(我不知道)。