<variable> 元素定义变量,并按可由表达式引用的格式来包含信息。变量可在规则集、规则块或规则级别定义。
在规则层次结构中,不同级别的变量可具有相同的名称。当访问某个变 量时,将使用该变量最为具体的定义。例如,如果使用相同的名称以规则集、规则块和规则 的级别来定义变量,则该规则中的表达式将使用位于规则级别的变量定义。
如果 以规则集或规则块的级别来定义变量,则多个规则将在不同时间获取和设置这些变量。因 此,为了确保正确维护变量值,请对如何编写规则集中变量间的交互加以注意。
如果在规则集或规则块级别定义变量,则在规则模式匹配后不会重新初始化该变量。
如果使用组密钥定义某个规则,则 <variable> 元素定义的规则变量在生命周期操作或 <filteringPredicate> 元素(包含于 <activateOnEvent> 元素或 <deactivateOnEvent> 元素,这两个元素包含于 <activationInterval> 元素)中无效。这是由于在这种情况下,规则变量仅应用于规则实例,而在这些表达式运行时不存在规则实例。
<variable> 具有以下属性:
名称 | 描述 | 数据类型 | 必需? |
---|---|---|---|
name | 标识特定变量。将名称引用变量。 | xsd:NMTOKEN | 是 |
dataType | 标识变量所含信息的类型。 必须为标准数据类型,例如 java.lang.String。 | xsd:NMTOKEN | 是 |
<variable> 包含以下元素。
必须将这些元素按所显示的顺序进行编码。如果某个元素为可选元素,则可以不对其进行编码,但所有已编码的元素都必须按照正确的顺序。
元素 | 必需或可选? |
---|---|
<comment> | 可选。允许出现 0 或 1 次。 |
<varInitializer> | 必需。允许出现 1 次。 |