Flowable 多实例调用 Activity - 输出参数

Flowable Multi Instance Call Activity - Output Parameters

在我的 BPMN 模型(Flowable Engine)中有以下定义:

<callActivity id="111-example-111" name="CALLING_SUBPROCESS_MULTIINSTANCE" calledElement="SOME_SUBPROCESS" flowable:calledElementType="key" flowable:fallbackToDefaultTenant="false">
<extensionElement>
    <flowable:in source="INPUT_VAR" target="SUB_INPUT_VAR"></flowable:in>
    <flowable:out source="SUB_OUTPUT_VAR" target="OUTPUT_VAR"></flowable:out>
</extensionElement>
<multiInstanceLoopCharacteristics isSequential="true" flowable:collection="SOME_COLLECTION" flowable:elementVariable="SOME_ELEMENT"></multiInstanceLoopCharacteristics>

调用 activity 已正确处理,但我无法将输出变量 SUB_OUTPUT_VAR 传递给父进程。我尝试了一些其他语法,例如:

<flowable:out source="SUB_OUTPUT_VAR" target="OUTPUT_VAR_${loopCounter}"></flowable:out>

因为每个循环都可以产生SUB_OUTPUT_VAR,我想把它们都传给父进程。但是没有用。

有什么方法可以使用 Flowable BPMN Engine 来实现吗?

从多实例中收集变量是 Flowable(和其他类似引擎一段时间以来)一直存在的问题。

您提出的解决方案

<flowable:out source="SUB_OUTPUT_VAR" target="OUTPUT_VAR_${loopCounter}"></flowable:out>

但是,在即将发布的 6.7.0 版本中。会有更好的解决方案。您将能够使用变量聚合。

例如

您可以将输出定义为

<flowable:out source="SUB_OUTPUT_VAR" target="OUTPUT_VAR"></flowable:out>

然后在 multiInstanceLoopCharacteristics 中你可以定义如下内容:

<multiInstanceLoopCharacteristics isSequential="false" flowable:collection="SOME_COLLECTION" flowable:elementVariable="SOME_ELEMENT>
    <extensionElements>
        <flowable:variableAggregation target="outputResult">
            <variable source="OUTPUT_VAR" target="OUTPUT_VAR"></variable>
        </flowable:variableAggregation>
    </extensionElements>
</multiInstanceLoopCharacteristics>

这样做会创建一个 JSON 具有以下结构的数组结果:

{
    "OUTPUT_VAR": "result"
}