在我们的工作流程中,我们有几个多实例调用 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
的类(不推荐)来控制序列流。我更喜欢使用 exclusiveGateway
s 。检查此链接以获取更多信息:
MultiInstanceActivityBehavior.java - int resolveNrOfInstances(ActivityExecution 执行) ParallelMultiInstanceBehavior - void createInstances(ActivityExecution 执行); SequentialMultiInstanceBehavior - void createInstances(ActivityExecution 执行);
关于java - 具有空集合的每个循环的 Activity 多实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15336173/