众所周知,许多规则引擎在处理规则时都使用Rete算法,该算法构造了一棵树,称为Rete树。
为了确保更好的规则处理性能,Rete树的理想拓扑是什么?换句话说,我想知道规则集应该更好地对应于哪种树拓扑结构,以获得更好的性能。
发布于 2015-11-27 03:39:39
简而言之,性能受规则和对象的数量、测试的数量、规则中测试的排序方式以及规则之间共享的测试/条件数量的影响。
您应该通过以下方式重写规则以获得最佳性能:
请参阅Adjusting conditions IBM文档。
您还应该减少需要由规则评估的对象的数量,以及测试的数量。
有关Rete和IBM ODM的参考:
有关Rete树结构的示例,请参阅RetePlus network structure IBM ODM documentation
RetePlus旨在优化对大量对象的大量规则的评估。RetePlus对测试进行过滤,以便不对不相关的测试进行评估。可以在使用类似测试的规则之间共享测试,这样就不需要为所有规则重新评估它们。
可获得最佳结果:
不同对象上的通用测试是共享的。当单个评估包含太多变量定义和条件时,minimized.
发布于 2016-04-30 03:16:22
简单地说,如果您想在编排中使用RetePlus算法,请只使用Decision Trees业务规则。
以这种方式使用它会快得多。尽管您可以与其他算法以及Sequential (在本例中用于Action Rules )结合使用。
因此,您的解决方案可以是Action Rules的一部分(使用Sequential),也可以是Decision Tables的一部分(使用RetePlus)。
希望这能有所帮助。
https://stackoverflow.com/questions/33935384
复制相似问题