业务规则引擎-jboss Drools Expert
rule engine
目 录
1 现状分析
1.1 现状.
1.2 问题.
1.3 解决方案.
1.4 适用情景.
2 什么是规则引擎.
3 Drools简介.
4 竞争产品比较.
5 开发环境搭建.
6 创建HelloWorld程序.
7 规则语言.
1 现状分析
1.1 现状
在很多行业应用中比如银行、保险领域,业务规则往往非常复杂,并且规则处于不断更新变化中,而现有很多系统做法基本上都是将业务规则绑定在程序代码中。
1.2 问题
主要存在的问题有以下几个方面:
1) 当业务规则变更时,对应的代码也得跟着更改,每次即使是小的变更都需要经历开发、测试验证上线等过程,变更成本比较大。
2) 长时间系统变得越来越难以维护。
3) 开发团队一般是由一个熟悉业务的BA(业务分析人员)和若干个熟悉技术的开发人员组成,开发人员对业务规则的把握能力远不及BA,但实际上却承担了将业务规则准确无误实现的重任。
4) 系统僵化,新需求插入困难。
5) 新需求上线周期较长。
1.3 解决方案
能否让我们的业务系统更灵活一点呢?
思路:将业务规则从技术实现中提取出来,实现技术和业务分离,开发人员处理 技术、业务分析人员定义业务规则,各自做自己所擅长的事情。
方案:目前已经有比较成熟的开源产品支持,这就是本文所要介绍的Drools,我们将业务规则定义在Database或者BRMS(Business Rule Management System)中,通过管理DB或者BRMS实现业务逻辑的动态改变。
1.4 适用情景
什么时候应该使用规则引擎?
虽然规则引擎能解决我们的许多问题,但我们还需要认真考虑一下规则引擎对我
们的项目本身是否是合适的。需要关注的点有:
Ø 我的应用程序有多复杂?
对于那些只是把数据从数据库中传入传出,并不做更多事情的应用程序,最好不要使用规则引擎。但是,当在Java中有一定量的商业逻辑处理的话,可以考虑Drools的使用。这是因为很多应用随着时间的推移越来越复杂,而Drools可以让你更轻松应对这一切。
Ø 我的应用的生命周期有多久?
如果我们应用的生命周期很短,也没有必要使用Drools,使用规则引擎将会在中长期得到好处。
Ø 我的应用需要改变吗?
这个答案一般情况下是肯定的,“这世界唯一不变的只有变化”,我们需求也是这样的,无论是在开发过程中或是在开发完成以后,Drools能从频繁变化的需求中获得好处。
2 什么是规则引擎
规则引擎是基于规则的专家系统的核心部分,主要由三部分组成:规则库(Knowledge base)+Working Memory(Fact base)+推理机(规则引擎),规则引擎根据既定事实和知识库按照一定的算法执行推理逻辑得到正确的结果。
业界标准:jsr 94.
业务规则引擎(BRE,business rules engine)是一种软件组件,它允许非程序员添加或更改业务流程管理(BPM)系统中的业务逻辑。业务规则是一个描述企业政策或程序的说明。业务逻辑描述的是与数据库中执行规则的数据相关的一系列操作。
业务规则引擎将业务规则执行代码与业务流程管理系统的其他代码分开。这样最终用户无需请求程序员的帮助就可以更改业务规则。在更改时,引擎会评估更改对系统中其他规则的影响,如果有冲突,就会提示用户。
据作者Alex Berson和Larry Dubov所述,一个完整的业务规则引擎(BRE)包括以下内容:
业务规则库——一个用于存储业务用户所定义的业务规则的数据库。
业务规则编辑器——一个直观的用户界面,使业务用户能够定义、设计、记录和编辑业务规则。
报表组件——直观的用户界面,允许业务用户查询和报告现行规则。
规则引擎执行核心——执行这些规则的实际编程代码。
3 Drools简介
Drools 是一个基于Charles Forgy's的RETE算法的,易于访问企业策略、易于调整以及易于管理的开源业务规则引擎,符合业内标准,速度快、效率高。
业务分析师人员或审核人员可以利用它轻松查看业务规则,从而检验是否已编码的规则执行了所需的业务规则。
4 竞争产品比较
与Drools功能类似的同类开源产品主要有:OpenRules、OpenLexicon等,商业产品功能比较强也比较贵,这里不做比较,主要差别如下表:
Drools | OpenRules | OpenLexicon | |
规则表示方法 | 支持以下四种: The Rule Language Domain Specific Language Decision Tables XML Rule Language | Decision Table | 无规则语言,通过Web界面配置规则,并保存在数据库中 |
规则算法 | RETE算法 | 不详 | 不祥 |
规则开发 | Rule IDE(Eclipse插件) Excel XML | Excel | 基于Web的配置界面 |
规则知识库 | 支持XML、Excel、BRMS | Excel | Database |
易用性 | 通过Rule IDE,可以方便地编辑DRL和DSL文件 | 业务人员直接使用Decision Table估计还是有一定的难度 | 不太好用 |
开放性 | 非常开放 | 不开放 | 不开放 |
可拓展性 | 通过与J2EE技术结合,具有很强的拓展性。 | 不太好 | 很不好 |
JSR-94标准 | 支持 | 支持 | 不支持 |
成熟度 | 高 | 较低 | 比较新,不成熟 |
厂商背景 | JBoss | 小厂商 | 小厂商 |
如继续请参考:http://blog.csdn.net/pengrg166/article/details/5796565
8 在线资料
百度文库《Drools5规则引擎开发教程》
Drools and jBPM consist out of several projects: |