根据导致子流程的流程设置执行的局部变量
Setting an execution's local variable according to the flow led to the sub-process
我有一个 BPMN 流程,其中有一个子流程。有不同的流程导致子流程。我想知道,一旦进入子流程的执行,哪个流程导致了当前执行。
为此,我认为变量可能会派上用场。所以我进行了一个测试,其中我为 flow 的侦听器编写了几个脚本,导致 sup-process。
execution.setVariableLocal("V", "Expecting it to be local to the sub-process' execution");
但事实证明 execution
指向 outer/parent 进程,因此变量设置在父作用域中。
那么有没有办法从外部设置一个执行局部变量呢?
最简单的方法(基本上用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>
我有一个 BPMN 流程,其中有一个子流程。有不同的流程导致子流程。我想知道,一旦进入子流程的执行,哪个流程导致了当前执行。
为此,我认为变量可能会派上用场。所以我进行了一个测试,其中我为 flow 的侦听器编写了几个脚本,导致 sup-process。
execution.setVariableLocal("V", "Expecting it to be local to the sub-process' execution");
但事实证明 execution
指向 outer/parent 进程,因此变量设置在父作用域中。
那么有没有办法从外部设置一个执行局部变量呢?
最简单的方法(基本上用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>