Drools-610Final入门文档.docx

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1.Drools 规则引擎基本介绍 1.1Drools 基本介绍 Drools是用Java语言编写的开放源码的规则引擎。 Drools使用RETE算法对规则进行求值,在Drools6.0(当前最新版本)中还引进了PHREAK算法,Drools 允许使用声明方式表达业务逻辑。可以使用非 XML 的本地语言编写规则,从而便于学习和理解。并且,还可以将 Java 代码直接嵌入到规则文件中,这令 Drools 的学习更加吸引人。 1.2那什么是规则引擎呢? 规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决策。 1.3规则引擎的应用 1.4Drools新特性 Drools推出了一套新的基于KIE概念的API,其目的是将之前版本中对规则引擎繁琐的调用和加载过程加以简化。 Drools6给我的最大不同就是把rules打包成jar,使用端通过kie-ci来动态从maven repo中获取指定rules jar版本,虽然和maven有紧耦合,简化以及清晰了rules的使用和动态升级:系统建立2个项目:一个Drools项目来实现规则,验收规则,生成jar包,另外一个就是真正要用规则的项目,直接通过引入不同版本的jar包实习规则动态升级。 2.Drools 适用 2.1应用场景: 为提高效率,管理流程必须自动化,即使现代商业规则异常复杂。 市场要求业务规则经常变化,系统必须依据业务规则的变化快速、低成本的更新。 为了快速、低成本的更新,业务人员应能直接管系统中的规则,不需要程序开发人员参与。 2.2作用与优点: 将业务规则与业务系统分离,解耦合; 实现自然语言描述规则逻辑,业务人员易于理解; 可视化的规则定制、审批、查询及管理; 能有效的提高实现复杂逻辑的代码的可维护性; 应付特殊状况,即客户一开始没有提到要将业务逻辑考虑在内; 符合组织对敏捷或迭代开发过程的使用; 2.3 适用的系统 企业应用的ERP、CRM以及电子商务的销售系统及营销系统等 3.Drools 实例介绍 3.1Drools编译与运行 在Drools当中,规则的编译与运行要通过Drools提供的各种API来实现,这些API总体来讲可以分为三类:规则编译、规则收集和规则的执行。在Drools当中,规则???编译与运行要通过Drools提供的各种API来实现,这些API总体来讲可以分为三类:规则编译、规则收集和规则的执行。 3.2Kmodule.xml kmodule.xml文件存放在src/main/resources/META-INF/文件夹下。 代码 ?xml version=1.0 encoding=UTF-8? kmodule xmlns= HYPERLINK /kie/6.0.0/kmodule /kie/6.0.0/kmodule ????kbase name=rules packages=rules ????????ksession name=ksession-rules/ ????/kbase ????kbase name=dtables packages=dtables ????????ksession name=ksession-dtables/ ????/kbase /kmodule这个kmodule.xml的文件的定义非常简单,其实也很容易理解: 一个kmodule里面包含了两个kbase,这个也是我们这个例子里面的两个用例,分别对应drl规则文件的例子,一个是对应Excel表格的规则例子。 每一个kbase都有一个name,可以取任意字符串,但是不能重名。 然后都有一个packages,可以看到packages里面的字符串其实就是src/main/resources下面的文件夹的名称,或者叫包名,规则引擎会根据这里定义的包来查找规则定义文件。可以同时定义多个包,以逗号分隔开来就行。 每一个kbase下面可以包含多个ksession,当然本例中都自定义了一个。 每一个ksession都有一个name,名字也可以是任意字符串,但是也不能重复。 kbase和ksession里面的name属性是全局不能重复的。 kbase和ksession中其实还有很多其它的属性,但是在这里不是很重要,就先不提了,后面我们会一一讲解的。 这样一个kmodule.xml文件就建立好了。 在运行时,KieContainer会根据*Model对象来创建KieModule、KieBase、KieSession对象。其中KieModule和KieBase只会创建一次,而KieSession则有可能创建多次,因为KieSession的创建

文档评论(0)

三四五 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档