代码之家  ›  专栏  ›  技术社区  ›  mio

activiti多实例,用于具有空集合的每个循环

  •  3
  • mio  · 技术社区  · 12 年前

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

    <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表现成这样?如果没有,您将如何建模工作流?

    1 回复  |  直到 12 年前
        1
  •  2
  •   Community CDub    5 年前

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

    1. Discussion at Activiti official forum

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