如您所知,许多规则引擎在处理规则时使用Rete算法,此算法构造一棵树,即所谓的Rete树。
Rete树的理想拓扑是什么,以确保更好的规则处理性能?换句话说,我想知道规则集应该更好地对应的树形拓扑,以获得更好的性能。
答案 0 :(得分:2)
简短的回答是,性能受规则和对象数量,测试数量,规则中的测试顺序以及规则之间共享的测试/条件数量的影响。
您应该通过以下方式重写规则以获得最佳效果:
请参阅Adjusting conditions IBM ODM文档。
您还应该减少需要按规则评估的对象数量以及测试次数。
有关Rete和IBM ODM的参考:
有关Rete树结构的示例,请参阅RetePlus network structure IBM ODM文档
What affects the performance of a Decision Server application : RetePlus
RetePlus旨在优化大量的评估 跨越大量对象的规则。 RetePlus过滤这些测试 不评估不相关的测试。测试可以在之间共享 使用类似测试的规则,以便它们不需要 重新评估所有规则。
为了获得最佳效果:
共享不同对象的常见测试。
进行的测试次数最少。
当单个评估包含太多变量定义和条件时,性能会下降。
测试使用较少的内存。
答案 1 :(得分:0)
简单地说,如果您想在业务流程中使用RetePlus
算法,请仅使用Decision Trees
业务规则。
以这种方式使用它会快得多。虽然您可以与其他算法以及Sequential
结合使用(对于Action Rules
,在这种情况下)。
因此,您的解决方案可以成为行动规则的一部分(使用Sequential
),部分使用Decision Tables
(使用RetePlus
)。
希望这有帮助。