在我们的工作流程中,我们有几个多实例调用活动,如下所示:
<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 服务任务以及实现
ActivityBehaviour
(不推荐)的类来控制序列流。我更喜欢使用 exclusiveGateway
s 。检查此链接以获取更多信息:
MultiInstanceActivityBehavior.java - intresolveNrOfInstances(ActivityExecution执行) ParallelMultiInstanceBehavior - void createInstances(ActivityExecution执行); SequentialMultiInstanceBehavior - void createInstances(ActivityExecution执行);