JBoss rule介绍_第1页
JBoss rule介绍_第2页
JBoss rule介绍_第3页
JBoss rule介绍_第4页
JBoss rule介绍_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Drools规则引擎介绍用户体验和技术开发部2012-6-10Drools简介JBoss Rules 的前身是Codehaus的一个开源项目叫Drools。最近被纳入JBoss门下,更名为JBoss Rules,成为了JBoss应用服务器的规则引擎。Drools是为Java量身定制的基于Charles Forgy的RETE算法的规则引擎的实现。具有了OO接口的RETE,使得商业规则有了更自然的表达。既然JBoss Rules是一个商业规则引擎,那我们就要先知道到底什么是Rules,即规则。在JBoss Rules中,规则是如何被表示的1Rules一条规则是对商业知识的编码。一条规则有 attr

2、ibutes ,一个 Left Hand Side ( LHS )和一个 Right Hand Side ( RHS )。规则的 LHS 由一个或多个条件( Conditions )组成。当所有的条件( Conditions )都满足并为真时, RHS 将被执行。 RHS 被称为结果( Consequence )。2rule“ ” when then EndRule系统的高层次视图3对新的数据和被修改的数据进行规则的匹配称为模式匹配( Pattern Matching )。进行匹配的引擎称为推理机( Inference Engine )。被访问的规则称为 ProductionMemory ,被

3、推理机进行匹配的数据称为 WorkingMemory 。 Agenda 管理被匹配规则的执行Drools 的优势声明式编程,使用规则文件可以很容易表达解决问题的方案。比代码更容易编写和阅读。逻辑和数据分离,逻辑和数据解耦,使逻辑更容易维护,能够适应快速变化的需求变更。速度和可扩展性使用Rate算法,Jboss rule 的Rate00算法规则集中化,所有的规则都集中在一起一起管理.方便管理,并可以例用快照的方式支持规则版本管理.工具集成,工具(如Eclipse)提供编辑和管理规则的接口,并立即提供反馈,验证和内容的援助方式。还提供审计和调试工具。理解规则,可以理解的规则,通过DSL可以自己编写

4、接近自然语方的规则语言,方便普通用户编写规则。4什么时候使用规则引擎问题的解决方案使用传统编码方式可能太复杂问题可能不是太复杂,但是你不想使用一种脆弱的方式建立一个解决方案问题没有明显的传统的算法解决方案。逻辑经常变化有现成的领域专家,但都是非技术性的。5Rate 算法简介我们介绍了JBoss Rules中对Rule的表示,其中提到了JBoss Rule中主要采用的RETE算法来进行规则匹配。RETE 算法可以分为两部分:规则编译( rule compilation )和运行时执行( runtime execution )。下图是 Drools 中的 RETE 节点类型: 6Rate算法示例7

5、Drools API参考Drools Drools 分为两个主要部分:分为两个主要部分:编译(编译( BuildingBuilding)和运行时()和运行时( Runtime Runtime )。)。构建的过程涉及到 .drl 或 .xml 规则文件的创建,它们被读入一个解析器,使用 ANTLR 3 语法进行解析。解析器对语法进行正确性的检查,然后产生一种中间结构“ descr ”, descr 用 AST 来描述规则。 AST 然后被传到 PackageBuilder ,由 PackagBuilder 来产生 Packaged 对象。 PackageBuilder 还承担着一些代码产生和编译

6、的工作,这些对于产生 Package 对象都时必需的。 Package 对象是一个可以配置的,可序列化的,由一个或多个规则组成的对象。8Building(编译)9KnowledgeBuilder 负责通过一些源文件,如一个DRL文件或者一个Excel文件,把他们转变成knowledge package或者process definitions。供于knowledge base 使用.Deploying(布署)10一个knowledge package 是一个knowledge定义集合,他可能一个rules或者processes,通过knowledge builder 创建。Knowledge

7、package 自成体系并且是可以序列化的。目前。他们形成了一个基本的部署单元。Running(运行)11statefunknowledgeSession通过knowledgeBase创建并对runtime data 进行存储和处理。Rule language (规则语言)Drools使用的是一种原始的规则语言。这种格式非常的简洁。并且支持通过expanders dsl支持自己定义的领域特定语言。如果你想从技术上了解规则语言的机制,可以参考“ drl.g ”源文件.一个rule file文件如下:package package package-nameImportsGlobalsFunctio

8、nsQueriesRules 一个rule 规则的编写rulerule name attributes whenwhen LHS thenthen RHSendend12Rule Attributes13Left Hand Side(when) syntaxPattern(conditional element) 匹配模式(条件无素)Abbreviated combined relation condition(条件关系组合)Special DRL operators14The Right Hand Side(then)15Right Hand Side 是一个规则的行动或者结果部分,这部分必

9、须包含要执行的操作列表,在这部分中添加有条件的代码是一种不好的做法,这部分应该尽量的保持短小精悍。RHS的主要目的是insert,retractor,mondify working memory data.Update(object,handel)将来告诉引擎对象已经改变,会重新触规则匹配。Insert(new something(),将会将一个新的对象放工working memory.insertLogical(new something ()类似于insert,但是没有更多的facts触发这条规则时将缩回。Retract(handle);从working memory中删除一个对象。这些方

10、法基本上都是由knowledgeHelper提供的。Domain Specific Languages(DSL语言)Domain specific languages(以下简称DSL)是一个致力于为您的问题域创建一个规则语言的方式。定义好DSL以后。它可以自动帮你翻译成DRL文件的规则。DSL和DSLR都是纯文本文件,可以使用任何文本编辑器来创建和修改他们。DSL BasicsDrools的DSL机制,允许你自定义条件表达式和结果。Example:DSL File:whenThere is a Cheese with=Cheese()when- age is less than age=age

11、agewhen- type is type=type=typeDSRL file:WhenThere is a Cheese with - age is less than 42 - type is stilton16Decision table(决策表)Drools 支持以电子表档的方式管理规则。支持Excel和CSV格式。非常适合于企业及决策。17Rule Template(规则模板)如果你的需求中有一组规则LHS,RHS是一致的。只是常量或者对象的约束值不一样,那么你可以采用生产实际规则的Drools rule template 功能。template headerparameter-n

12、ame-1.parameter-name-npackage . / optionalheader text / optionaltemplate template-name./ template text.end template18Exampletemplate headeragetypelogpackage org.drools.examples.templates;global java.util.List list;template cheesefansrule Cheese fans_row.rowNumberwhen Person(age = age) Cheese(type =

13、type)then list.add(log);endend template更多的关于构建和布署可能通过配置文件对知识库进行配置和更改。访配置文件包含一个资源列表。knowledge agent知识代理提供自动加载,缓存,和重新载入资源等操作。目前他是通过基于定位轮询的方式。未来期望基于推送的更新与重建知识库。19Knowledge Base知识库结构20Knowledge BaseKnowledge Package 1Rule1Rule2RuleKnowledge Package Rule1Rule2Rule服务服务管理管理项目结构21Web Service标准知识库历史知识库生产规则测试规则布署规则规则版本管理其他管理管理平台生产规则自然语方转换成Drools DRL(DSL,Table)Web页面生成DRL.(定制页面,通用页面)Fact上传规则模板人工编写DRL 互容互斥(规则组)测试规则测试fact

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论