variable 元素

<variable> 元素定义变量,并按可由表达式引用的格式来包含信息。变量可在规则集、规则块或规则级别定义。

详细信息

规则集变量
全局应用于规则集并可由该规则集中的任意表达式引用。
规则块变量
仅在规则块(和所有包含的规则块)中应用,并可由该规则块中的任意表达式引用。
规则变量
仅应用于该规则中的表达式。

在规则层次结构中,不同级别的变量可具有相同的名称。当访问某个变 量时,将使用该变量最为具体的定义。例如,如果使用相同的名称以规则集、规则块和规则 的级别来定义变量,则该规则中的表达式将使用位于规则级别的变量定义。

如果 以规则集或规则块的级别来定义变量,则多个规则将在不同时间获取和设置这些变量。因 此,为了确保正确维护变量值,请对如何编写规则集中变量间的交互加以注意。

如果在规则集或规则块级别定义变量,则在规则模式匹配后不会重新初始化该变量。

在以下任一 情况中,请对规则集和规则块变量的获取和设置使用锁定功能,以避免变量值设置不正确:
  • 如果定时器规则在 <onTimeOut> 操作期间获取或设置变量
  • 如果活动关联技术引擎所嵌入至的应用程序为多线程

如果使用组密钥定义某个规则,则 <variable> 元素定义的规则变量在生命周期操作或 <filteringPredicate> 元素(包含于 <activateOnEvent> 元素或 <deactivateOnEvent> 元素,这两个元素包含于 <activationInterval> 元素)中无效。这是由于在这种情况下,规则变量仅应用于规则实例,而在这些表达式运行时不存在规则实例。

属性

<variable> 具有以下属性:

表 1. <variable> 元素的属性
名称 描述 数据类型 必需?
name 标识特定变量。将名称引用变量。 xsd:NMTOKEN
dataType 标识变量所含信息的类型。 必须为标准数据类型,例如 java.lang.String。 xsd:NMTOKEN

变量的名称限制

变量名称具有某些限制。因此,<variable> 元素上名称属性的值具有以下限制:
  • 它仅可包含以下字符:
    • 大写 ASCII 拉丁字母 A-Z。Unicode 表示法为 \u0041-\u005a
    • 小写 ASCII 拉丁字母 a-z。Unicode 表示法为 \u0061-\u007a
    • ASCII 下划线(_)。 Unicode 表示法为 \u005f
    • 美元符号($)。Unicode 表示法为 \u0024
    • ASCII 数字 0-9。Unicode 表示法为 \u0030-\u0039
  • 它不得为空。
  • 不得为空字符串。
  • 不得包含任何空格。
  • 不得包含句点。
  • 不得以任何形式(大写、小写或大小写混合形式) 的 act_ 开头。

包含于

包含

<variable> 包含以下元素。

必须将这些元素按所显示的顺序进行编码。如果某个元素为可选元素,则可以不对其进行编码,但所有已编码的元素都必须按照正确的顺序。

表 2. <variable> 元素中包含的元素
元素 必需或可选?
<comment> 可选。允许出现 0 或 1 次。
<varInitializer> 必需。允许出现 1 次。
相关概念
变量