决定执行方式

您可以选择不同于缺省执行方式的执行方式,并提供选择标准。

您可以为规则流的每个规则任务选择执行方式。 缺省情况下,创建规则任务时,将为其分配快速路径执行方式。 要实现最佳性能,您可能需要选择另一种执行方式,以更好地适应特定规则任务中的规则。

以下是一个简短表,其中显示要在哪些情况下选择的执行方式。

表 1. 执行方式选择的快速视图
选择此方式: 则在此例中:
RetePlus
  • 所有这些都包含在语义上。
  • 有状态应用程序。
  • 规则链接。
  • 在许多对象和有限更改的情况下很有用。
顺序
  • 涵盖大多数案例。
  • 很多规则,很少对象。 存在限制。 与同构规则配合使用。
  • 在多线程环境中高效。

快速路径

  • 规则流任务的缺省方式。
  • 实现决策结构的规则,许多对象。
  • 在多线程环境中高效。

要确定要在规则任务上使用的执行方式,必须分析规则任务中规则的结构以及它们执行的处理类型。

注:

当规则具有创建,修改或除去在规则条件中匹配的对象的操作时,不能使用快速路径或顺序算法。

要做出最佳选择,请回答以下问题:

规则实现哪种类型的应用程序?

根据规则任务中定义的业务逻辑的用途,选择不同的执行方式。

合规性与验证

松散关联的规则,用于检查一组条件以生成 "去/不去" 或类似的约束结果。 合规性业务规则应用程序通常用于承保、欺诈检测、数据验证和表单验证。 此类应用程序中的业务规则通常具有 yes 或 no 结果,并对决策提供一些解释。

对于合规性应用程序,最好使用 SequentialFastpath 执行方式。

计算

用于计算复杂对象模型的度量的强关联规则。 计算业务规则应用程序通常用于评分和评级、合同以及分配。 此类应用程序中的业务规则对负责提供最终值 (或评级) 的对象执行不同的计算。

对于此类应用程序,如果需要推断,最好使用 RetePlus 执行方式,否则可使用 Fastpath 执行方式。

相关性

高度相关的规则,用于关联来自一组对象的信息,以计算一些复杂度量。 关联业务规则应用程序通常用于计费。 此类应用程序中的业务规则用于插入信息。

对于关联应用程序,如果需要推断,最好使用 RetePlus 执行方式,否则可使用 Fastpath 执行方式。

有状态会话

在有状态引擎会话中关联事件的强相关规则。 有状态应用程序通常用于警报过滤和关联、GUI 定制以及 Web 页面导航。

对于此类应用程序,最好使用不带规则流的 RetePlus 执行方式。

规则使用哪些类型的对象?

根据规则所处理的对象类型,您可以选择不同的执行方式。

同构还是异构规则?

当规则对同一类不起作用时,绑定是异构的。 当绑定是异构的时,规则可能具有不同高度的条件部分。 例如:

规则 条件
Rule1 ... when{A();B()} ...
Rule2 ... when{A()} ...
Rule3 ... when{B()} ...

如果规则定义了异构绑定,请使用 RetePlusFastpath 执行方式。

当所有规则都在同一类 (对象的相同种类和数量) 上运行时,绑定是同构的,但引入了不同的测试,例如:

规则 条件
Rule1 ... when{Person(age == 12);} ...
Rule2 ... when{Person(age > 20);} ...

如果规则定义了同构绑定,请使用 顺序 执行方式。

规则操作产生怎样的效果?

根据针对执行的规则所产生的效果的类型,选择不同的执行方式。

对工作内存的修改

如果规则操作处理工作内存对象并使用 IRL 关键字 insertretractupdate,请使用 RetePlus 执行方式。 由于这些关键字需要修改工作内存,因此规则引擎会重新评估后续规则。 如果使用其他执行方式,那么规则引擎不会在修改后重新评估后续规则。

规则链接

如果规则操作在工作记忆或参数中导致修改,并且它们对没有关系的对象(例如人员和爱好)进行模式匹配,则规则之间存在链接。 此过程也称为推理。

例如:

银级客户,大于 5000 美元购买
提升至黄金水平
黄金级别客户,大于 5000 美元购买
应用 25% 折扣

您可以看到这两个规则之间存在链接,因为它们在两个不同的对象 (客户和购买) 上执行模式匹配,并且第二个规则会修改客户对象的级别属性。

基本上,如果您知道规则操作会导致其他规则执行,请使用 RetePlus 执行方式。

您在规则条件中找到了哪些类型的测试?

根据规则中使用的条件类型,选择不同的执行方式。

需要工作记忆的测试

如果规则条件使用 IRL 关键字 existscollect(不使用 infrom 构造) 测试工作内存中是否存在对象或直接收集集合的项,请使用 RetePlusFastpath 执行方式。

常规测试模式

如果规则条件中的测试具有相同的模式和顺序,例如从决策表生成的测试,请使用 Fastpath 执行方式。

如果规则条件中的测试顺序不正常,请使用 RetePlus顺序 执行方式。

您在规则上设置了哪些优先级?

根据您在规则上设置的优先级,选择不同的执行方式。

  • 如果设置了静态优先级,那么可以使用任何算法。

  • 如果设置动态优先级,即定义为表达式的优先级,那么必须使用 RetePlus 执行方式。

目录

当您为规则任务选择执行方式时,可以使用下表作为决策参考。 星数表示性能水平。

表 2. 选择执行方式
在规则任务中: RetePlus 顺序 快速路径
合规性与验证应用程序 是 是是是 是是是
具有推论的计算应用程序 是是是 False False
无推论的计算应用程序 是 是 是是是
具有推论的关联应用程序 是是是 False False
无推论的关联应用程序 是 是 是是是
工作内存对象 是是是 是是是 是是是
规则链接 是是是 False False
直接在工作内存中对存在项或集合项进行测试 是是是 False 是是是
共享测试模式 是是 是 是是是
异构绑定 是是是 False 是是是
动态优先级 是是是 False False
在众多规则中选择一些的运行时规则选择 是是是 是是是

决策引擎: 是是

大量规则 是 是是是 是是是