规则的生命周期

规则的生命周期中的每个阶段均可具有多个原因和结果。通过 在生命周期操作(由 <lifeCycleActions> 元素定义)中编写和包含表达式,规则编写 者可定义在每个阶段要执行的操作。

规则的生命周期中的阶段

以下为规则的生命周期中的 4 个主 要阶段:
装入
将规则装入运行中的活动关联技术引擎,这将触发 <onLoad> 元素中的操作。
激活
激活规则,这将触发 <onActivation> 元素中的操作。
停用
停用规则,这将触发 <onDeactivation> 元素中的操作。
卸装
从运行中的活动关联技术引擎卸装规则,这将触发 <onUnload> 元素中的操作。

激活和停用阶段可在规则的生命周期中发生多次,但装入和卸装阶 段仅可发生一次。

通常情况下,无需定义生命周期操作。以下为可能要定义特定生 命周期操作的情形的示例:
  • 当装入某个规则时,可能要创建到需要在该规则中访问的外部系统(例如,数据库管理 器)的连接。当卸装这同一个规则时,可能要断开该连接并运行任何必要的清除进程。
  • 当激活某个规则时,可能要验证某些资源是否对该规则可用。
  • 当停用某个阈值规则但未符合阈值,且时间段也尚未结束时,可能要将带有该信息的消息转发给某人。
由于规则的激活和停用可在生命周期内发生多次,因此为这些阶段编写的所有操作均 可多次运行。

每个生命周期阶段的原因和结果

表 1 列出了 每个生命周期阶段的原因和结果。

表 1. 每个生命周期阶段的原因和结果
生命周期阶段 原因 结果
装入 以下任一情况:
  • 添加或替换规则或规则块,这将导致装入新的规则。
  • 在活动关联技术引擎中替换规则集,这将导致装入新规则集中的规则。
<onLoad> 元素中的操作将运行。
激活 激活规则。可使用以下任一方式来激活规则:
  • 根据 <activationInterval> 元素中的定义
  • 使用 activate() 方法,该方法是通过 act_lib 变量提供的
  • 通过应用程序调用,来调用活动关联技术引擎中的 activate() 方法
如果规则处于不活动状态,则 <onActivation> 元素中的 操作将运行。
停用 停用规则。可使用以下任一方式来停用规则:
  • 根据 <activationInterval> 元素中的定义(例外情况:<activationByGroupingKey> 元 素中的 <deactivateOnEvent> 元素不会导致规则停用)
  • 使用 deactivate() 方法,该方法是通过 act_lib 变量提供的
  • 通过应用程序调用,来调用活动关联技术引擎中的 deactivate() 方法
如果规则处于活动状态,则 <onDeactivation> 元 素中的操作将运行。
卸装 以下任一情况:
  • 活动关联技术引擎关闭,这将导致卸装规则。
  • 除去或替换规则或规则块,这将导致卸装旧的规则。
  • 从活动关联技术引擎中除去规则集或替换其中的规则集,这将导致卸装旧规则集中的规则。
如果规则处于活动状态,则将运行 <onDeactivation> 元 素中的操作,随后为 <onUnload> 元素中的操作。否则,仅运行 <onUnload> 元素中 的操作。