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"
}
在我的 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"
}