30、流程变量及作用域

描述

前面已经很多地方使用过流程变量(variable),camunda中的变量主要有全局变量(variable)局部变量(Local Variable).
前面我们使用的都是全局变量,就是整个流程实例中都可以访问的变量,作用域是整个流程实例。
现实开发中,有时候变量只希望变量部分范围可见,多实例任务时同一变量名会有多份不同数据,为了保持数据的并发安全,控制变量的作用域特别重要。

1.限制

流程变量主要是用来方便流程流转的数据传递,大量的业务数据不要使用流程变量。最好只传一些状态数据,影响流程路径的业务数据。流程引擎默认是给变量的内存空间是4M左右,这还包含了流程引擎内因变量,业务使用的在3M以内可以考虑是安全的。

2.作用域

全局变量
在整个流程实例中可见,任何地方设置新值会覆盖旧值。高作用域设置的
30、流程变量及作用域_第1张图片

  • a和b在根作用域上定义,任务A、任务B和任务C可以看到它们。
  • c定义在子流程范围内,任务A和任务B可以看到它。
  • b在任务A的活动范围内被再次定义,并且只能被任务A看到。它覆盖了根范围内的变量b。

全局变量传播

  • 当变量合并到流程实例中时(例如,关于任务完成、消息关联等),每个变量都从活动的范围传播到更高的范围。

  • 当作用域包含具有相同名称的变量时,传播结束。在这种情况下,变量值被更新

你可能感兴趣的:(camunda工作流实战,java,低代码,架构,分布式,开发语言)