在我们的工作流程中,我们有几个多实例调用活动,如下所示:
<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表现得像这样?如果没有,您将如何建模工作流程?
答案 0 :(得分:2)
使用标准的Activiti功能无法解决此问题。所以唯一的选择是使用网关或Java服务任务,实现ActivityBehaviour
(不推荐)的类来控制序列流。我更喜欢使用exclusiveGateway
s。请查看此链接以获取更多信息:
MultiInstanceActivityBehavior.java - int resolveNrOfInstances(ActivityExecution execution) ParallelMultiInstanceBehavior - void createInstances(ActivityExecution execution); SequentialMultiInstanceBehavior - void createInstances(ActivityExecution execution);