Camunda BPM 执行和变量范围的误解

FrV*_*aBe 6 java business-process-management camunda

我使用camunda BPM 流程引擎并认为理解一些概念很重要。目前我对Process ExecutionsVariable Scopes的概念有点挣扎。

为了了解流程执行期间发生的情况,我设计了以下演示流程,并用相同的颜色标记同一执行中的活动。我可以这样做,因为我调试了每个活动中的执行 ID。

在此处输入图片说明

我明白了大部分。令我惊讶的是输入参数会打开一个新的执行(任务 1.3)。感谢meyerdan 对此进行澄清。

我不明白的是“任务 2.2”在“任务 2.1”的同一个执行中。一个报价约处决的camunda文档

在内部,流程引擎在流程实例内创建两个并发执行,每个并发执行路径一个。

所以我会期望 Task 2.1 / Task 2.2 和 Task 3.1 每个都存在于自己的执行中。

有人能解释一下吗?

我理解这一点的主要动机是它对流程变量范围的影响。到目前为止我还没有弄清楚 Java API 方法是什么

VariableScope#getVariable / VariableScope#setVariable

VariableScope#getVariableLocal / VariableScope#setVariableLocal

真的。我首先认为“本地”变体仅指当前执行,而其他变体仅指流程实例执行- 但这似乎只是事实的一半。这些是我非常想念 JavaDoc 的 getter 和 setter ;-)奖励积分也解释了这一点!

谢谢!

您将在GitHub 上具有可执行 JUnit 测试的 Maven 项目中找到该过程。

Fal*_*nge 5

查看变量作用域和变量可见性

关于setVariable方法的文档 ( Java Object API )中的引用:

请注意,此代码将变量设置在变量范围层次结构中的最高可能点。这意味着,如果变量已经存在(无论是在此执行中还是在其任何父作用域中),它将被更新。如果变量尚不存在,则在最高范围(即流程实例)中创建它。如果应该在提供的执行中精确设置变量,则可以使用本地方法。