Drools教程(1)-简介
drools,是由JBOSS公司开源的一套基于JAVA的规则引擎系统
什么是规则引擎
Drools实现了将业务规则从应用程序代码中分离出来。规则引擎使用特定的语法编写业务规则,规则引擎可以接受数据输入、解释业务规则、并根据业务规则做出相应的决策
规则引擎的能干什么
假设我们碰到一个需求:我们要给公司工作满5年的员工发纪念章
一般我们做法是:
if(员工工作年限>=5){
给员工发奖();
}
这种做法的优点是简单快捷高效,但是假如我们已经开发好了程序,正在线上运行,突然,公司来了需求变更,不行,纪念章不够,我们要改变规则,工作满10年,而且是管理岗位,才发纪念章,这时候,苦逼的程序员只能火速的改代码,然后 打包,然后上线,万一 万一 手忙脚乱发生各种意外,呵呵,完蛋.
那规则引擎如何处理呢?
首先,发奖程序,先去访问,规则服务-》规则服务再去访问对应的规则=》最后规则条件通过了之后,再去请求发奖程序。这样假如公司要变更发奖规则,那只需要在规则系统上对对应规则进行变更,重新发布规则就可以满足需求。当然,从系统架构层面上来说,系统的架构就变得复杂了,所以在实际运用中,依然需要根据实际情况来决定是否采用规则系统。
规则引擎的优点
- 实现业务逻辑与业务规则的分离,业务规则的集中管理
- 可以动态修改规则,动态发布,快速响应需求变更
- 可以减低开发成本,可以让业务人员参与到规则编写,降低软件工程师的介入程度(==当然即便是drools 现在也很难做到,毕竟对业务人员的要求比较高,但是可以降低介入程度==)
- 可以降低业务复杂度,降低开发成本,当然,与之相对的,系统的架构变得更加复杂。
规则引擎的缺点
- 使程序的架构变得复杂,对程序架构提出了更高的要求
- 要学习规则脚本的语法
- 某些特殊的场景或者要求,导致各种莫名的坑
Drools规则引擎介绍
Drools是Jboss公司旗下一款开源的规则引擎,有如下特点;
完整的实现了Rete算法;
提供了强大的Eclipse Plugin开发支持;
通过使用其中的DSL(Domain Specific Language),可以实现用自然语言方式来描述业务规则,使得业务分析人员也可以看懂业务规则代码。
提供了基于WEB的BRMS——Guvnor,Guvnor提供了规则管理的知识库,通过它可以实现规则的版本控制,及规则的在线修改与编译,使得开发人员和系统管理人员可以在线管理业务规则。