规则引擎的Rete树理想拓扑

时间:2015-11-26 09:51:34

标签: performance graph rule-engine rete

如您所知,许多规则引擎在处理规则时使用Rete算法,此算法构造一棵树,即所谓的Rete树。

Rete树的理想拓扑是什么,以确保更好的规则处理性能?换句话说,我想知道规则集应该更好地对应的树形拓扑,以获得更好的性能。

2 个答案:

答案 0 :(得分:2)

简短的回答是,性能受规则和对象数量,测试数量,规则中的测试顺序以及规则之间共享的测试/条件数量的影响。

您应该通过以下方式重写规则以获得最佳效果:

  • 重新排序测试和条件,以便将最具辨别力的条件移至规则的开头
  • 分享条件

请参阅Adjusting conditions IBM ODM文档。

您还应该减少需要按规则评估的对象数量以及测试次数。

有关Rete和IBM ODM的参考:

  

RetePlus旨在优化大量的评估   跨越大量对象的规则。 RetePlus过滤这些测试   不评估不相关的测试。测试可以在之间共享   使用类似测试的规则,以便它们不需要   重新评估所有规则。

  

为了获得最佳效果:

     
      
  • 共享不同对象的常见测试。

  •   
  • 进行的测试次数最少。

  •   
  • 当单个评估包含太多变量定义和条件时,性能会下降。

  •   
  • 测试使用较少的内存。

  •   

答案 1 :(得分:0)

简单地说,如果您想在业务流程中使用RetePlus算法,请仅使用Decision Trees业务规则。

以这种方式使用它会快得多。虽然您可以与其他算法以及Sequential结合使用(对于Action Rules,在这种情况下)。

因此,您的解决方案可以成为行动规则的一部分(使用Sequential),部分使用Decision Tables(使用RetePlus)。

希望这有帮助。