在上篇博客中,介绍了策略型业务逻辑处理中几种选择,其中有一种选择就是利用规则引擎来进行逻辑处理。其实藏在规则引擎的底层中还是有很多算法的,其中有一种算法是rete算法,最近正好也关注算法,就简单的学习了一下,因为对这个算法理解的非常清楚,所以如果有有对这个算法熟悉的朋友,可以给予指正。
RETE算法是一个用于产生式系统的高效模式匹配算法。在一个产生式系统中,被处理的数据叫做working memory,用于判定的规则分为两个部分LHS(left-hand-side)和RHS(right hand side),分别表示前提和结论。主要流程可以分为以下步骤:
- Match:找出符合LHS部分的working memory集合
- Confilict resolution:选出一个条件被满足的规则
- Act:执行RHS的内容
- 返回1
RETE算法主要改进Match的处理过程,通过构建一个网络进行匹配。
算法详细描述
RETE网络主要分为两个部分,alpha网络和beta网络。如下图所示(图片引用其他网站)。