如您所知,许多规则引擎在处理规则时使用 Rete 算法,并且该算法构造一棵树,即所谓的 Rete 树。
Rete 树的理想拓扑是什么,以确保更好的规则处理性能?换句话说,我想知道规则集应该更好地对应的树拓扑以获得更好的性能。
如您所知,许多规则引擎在处理规则时使用 Rete 算法,并且该算法构造一棵树,即所谓的 Rete 树。
Rete 树的理想拓扑是什么,以确保更好的规则处理性能?换句话说,我想知道规则集应该更好地对应的树拓扑以获得更好的性能。
简短的回答是,性能受规则和对象的数量、测试的数量、规则中测试的排序方式以及规则之间共享多少测试/条件的影响。
您应该通过以下方式重写规则以获得最佳性能:
请参阅调整条件IBM ODM 文档。
您还应该减少需要通过规则评估的对象的数量以及测试的数量。
有关 Rete 和 IBM ODM 的参考:
Rete 树的结构示例,请参阅RetePlus 网络结构IBM ODM 文档
RetePlus 旨在优化对大量对象的大量规则的评估。RetePlus 过滤测试,不评估不相关的测试。可以在使用类似测试的规则之间共享测试,这样就不需要为所有规则重新评估它们。
为了获得最佳结果:
对不同对象的共同测试是共享的。
执行的测试次数被最小化。
当单个评估包含太多变量定义和条件时,性能会下降。
该测试使用较少的内存。
简而言之,如果您想RetePlus
在编排中使用该算法,请仅使用Decision Trees
业务规则。
以这种方式使用时速度要快得多。尽管您可以与其他算法以及Sequential
(Action Rules
在这种情况下为 )结合使用。
因此,您的解决方案可能是操作规则的一部分(带有Sequential
)和部分Decision Tables
(带有RetePlus
)。
希望这可以帮助。