有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java可流动多实例调用活动输出参数

在我的BPMN模型(流动引擎)中有以下定义:

<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>

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

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

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

有没有办法使用可流动的BPMN引擎


共 (1) 个答案

  1. # 1 楼答案

    从多实例收集变量是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"
    }