第 80 章 在决策引擎中执行控制
当新规则数据进入决策引擎的工作内存时,规则可能会完全匹配并有资格执行。单个工作内存操作可能会导致多个有资格的规则执行。当规则完全匹配时,决策引擎会创建一个激活实例,引用规则和匹配的事实,并将激活添加到决策引擎计划中。用户使用冲突解析策略来控制这些规则激活的执行顺序。
在 Java 应用程序中第一次调用 fireAllRules ()
后,决策引擎周期会重复到两个阶段:
- 参与评估。在此阶段,决策引擎会选择可执行的所有规则。如果没有可执行规则,则执行周期将结束。如果找到可执行规则,则决策引擎会在电缆中注册激活,然后进入工作的内存操作阶段来执行规则结果操作。
-
操作内存操作。在此阶段,决策引擎会对之前在电话中注册的所有激活的规则执行规则结果操作(每个规则部分)。
完成所有结果操作后,或者主 Java 应用程序进程调用
fireAllRules ()
再次调用 fireAllRules (),决策引擎将返回到销售评估阶段以重新处理规则。
图 80.1. 决策引擎中的两阶段执行过程
当电话上存在多个规则时,一个规则的执行可能会导致另一个规则从电缆中删除。要避免这种情况,您可以定义如何在决策引擎中执行规则。定义规则执行顺序的一些常见方法是,使用规则 salience、Mitment group、激活组或 DRL 规则集的规则单元。
80.1. 规则的 Salience 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
每个规则都有一个整数 salience
属性,用于决定执行顺序。在激活队列中排序时,具有较高 salience 值的规则会被赋予更高的优先级。规则的默认 salience 值为零,但 salience 可以是负数或正数。
例如,以下 DRL 规则示例列在决策引擎堆栈中,按所示的顺序列出:
RuleB
规则列出第二个,但它的 salience 值高于 RuleA
规则,因此首先执行。