Drools的进一步研究

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Drools的进一步研究——徐建军2006-09-241.概述..........................................................................................................................................12.规则表示..................................................................................................................................22.1.Package.........................................................................................................................32.2.Rule...............................................................................................................................42.2.1.规则属性...........................................................................................................52.2.2.LHS...................................................................................................................62.2.3.RHS...................................................................................................................82.3.Query.............................................................................................................................92.4.DSL.............................................................................................................................102.5.XML............................................................................................................................112.6.决策表.........................................................................................................................133.规则编译................................................................................................................................154.Rete算法................................................................................................................................184.1.Rete网络的构成........................................................................................................184.2.基于Rete网络的前向推理过程...............................................................................245.Leaps算法..............................................................................................................................255.1.Leaps推理机的构造过程..........................................................................................265.2.事实对象的操作过程.................................................................................................315.2.1.事实对象的断言过程.....................................................................................315.2.2.事实对象的收回过程.....................................................................................325.2.3.事实对象的修改过程.....................................................................................335.3.基于Leaps推理机的前向推理过程.........................................................................335.4.Droosl3的Leaps算法的说明..................................................................................376.RuleBase.................................................................................................................................387.WoringMemory.......................................................................................................................408.Agenda....................................................................................................................................449.Drools的下一步发展.............................................................................................................4610.结论........................................................................................................................................471.概述在介绍规则系统的文章中,经常提到的一句话是:任何事物都会改变,唯一不变的是变化。Drools同样也不例外。目前Drools已经从Codehaus中独立出来,转投JBoss这座靠山,目前最新发布版本是3.0.4。目前名称叫JBossRules,但为了描述方便,这里仍称为Drools。Drools3与前面分析的2.5版本比较在很多方面都发生了改变。图1描述了目前Drools规则引擎的构成。图1Drools规则引擎的构成从图上可以发现最显著的变化是引擎的模式匹配(PatternMatcher)算法除了实现了Rete算法,还实现了Leaps算法。但是其它模块在具体细节上也有改变或者改进。本文主要针对Drools2.5版本,介绍Drools3新的实现方法和机制。并且只对这些变化较大的部分进行介绍,而忽略了相同的或者有细微改变但实现原理相通的地方。理解不清的部分可以参照以前的分析文档。本文首先介绍了Drools3中一个主要变化:Drools独立的规则定义语言,其中还包括DSl和决策表。然后介绍Drools3的规则编译过程。重点分析Drools3中的两种推理算法——Rete算法和Leaps算法,对于Rete算法只介绍了Drools3和Drools2.5实现的不同之处,由于Leaps算法是Drools3新引进的算法,所以对它进行了详细分析。最后分几小节介绍Drools3在RuleBase、WorkingMemory和Agenda三个部分所进行的主要改进,最后给出结论。2.规则表示Drools3与Drools2.5相比较,很重要的改变就是规则的表示从XML格式转变为文本格式,使用了一套自己的规则描述语言。这种语言的格式非常简单易懂,便于规则的创建和维护,而且可以通过DSL(DomainSpecificLanguages)的形式进行扩展。规则定义文件仍然以“drl”为后缀,同时Drools3仍然支持XML格式的规则定义方式。为了方便对业务规则的定义、维护和分析,Drools3还实现了决策表功能。2.1.Packagepackage表示一系列规则的集合,是定义和管理规则的基本单位,对应到Drools2.5中的RuleSet。与Java的package不同,这里package的名称只有名字空间的作用,与文件和目录结构无关。package的主要内容由import、expander、global、function、query和rule部分构成。结构见图2。下面主要介绍import、expander、global和function四个部分,query和rule在后续小节中介绍。图2package的语法结构这里的import语句与Java中的import语句功能相同。把规则需要引用的Java对象类名德全路径写在“import”之后,规则引擎运行时会自动装载相应类。示例如下:importorg.drools.examples.FibonacciExample.Fibonacci;expander语句用于表示扩展规则定义所需的DSL文件,这些DSL文件解释了规则体中针对特定问题领域的方便用户理解的组成元素。示例如下:expanderticketing.dsl;global语句表示多个规则用到的全局变量,常用于表示规则使用的数据,对应于Drools2.5中的application-data属性。如果多个包同时定义同一名称的全局变量,那这些变量必须是同一类型,实际执行时它们都指向同一变量。由于全局变量并不会断言到WorkingMemor

1 / 48
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功