如何用Camunda指定并行网关中的执行顺序?

时间:2018-05-08 14:36:52

标签: java testing integration-testing camunda

对于我的集成测试,我想指定执行并行网关的执行路径中的确切顺序。我不希望并行路径同时执行但是顺序执行。 Camunda有没有办法实现这个目标?

我已经尝试通过延迟模拟服务调用的响应来减慢一条路径,但由于并不总是使用模拟服务调用,因此该解决方案并不总是有效。

暂停执行一条路径就足够了,直到另一条路径的执行完成为止。

2 个答案:

答案 0 :(得分:1)

这是不可能的。在camunda引擎中,不能保证在并行网关上采用哪种顺序流。

无论如何,在camunda引擎中没有真正的并发性,因为每个流都是顺序执行的(流程实例是单线程的)。这意味着如果第一个流程被执行,则执行它直到达到保存点(等待状态)并且提交事务。例如,这可以是用户任务或任何其他使用asyncBefore或asyncAfter标记的Activity。

达到此等待状态后,将执行另一个序列流程。

有关camunda交易的更多信息,请阅读有关Transactions in processes

的文档

答案 1 :(得分:0)

如果所有传出流都被作业执行程序标记为异步执行,则可以通过在jobExecutorAcquireByPriority上启用基于优先级的作业获取(ProcessEngineConfiguration属性)并为这些任务分配显式优先级来实现此目的

这在https://docs.camunda.org/manual/7.8/user-guide/process-engine/the-job-executor/#configure-the-process-engine-for-job-priorities

的用户指南中有记录