Drools4.0官方使用手册中文.pdf
《Drools4.0官方使用手册中文.pdf》由会员分享,可在线阅读,更多相关《Drools4.0官方使用手册中文.pdf(214页珍藏版)》请在咨信网上搜索。
1、第一章.Drools 4.0发布版标注1.1.Drools 4.0 的新内容Drools4.0是从之前的Drools3.0.x系列以来的一次主要更新。在语言表达式,引擎性能和 工具实用性方面都有一整套的新特性开发完成。下面列出一些最引人注意的更新列表。1.1.1.语言表达式增强 新的条件元素:from,collect,accumulate for all 新的字段约束操作:not matches,not contains,in,not in,memberOf,not memberOf 新的自索引字段:this 对条件元素嵌套的完全支持,对一阶逻辑的完全支持 支持使用&和II连接多个约束条件 语
2、法分析器的增强以去除之前的一些语言约束,如字符转码和关键字冲突 支持插件式语言,以及对MVEL脚本语言的完全支持 完全重写的DSL引擎,允许完全的本地化 Fact属性对于返回值约束和内嵌求值的自动变换 支持嵌套访问,属性导航和简化的集合、数组以及映射的语法 对XML规则的增强支持1.1.2.核心引擎增强 对于元数据类型的本地支持,避免经常性的自动封包操作 支持透明的可选的影子Fact 对于复杂规则的Rete网络性能增强 支持规则流 支持有状态与无状态的Working Memory(规则引擎Session)支持异步Working Memory操作 规则代理(Agent)提供热部署机制和BRMS集
3、成 对于规则冲突解决方案的动态salience值 支持参数化查询 支持暂停命令 支持顺序执行模式支持插件式的全局变量转换器1.1.3.IDE 增强 支持调试中的规则断点 对于规则流的所见即所得功能 对于规则编制的新的向导编辑器 支持所有新的引擎特性1.1.4.业务规则管理系统-BRMS 新的BRMS工具 具有Web2.0 Ajax特性的用户友好的Web界面 Package 配置 通过向导编辑器与文本编辑器,规则的作者更容易修改规则 Package编译和部署 通过使用Rule Agent简化部署 通过分类组织规则,简化规则的查找 可版本化,你可以很容易的使用之前保存的版本替换现在的一套规则 与J
4、CR兼容的规则仓库1.1.5.其它增强减少了依赖类库和更少的内存占用1.2.从 Drool3.0.x 向 Drools4.0.x 更新的提示之前说到,Drools4.0是自Drools3.0.x系列以来的重要关键更新。但不幸的是为了达到这 次发布的目标,带来了一些向后兼容性的问题,如邮件列表和博客中所提到的。本节简单介绍一下如何从Drools3.0.x向Drool4.0.x升级1.2.1.API 变更只有很少的API变更是对于常规用户可见并需要调整的。1.2.1.1.Working Memory 创建Drools3.0.x中只有一种Working Memory类型,它的是以有状态Working
5、 Memory的方式工 作的。Drool4.0.x提供两个独立的有状态与无状态working memory,现在被称为Rule Sessiono 在 Drools3.0.x 中建立 Working Memory 的代码是:Example 1.1.Drools 3.0.x:Working Memory 仓1J建WorkingMemory wm=rulebase.newWorkingMemory();在Drools 4.0.x中必须变成:Example 1.2.Drools 4.0.x:有状态 Rule Session 仓建StatefulSession wm=rulebase.newStatef
6、ulSession();StatefulSession对象与Drools3.0.x中的WorkingMemory对象的行为相同(它甚至继承了WorkingMemory接口),因此除了创建代码以外这个调整不会带来其它问题。1.2.1.2.Working Memory 操作Drools 4.0.x支持可插入的语言,并且已经内建了对Java和MVEL脚本语言的支持。为了 避免关键字冲突,working memcny的一些操作被重新命名如下:Table 1.1.Working Memory Actions equivalent API methodsDrools 3.0.xDrools 4.0.xWo
7、rkingMemory.assertObject()WorkingMemory.assertLogicalObject()WorkingMemory.modifyObject()WorkingMemory.insert()WorkingMemory.insertLogical()WorkingMemory.update()1.2.2.规则语言的变更DRL规则语言也有如下一些变更是不支持向后兼容性的。1.2.2.1.Working Memory ActionsWorking Memory操作在规则推论中的变化和在方法API上的变化相似,下表描述了这些改 变:Table 1.2.Working M
8、emory Actions equivalent DRL commandsDrools 3.0.xDrools 4.0.xassert()insert()assertLogical()insertLogical()modify()update()1.2.2.2,元数据类型支持与解包(unboxing)Drools 3.0.x没有对元数据类型的本地支持,因此它会自动封包所有的元数据类型到各自 的封装类中。这样的化,任何封包的变量绑定需要一个手工的解包操作。Drools 4.0.x已经对元数据类型有完全的支持,不再需要封装任何值。因此所有之前的解 包操作必须从DRL中删除。Example 1.3.
9、Drools 3.0.x 手工解包rule Primitive int manual unbox”when$c:Cheese($price:price)then$c.setPrice($price.intValue()*2)end上面的规则在4.0.x中将是:Example 1.4.Drools 4.0.x 元数据支持rule Primitive support”when$c:Cheese($price:price)then$c.setPrice($price*2)end1.2.3.Drools更新工具Drools更新工具是一个帮助你将DRL从3.0.x升级到4.0.x的一个简单的程序。在这一
10、点上它主要是更新working memory从3.0.x到4.0.x的操作调用,但是期待它在未 来的几个星期里可以覆盖更多的情况。要注意的是,这个工具并不是简单的进行字符替换,实际上它分析规则文件并确保不会做出预料之外的任何事情。因此它对于大量规则的升级来 说是一个安全的工具。Drools更新工具可以在下面的源码库链接中作为一个maven项目获取http:/anonsvn.labs, Out它,然后与项目的pom.xml文件一起执行maven clean install操作。在解决了所有依赖类库的class路径后,你可以使用下面的命令运行这个工具:java-cp$CLASSPATH org.d
11、rools,tools,update.UpdateTool-f -d -s 这个程序的参数非常容易理解:-h,-help,显示一个非常简单的帮助-d你的源码根路径-f将要被更新的文件的查找模式。这个格式与ANT中使用的相同,*二单个文件,目录*=任何子目录级别;例如src/main/resources/*/*.drl=匹配所有在/src/main/resources下的子目录中的DRL文件-s,suffix被增加到所有更新文件上的后缀第2章.规则引擎2.1.什么是规则引擎?2.1.1.背景介绍A.I.(Artificial Intelligence)是一个关注于“使计算机像人类一样思考”的广泛
12、的研 究领域,包括 Neural Networks(神经网络),Genetic Algorithms(遗传算法),Decision Trees(决策树),Frame Systems(框架系统)and Expert Systems(专家系统)。Knowledge representation(知识呈现)是A.I.的一部分,关注于如何呈现和操纵知识。专家系统使 用知识表示把知识编码简化成一个可用于推理的知识库比如,我们可以用知识库处理数 据以推出结论。专家系统又叫基于知识的系统、基于知识的专家系统,并被认为是A.I.的 一个应用。开发一个专家库系统的过程被称为知识工程。EMYCIN是最早的专家系统
13、Shell(外壳)之一,它从医学诊断专家系统MYCIN发展而来。早期的专家系统有自己的logic hard codedshells(逻辑硬件编码外壳),把逻辑与系统相分离,为用户输入提供一个简单的 使用环境。Drools是一个使用基于规则的方法实现的专家系统的规则引擎,更准确的说属 于产生式规则系统。术语“产生式规则”从形式语法中产生,形式语法使用一种抽象结构来准确描述形式语 言(wikipedia)。The term Production Rule originates from formal grammar-where it is described as an abstract stru
14、cture that describes a formal language precisely,i.e.,a set of rules that mathematically delineates a(usually infinite)set of finite-length strings over a(usually finite)alphabet/z(wikipedia).业务规则管理系统在普通的规则引擎基础上通过提供一集中的业务用户,规则建立系统,管 理,发布,协作,分析和终端用户工具等来达到更高的附加价值;使得企业能够以更顺利的 方式引入规则引擎规则引擎这个术语是非常不明确的,因为
15、任何以任意形式使用能够应用于数据生成结果的规 则的系统都可以称为规则引擎。包括像表单验证和动态表达式引擎这样的简单系统都可以称 之为规则引擎。作者 Malcolm Chisholm 的著作How to Build a Business Rules Engine(2004)就例证了这种不明确性。该书实际是讲述如何为管理校验规则而建立和维护一个数 据库计划。该书中接着展示了如何根据这些校验规则产生VB代码来校验输入一在某些情况 下这是很有用的,作者十分惊讶于这种不明确性,在没有觉察到各种规则引擎间细微不同之 处时,他希望能发现其中的奥秘以帮助增强Drools引擎。JBoss jBPM(业务流程管理
16、工具)在它的判断节点上使用表达式和代理引用来控制工作流中的事务。通过在每个节点上求值以 决定分支的流向一这同样是一个规则引擎。产生式规则系统既是一种规则引擎,又是一个专 家系统,而之前提到的校验器和表达式求值规则引擎不是专家系统产生式规则系统完全关注于精确表达propositional(命题)和first order logic(一阶 逻辑)的知识表示,不存在含糊不清的定义。产生式规则系统的核心是一个能够处理大量规 则和事实的推理引擎。推理引擎将事实、数据与产生式规则(也可以叫做产生式,或干脆叫 规则)进行匹配,以推出结论。产生式规则是一个用一阶逻辑进行知识呈现的二元结构。whenthen将新
17、的或已存在的事实与产生式规则进行匹配的过程被称为模式匹配,这个过程由推理机完 成。推理机使用的用于模式匹配的算法有很多,包括:Linear线性的 Rete 网状 Treat Leaps 叶状Drool实现了 Rete和Leaps算法;Leaps是试验性质的,因为它是个十分新的算法。Drools 中的Rete算法被称为ReteOO,表示Drools为面向对象系统(Object Oriented systems)增强并优化了 Rete算法。其它基于Rete算法的引擎也有他们对Rete算法进行独有增强后 的市场术语,比如RetePlus,Retelllo要知道象RetelH这样的名字纯粹是市场性的,
18、不 像原始版本的Rete算法,它们没有公布实现细节,这一点很重要;因此,问类似于“Drools 是用Retelll实现的吗?”的问题是没有任何意义的。最寻常的对Rete算法的增强在下面 这篇文章中有论述“Prociucticm Matching for Large Learning Systems(Rete/UL)/z(1995)by Robert B.Doorenboso规则保存在Production Memory(规则库)中,推理机要匹配的facts(事实)保存在Working Memory(工作内存)中。事实被插入到工作内存中后,可能被修改或删除。一个有大量规则 和事实的系统可能会很多规
19、则被满足,这些规则被称为具有冲突性。Agenda通过(冲突决 策策略)管理这些冲突规则的执行顺序。Figure 2.1.基础 Rete 网络产生式规则系统的推理机是有状态的并且能够维持其中状态值的准确性,称为Truth Maintence(真值维护)。规则引擎中的动作仅当其依赖的约束为真值情况下执行,如果约 束不再有效,则推论动作不会执行。Honest Politician”(Drools提供的一个示例)就是 这种真值维护的示范,在示例中规定,只要在存在诚实的政治家时,一个政体才有希望。whenan honest Politician existsthenlogically assert Ho
20、pewhenHope existsthenprint Hurrah!Democracy Lives”whenHope does not existthenprint Democracy is Doomed”产生式规则系统有两种执行方法正向推理和逆向推理,两种方法都使用的系统称为混合 型产生式规则系统。理解这两种操作方法是理解产生式规则系统之所以不同和怎样从中选择 最合适的系统的关键。正向推理是数据驱动的,facts事实被传递到工作空间中,在那里有 一个或多个规则与这些事实匹配,并由Agenda安排执行一我们从一个事实开始,传递事实,最后得到一个结论。Drools是基于正向推理的规则引擎。No
21、Rule FoundIExit If specified by rulaFigure 2.2.正向推理逆向推理是由目标驱动的,这意味着我们从一个引擎需要满足的结论开始进行推理。在这个 结论不能满足时,将搜索一些能够满足的结论来推理,称为子目标,这些子目标将帮助完成 当前目标的某些未知部分一一引擎持续这个过程,直到最初的结论被证明或没有可证明的子 目标。Prolog是逆向驱动型的引擎。Drools将在下一个主要版本中加入对逆向推理的支持。-、Examine working memory and goals to see if goals are known”true in knowledge b
22、aseWorking Memory-e 0 6 e s-6-np e j f o u o三2。看山 ufflq士。e qf AFor each rule condition,recursively backchain with condition as goal.Fire RiNo Rule FoundAll recursionreturns true?One or more goals failed,Check next matching rule-Goals found to be true,exist returning true-Figure 2.3.逆向推理2.2.为何使用规则引擎?
23、人们常常会问到:1.何时应当使用规则引擎?2.规则引擎与if.then这样的硬编码比起来有什么优点?3.为何应当使用规则引擎取代脚本框架?我们尝试通过以下说明来解答这些问题2.2.1.规则引擎的优点 声明式编程规则引擎允许你描述做什么而不是如何去做。这里的主要优点是使用规则更加容易对复杂的问题进行表述,并得到验证。(规则 比编码更容易阅读).规则系统能够解决非常非常困难的问题,并提供了方案怎样达到和在解决问题的方 向上所作的每一个决定的原因(这对于类似神经网络这样的AI系统来说不容易达 到)逻辑与数据分离数据保存在系统对象中,逻辑保存在规则中。这根本性的打破了面向对象系统中将 数据和逻辑耦合起
24、来的局面,这点是有利的也是不利的,在于你的观察角度。这样 做的结果是,将来逻辑发生改变时更容易被维护,因为逻辑保存在规则中。这点在 逻辑是跨领域或多领域中使用时尤其有用。通过将逻辑集中在一个或数个清晰的规 则文件中,取代了之前分散在代码中的局面。速度及可测量性Rete算法、Leaps算法,以及由此衍生出来的Drools的Rete、Leaps算法,提供了 对系统数据对象非常有效率的匹配。这些都是高效率尤其当你的数据是不完全的改 变(规则引擎能够记得之前的匹配)。这些算法经过了大量实际考验的证明。知识集中化通过使用规则,将建立一个可执行的规则库。这意味着规则库代表着现实中的业务 策略的唯一对应,理
25、想情况下可读性高的规则还可以被当作文档使用。工具集成例如Eclipse(将来可能在基于Web的界面上)这样的工具为规则的修改与管理、即时获得反馈、内容验证与修补提供了办法。审查与调试工具同样也可用了。解释机制通过将规则引擎的决断与决断的原因一起记录下来,规则系统提供了很好的“解释 机制”。易懂的规则通过建立对象模型以及DSL(域定义语言),你可以用接近自然语言的方式来编写 规则。这让非技术人员与领域专家可以用他们自己的逻辑来理解规则(因为程序的 迷宫已经被隐藏起来了)。2.2.2.何时应当使用规则引擎?对这个问题最简短的回答就是“当没有令人满意的传统的程序设计方法能够解决这个问题 时”。下面上
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Drools4 官方 使用手册 中文
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【曲****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【曲****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。