java - 具有空集合的每个循环的 Activity 多实例

标签 java activiti bpmn

在我们的工作流程中,我们有几个多实例调用 Activity ,如下所示:

<callActivity id="loopFoos" calledElement="${workflowResolver.resolveWorkflowName(foo)}">
    <multiInstanceLoopCharacteristics isSequential="false" activiti:collection="${foos}" activiti:elementVariable="foo" />
</callActivity>

问题是有些集合是空的,这会导致异常,因为 activiti 假定集合中至少有一个元素。我们可以围绕所有子工作流调用做出决策,但这会用与业务无关的细节污染工作流图。

我们需要的是 java 对每个点赞的行为

for (Foo foo : foos) {
 // call workflow
}

空集合根本不会进入循环。

有没有办法让activiti表现得像这样?如果没有,您将如何建模工作流?

最佳答案

使用标准的 Activiti 功能无法解决这个问题。因此,唯一的选择是使用网关或 Java Service Task 以及实现 ActivityBehaviour 的类(不推荐)来控制序列流。我更喜欢使用 exclusiveGateways 。检查此链接以获取更多信息:

  1. Discussion at Activiti official forum

  2. MultiInstanceActivityBehavior.java - int resolveNrOfInstances(ActivityExecution 执行) ParallelMultiInstanceBehavior - void createInstances(ActivityExecution 执行); SequentialMultiInstanceBehavior - void createInstances(ActivityExecution 执行);

关于java - 具有空集合的每个循环的 Activity 多实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15336173/

相关文章:

bpmn - BPMN 图中的状态

java - 如何从单独的类访问主世界的当前 IWorld 实例

java - Selenium 按钮点击

java - Hibernate 深度代理

javascript - 如何在Alfresco中通过Activiti工作流javascript获取bpm_outcome

java - 在 Spring Boot 应用程序中为 Activiti 指定单独的数据源

java - Activiti - HistoricTaskInstanceQuery,按 JPA 实体变量的属性搜索

java - Camunda 用户任务执行失败

activiti - activiti 中的 setVariable 和 setVariableLocal 有什么区别?

java - 执行类的所有测试方法,同时仅访问 TestNG 中该类的特定组