3

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

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

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

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

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

空集合根本不进入循环。

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

4

1 回答 1

2

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

  1. Activiti官方论坛讨论

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

于 2013-03-12T20:19:31.140 回答