没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
Drools 技术指南
Drools(JBoss Rules )具有一个易于访问企业策略、易于调整以及易于
管理的开源业务规则引擎,符合业内标准,速度快、效率高。业务分析师或审
核人员可以利用它轻松查看业务规则,从而检验是否已编码的规则执行了所需
的业务规则。
JBoss Rules 的前身是 Codehaus 的一个开源项目叫 Drools。最近被纳入
JBoss 门下,更名为 JBoss Rules,成为了 JBoss 应用服务器的规则引擎。
Drools 是为 Java 量身定制的基于 Charles Forgy 的 RETE 算法的规则引擎
的实现。具有了 OO 接口的 RETE,使得商业规则有了更自然的表达。
Drools 的简要概述
Drools 是一款基于 Java 的开源规则引擎,以将复杂多变的规则从硬编码中解放出来,以规则脚本的
形式存放在文件中,使得规则的变更不需要修正代码重启机器就可以立即在线上环境生效
规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代
码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则
做出业务决策从而给编程带来了极大的方便。
下图就是引用了规则引擎后的效果:
图(1-1)
开始我们 Drools 规则引擎之旅
小编是一经验尚浅的 工程师,有写的不得当的地方,还请大家海涵。小编
研究的版本是 版本,目前看的最新的版本是 ,上面做了
一些优化,在最后小编会简单的在文中说明一下的。
Drools 新特性
推出了一套新的基于 (知识就是一
切)概念的 ,其目的是将之前版本中对规则引擎繁琐的调用和加载过程加
以简化。
给我的最大不同就是把 打包成 ,使用端通过 来动态从
!" 中获取指定 版本,虽然和 ! 有紧耦合,简化以及
清晰了 的使用和动态升级例如:系统建立 # 个项目:一个 项目
来实现规则,验收规则,生成 包,另外一个就是真正要用规则的项目,直
接通过引入不同版本的 包实现规则动态升级。
引入业务规则技术的目的
对系统的使用人员
把业务策略(规则)的创建、修改和维护的权利交给业务经理
提高业务灵活性
加强业务处理的透明度,业务规则可以被管理
减少对 $ 人员的依赖程度
避免将来升级的风险
对 IT 开发人员
简化系统架构,优化应用
提高系统的可维护性和维护成本
方便系统的整合
减少编写“硬代码”业务规则的成本和风险
这里引用了一位 大咖的博客文章 http://blog.csdn.net/
lifetragedy/article/details/51143914
如果大咖看到了,请谅解。小编在这里先谢谢您啦 MK 大神!
应用场景
为提高效率,管理流程必须自动化,尽管现代商业规则异常复杂。
市场要求业务规则经常变化,系统必须依据业务规则的变化快速、
低成本的更新。
为了快速、低成本的更新,业务人员应能直接管系统中的规则,不
需要程序开发人员参与。
作用与优点:
将业务规则与业务系统分离,解耦合;
实现自然语言描述规则逻辑,业务人员易于理解;
可视化的规则定制、审批、查询及管理;
能有效的提高实现复杂逻辑的代码的可维护性;
应付特殊状况,即客户一开始没有提到要将业务逻辑考虑在内;
符合组织对敏捷或迭代开发过程的使用;
如下如所示:
%图:&#'
Drools 的基本工作过程
之前我们一般的做法都是使用一个接口进行业务的工作,首先要传进去参数,其次要
获取到接口的实现执行完毕后的结果。其实 Drools 也大相径庭,我们需要传递进去数据,
用于规则的检查,调用外部接口,同时还可能需要获取到规则执行完毕后得到的结果。
在 drools 中,这个传递数据进去的对象,术语叫 Fact 对象。Fact 对象是一个普通的
java bean(小编是这样理解的),规则中可以对当前对象进行任何的读写操作,调用该对象提
供的方法,当一个 java bean 插入到 working Memory(内存储存)中,规则使用的是原有对
象的引用,规则通过对 fact 对象的读写,实现对应用数据的读写,对于其中的属性,需要
提供 geer seer 访问器,规则中,可以动态的往当前 working Memory 中插入删除新的 fact
对象。
注:何为 fact 对象 下面只是小编对 fact 对象的一些理解和认知,有说的不对的地方还请指点
Fact 对象
( 是指在 规则应用当中,将一个普通的 )* 插入到规则的 +,! 当中后的对象。规则可以对 (
对象进行任意的读写操作,当一个 )* 插入到 +,! 当中变成 ( 之后,( 对象不是对原来的
)* 对象进行 -%克隆',而是原来 )* 对象的引用。
规则进行计算的时候需要用到应用系统当中的数据,这些数据设置在 ( 对象当中,然后将其插入到规则的 +,!
当中,一个 ( 对象通常是一个具有 和 方法的 .). 对象,通过 和 方法可以方便的对 ( 对象 /
进行操作,所以我们可以简单的把 ( 对象理解为规则与应用系统数据交互的桥梁或通道。
当 ( 对象插入到 +,! 当中后,会与当前 +,! 当中所有的规则进行匹配,同时返回一个
( 0 对象。( 0 对象是插入到 +,! 当中 ( 对象的引用句柄,通过 ( 0 对象可以实
现对对应的 ( 对象通过 进行删除及修改等操作。
Drools 文件多变的扩展名
说了这么多,这规则引擎是个什么文件呢,也是*.java *.class *.js 之类的?当然不是,
规则引擎可以分为多种方式,最原始也是最基本的是*.drl 文件,当然也可以是*.xml 的方式,
还可以是*.xls or *.xlsx 的方式;看着就很灵活是吧。
剩余63页未读,继续阅读
资源评论
zhuiyi2
- 粉丝: 0
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- F103-霸道开发板2.8寸电阻触摸屏例程.rar
- Google(高德)地图瓦片python代码下载
- Python实现输出杨辉三角形
- polsarpro官方教程、操作说明 PolSARpro v5.0 Software Training Course
- STM32 TouchGFX的使用二图片显示
- buildx镜像文件,也可以通过网上其他方式获取
- 【中级软件设计师】上午题12-软件工程(2):单元测试、黑盒测试、白盒测试、软件运行与维护
- 免费计算机毕业设计-医院住院管理系统的设计与实现(包含代码+论文)
- tt100k数据转换yolo格式
- 免费计算机毕业设计-学生在线网络考试系统的设计与实现(包含论文+源码)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功