我有一个BPMN流程,其中包含一个子流程。导致子过程的流程不同。我想知道,一旦进入子流程'执行,哪个流程导致当前执行。
为此,我认为变量可能很方便。所以我进行了一项测试,在其中我为流程的听众写了几个脚本,导致了一个过程。
execution.setVariableLocal("V", "Expecting it to be local to the sub-process' execution");
但事实证明execution
指向外部/父进程,因此变量是在父范围内设置的。
那么无论如何都要从外部设置执行局部变量吗?
答案 0 :(得分:4)
最简单的方法(基本上使用getVariable
代替getVariableLocal
):
take
事件在执行监听器中,执行
execution.setVariableLocal("flowTaken", execution.getCurrentTransitionId());
通过
在子流程中访问它execution.getVariable("flowTaken");
如果必须是子流程中的局部变量:
take
事件在执行监听器中,执行
execution.setVariableLocal("flowTaken", execution.getCurrentTransitionId());
在BPMN 2.0 XML中,为子流程定义variable input mapping:
<subProcess ...>
<extensionElements>
<camunda:inputOutput>
<camunda:inputParameter name="flowTakenAsSubprocessLocalVariable">${flowTaken}</camunda:inputParameter>
</camunda:inputOutput>
</extensionElements>
...
</subProcess>