没有合适的资源?快使用搜索试试~ 我知道了~
本文档是描述如何去使用Drools的文档,重点放在规则的语法和用法上,可让读者在编写规则是查阅; Drools(又称 JBoss Rules)是JBoss开源社区中的一个为Java量身定制的、基于RETE算法的产生式规则引擎的实现
资源推荐
资源详情
资源评论
Drools应用
版本 日期 修改历史
作者
.
2017 年 月 27
日
Jules
目 录
1 简介..............................................................................................................................1
1.1 什么是规则引擎?...............................................................................................................1
1.2 Drools简介............................................................................................................................1
1.3 何时使用Drools....................................................................................................................2
2 Drools工作原理..........................................................................................................4
2.1 产生式规则引擎工作原理...................................................................................................4
2.2 RETE算法.............................................................................................................................5
3 Drools实战..................................................................................................................1
3.1 导入drools依赖包.................................................................................................................1
3.2 Hello Drools..........................................................................................................................1
3.3 规则语言..............................................................................................................................8
3.3.1 规则文件........................................................................................................................................8
3.3.2 规则构成........................................................................................................................................9
3.3.3 保留字............................................................................................................................................9
3.3.4 注释..............................................................................................................................................11
3.3.5 Package........................................................................................................................................11
3.3.6 Import...........................................................................................................................................12
3.3.7 Expander......................................................................................................................................12
3.3.8 Global全局变量...........................................................................................................................12
3.3.9 Function.......................................................................................................................................14
3.3.10 规则............................................................................................................................................14
3.3.11 规则属性....................................................................................................................................16
3.3.12 LHS (when) 条件元素...............................................................................................................18
第 1 页 共 页 机密 – 未经允许不得扩散 红帽软件中国
1 简介
本文档是描述如何去使用 Drools 的文档,重点放在规则的语法和用法上,可让读者在编写规
则是查阅,因此对于 Drools 的实现原理就不会详尽的介绍,如果读者有兴趣可以联系本文作者索
取相关资料。
1.1什么是规则引擎?
在大型商业系统中,业务规则、商业逻辑等等都会比较复杂。而且在很多大型系统当中,很
多业务规则、商业逻辑并不是一成不变的。甚至当系统进入生产阶段时,客户的业务规则、商业
逻辑也会改变。某些系统要求甚至更高,要求能 24 小时不停机,并且能够实时修改商业规则。这
就对商业系统提出了较大的挑战。如果将这些可变的规则直接编写到代码里面的话,业务规则一
旦改变,就要修改代码。并由此带来编译、打包、发布等等问题。这对于生产系统来说是极不方
便的。因此,如何考虑把一些可变的业务规则抽取到外面,使这些业务规则独立于程序代码。并
最好是能够实时的修改业务规则,这样就可以做到不用打包编译发布等等。因此,规则引擎营运
而生。
规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用
程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,
并根据业务规则做出业务决策。使用规则引擎可以通过降低实现复杂业务逻辑的组件的复杂性,
降低应用程序的维护和可扩展性成本。
大多数规则引擎都支持规则的次序和规则冲突检验,支持简单脚本语言的规则实现,支持通
用开发语言的嵌入开发。目前,市面上应用产生了众多的规则引擎。开源规则引擎的代表是
Drools;商业规则引擎的代表是 ILog。
1.2Drools 简介
Drools(又称 JBoss Rules)是 JBoss 开源社区中的一个为 Java 量身定制的、基于 RETE 算法
的产生式规则引擎的实现。 目前(2010 年 8 月),Drools 最新的版本是 5.1.0.M1,本文档是基于此
版本来描述,所有例子都是基于 Drools5.1.0.M1。读者可到 Drools 的官方网站下载 Drools 的相应
版本(http://www.jboss.org/drools/downloads.html)。
第 1 页 共 1 页 机密 – 未经允许不得扩散 红帽软件中国
1.3何时使用 Drools
对这个问题最简短的回答就是“当没有令人满意的传统的程序设计方法能够解决这个问题时”。
下面上对所谓没有传统解决方法的一个描述:
对于传统代码来说,问题需要的精确度太高。
这种问题可能并不复杂,但是你找不到一种稳定的方法去建立它。
问题超越了任何有明显运算法则的方案。
它是一个难以解决的复杂问题,没有明显的传统解决方案或者问题没有一个准确的
定论。
业务逻辑经常发生改变
逻辑本身是简单的(但不是指过于简单),但是规则经常发生变化。在许多软件组
织中正式版本的间隔是较长并且较少的,规则可以在适当的安全前提下帮助提供一定的
敏捷性。
领域专家(或者业务分析师)是非技术人员
领域专家通常对业务规则和流程具有很好的认知。他们通常是不了解软件技术的人
员,但是具有很好的逻辑性。规则能够让他们用自己的术语来描述业务逻辑。当然他们
仍然需要严密的思考和良好的逻辑思维能力(许多在非软件技术型岗位上的人没有进行
过形式逻辑的训练,因此在和他们工作时要特别小心,在将业务知识编撰成规则时,要
特别注意业务规则和流程应当是当前能够理解的)。
如果规则对于你的项目组来说是一种新的技术,那在使用前必须将学习与管理的费用成本考
虑进去。规则不是一种无意义的技术,这篇文档尽量让其易于理解。
在一个面向对象的应用中,规则引擎通常被用在包含业务逻辑的关键部分(具体与应用相
关),特别是在十分繁杂凌乱的部分。这是对面向对象中将所有逻辑封装在对象中的一个倒置。
但这并不是说应该抛弃对象模型,相反的来说在任何一个现实应用中业务逻辑仅仅是应用的一部
分。如果你曾注意到在你的代码中有很多”if””else””switch”和其它凌乱的逻辑,你总是要回过头去
修改它们(可能是由于提供给你的逻辑是错误的,或是你的理解变化了),那么可以考虑使用规
则。如果你所面对的问题没有算法或者模式合适解决,考虑使用规则。
规则可以被嵌入你的应用中,或者作为一个服务使用。通常规则最好被当作一个有状态的组
件使用——因此它们通常在应用中是一个整体。无论怎样,在一些规则被成功定义为可重用的服
务的个案中,规则是无状态的。
如果考虑在组织中使用规则,那考虑产品中将如何使用和更新规则是很重要的(选择很多,但
第 2 页 共 2 页 机密 – 未经允许不得扩散 红帽软件中国
是不同的组织间有不同的需要——通常这超出了应用者/项目团队的控制)。
第 3 页 共 3 页 机密 – 未经允许不得扩散 红帽软件中国
剩余38页未读,继续阅读
资源评论
shuliu465716154
- 粉丝: 0
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功