第 6 章 变量
变量存储运行时使用的数据。进程设计器使用三种变量类型:
全局变量
全局变量可以在特定会话中的所有进程实例和资产可见。它们主要供业务规则和约束使用,并由规则或约束动态创建。
进程变量
进程变量在 BPMN2 定义文件中作为属性定义,在进程实例中可见。它们在完成进程时初始化和销毁。
本地变量
本地变量与特定进程元素相关联,并在特定进程元素中可用,如活动。在初始化元素上下文时,它们会被初始化,即当执行工作流进入节点并执行 onEntry 操作完成后(如果适用)。当元素上下文被销毁时,它们会被销毁,即当执行工作流离开元素时。
一个元素(如进程、子进程或任务)只能访问其本身和父上下文中的变量。元素无法访问元素中定义的变量。因此,当元素在运行时需要访问变量时,首先搜索其自己的上下文。
如果在元素的上下文中无法直接找到该变量,则会搜索立即父上下文。搜索将继续,直到达到进程上下文。如果是全局变量,则搜索将直接在会话容器上执行。
如果找不到变量,读取访问请求会返回 null,写入访问会生成错误消息,进程将继续执行。根据变量的 ID 搜索。
6.1. 变量标签 复制链接链接已复制到粘贴板!
为了更好地控制变量行为,您可以在 BPMN 进程文件中标记进程变量和本地变量。标签是简单的字符串值,作为元数据添加到特定变量中。
Red Hat Process Automation Manager 支持以下标签来处理变量和本地变量:
-
必需:将 变量设置为要求以启动进程实例。如果进程实例在没有所需变量的情况下启动,则 Red Hat Process Automation Manager 会生成VariableViolationException错误。 -
ReadOnly:指示变量仅用于信息目的,且只能在进程实例执行期间设置一次。如果在任何时候修改了只读变量的值,Red Hat Process Automation Manager 会生成VariableViolationException错误。 restricted:与VariableGuardProcessEventListener一起使用的特殊标签,以指示根据所需和现有角色修改变量的权限。VariableGuardProcessEventListener从DefaultProcessEventListener扩展,并支持两个不同的构造器:VariableGuardProcessEventListenerpublic VariableGuardProcessEventListener(String requiredRole, IdentityProvider identityProvider) { this("restricted", requiredRole, identityProvider); }public VariableGuardProcessEventListener(String requiredRole, IdentityProvider identityProvider) { this("restricted", requiredRole, identityProvider); }Copy to Clipboard Copied! Toggle word wrap Toggle overflow VariableGuardProcessEventListenerpublic VariableGuardProcessEventListener(String tag, String requiredRole, IdentityProvider identityProvider) { this.tag = tag; this.requiredRole = requiredRole; this.identityProvider = identityProvider; }public VariableGuardProcessEventListener(String tag, String requiredRole, IdentityProvider identityProvider) { this.tag = tag; this.requiredRole = requiredRole; this.identityProvider = identityProvider; }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 因此,您必须在带有允许的角色名称和身份提供程序的会话中添加一个事件监听程序,该供应商返回用户角色,如下例所示:
ksession.addEventListener(new VariableGuardProcessEventListener("AdminRole", myIdentityProvider));ksession.addEventListener(new VariableGuardProcessEventListener("AdminRole", myIdentityProvider));Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在上例中,
VariableGuardProcessEventListener方法验证变量是否带有安全约束标签(restricted)。如果用户没有所需的角色,Red Hat Process Automation Manager 会生成VariableViolationException错误。
Red Hat Process Automation Manager 不支持 Business Central UI 中显示的变量标签,如 内部、输入、输出、业务相关 和跟踪。
您可以将标签直接添加到 BPMN 进程源文件中,作为 customTags 元数据属性,其格式为 ![CDATA[TAG_NAME]]。
例如,以下 BPMN 进程将 所需的 标签应用到 approver process 变量:
图 6.1. 在 BPMN 型号器中标记的变量示例
在 BPMN 文件中标记的变量示例
您可以将多个标签用于适用变量的变量。您还可以在 BPMN 文件中定义自定义变量标签,使变量数据可供 Red Hat Process Automation Manager 处理事件监听程序。自定义标签不会影响 Red Hat Process Automation Manager 运行时,作为标准变量标签,仅用于信息。您以相同的 customTags 元数据属性格式定义自定义变量标签,用于标准 Red Hat Process Automation Manager 变量标签。