Drools 原理

网上确实有很多关于 Drools 教程的文章,包括我上一篇的《JAVA规则引擎 Drools 教程》。但是很少有提及 Drools 原理的文章,因此我就深入研究了一下 Drools ,把我理解的实现机制分享给大家。

Drools 最早来源于一个 jboss 的项目,发展到现在成为大家熟知的一个规则引擎框架。

Drools

说到 Drools 原理,就必须从 DRL 语言说起。DRL 的相关语法大家可以到 http://docs.jboss.org/drools/release/6.5.0.Final/drools-docs/html_single/index.html#d0e4235 进行学习。

DRL 解释执行流程

Drools 规则是在 java 应用程序上运行的,其要执行的步骤顺序由代码确定。为了实现这一点,Drools 规则引擎将业务规则转换成执行树,如下图所示:

DRL 解释执行流程

如上图所示,每个规则条件分为小块,在树结构中连接和重用。每次将数据添加到规则引擎中时,它将在与此类似的树中进行求值,并到达一个动作节点,在该节点处,它们将被标记为准备执行特定规则的数据。

规则引擎工作方式

Drools 规则引擎基于 ReteOO 算法(对面向对象系统的Rete算法进行了增强和优化的实现),它将事实(Fact)与规则进行匹配,以推断相应的规则结果,这个过程称之为模式匹配。

Drools 规则引擎基于 ReteOO 算法

规则引擎默认不会在规则评估时立即执行业务规则,除非我们强制指定。当我们到达一个事实(Fact)与规则相匹配的节点时,规则评估会将规则操作与触发数据添加到一个叫作议程(Agenda)的组件中,如果同一个事实(Fact)与多个规则相匹配,就认为这些规则是冲突的,议程(Agenda)使用冲突解决策略(Conflict Resolution strategy)管理这些冲突规则的执行顺序。整个生命周期中,规则评估与规则执行之间有着明确的分割。规则操作的执行可能会导致事实(Fact)的更新,从而与其它规则相匹配,导致它们的触发,称之为前向链接。

规则引擎

参考资料

  • http://docs.jboss.org/drools/release/6.5.0.Final/drools-docs/html_single/index.html

Drools 原理

: » Drools 原理

原创文章,作者:Carrie001128,如若转载,请注明出处:https://blog.ytso.com/tech/java/251723.html

(0)
上一篇 2022年5月3日 11:40
下一篇 2022年5月3日 11:44

相关推荐

发表回复

登录后才能评论