博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Drools 规则引擎
阅读量:4197 次
发布时间:2019-05-26

本文共 1183 字,大约阅读时间需要 3 分钟。

所有项目都是被需求变更累死的,eXtreme Programing提供了一种哲学,一种态度,但更实际的,是那些能够应付需求变更的技术。

比如用OLAP支持复杂报表的快速定制,用script语言如Groovy支持客户自定义公式,
还有Rule Engine,我们一天到晚挂在口上的亲爱的商业规则。
Rule Engine并不新鲜,但通常只要一些名词已经足够把所有普通项目组震退,CLisp、Rete、前向推导.... 惟有Drools,终于把java和xml带回我们身边,让规则引擎简单到和JSP一样可以进入所有的程序组。
先看一段精简又实用的HelloWorld,由两部分组成, 一个是调用规则的test.jsp :
//设置一个测试用的VO
Vo vo = new Vo();
vo.setPoStatus("A:draft");
//读入规则
RuleBase ruleBase = RuleBaseBuilder.buildFromURL("rule.drl");
//把vo放入WorkingMemory中并执行
WorkingMemory workingMemory = ruleBase.newWorkingMemory( );
workingMemory.assertObject( vo );
workingMemory.fireAllRules( );
//显示结果
out.print(po.getPoStatus());
一个是规则文件rule.drl:
<rule-set name="test rules"
<rule name="Bob Likes Cheese">
<parameter identifier="vo">
<java:class>com.ito.vo</java:class>
</parameter>
<java:condition>vo.getStatus().equals("A:draft")</java:condition>
<java:consequence>
vo.setStatus("B:order");
</java:consequence>
</rule>
</rule-set>
整个规则分成三段, 第一段定义刚刚放入的对象; 第二段用Java语法判断条件; 第三段为条件符合时的执行语句
真的非常简单吧
经过小范围的试用,发现没有这么简单,因为Drools主要提供了一个RETE的规则匹配算法和一个Script Engine,具体怎么用,还很靠自己。如果drl文件的定义方式和RETE算法能够使条件的表达大大简化,那么它就是有用的。否则,一段重构后的代码能够达到和drl文件相仿的功能。所以,还是要多看点基础,把Business Rules用在正确的地方。

读后感:这玩意牛B,我也只是在把玩中

转载地址:http://cdbli.baihongyu.com/

你可能感兴趣的文章
SQL语言的组成部分 ddl dcl dml
查看>>
mysql数据库从库同步延迟的问题
查看>>
1.mysql数据库主从复制部署笔记
查看>>
mysql数据库主从同步的问题解决方法
查看>>
mysql 配置 - on xFanxcy.com
查看>>
MySQL数据库高并发优化配置
查看>>
mysql一: 索引优化
查看>>
测试人员,今天再不懂BDD就晚了!
查看>>
35岁后还被职场青睐的人,都做了这几件事
查看>>
全链路压测那点事(一)
查看>>
阿里巴巴开源性能监控神器Arthas初体验
查看>>
使用猴子测试工具(7)
查看>>
使用猴子测试工具(8)
查看>>
一个简单的猴子测试小工具
查看>>
是QA还是AQ?
查看>>
害怕自动化(1)
查看>>
Script and Test Data
查看>>
在ITPub上发表文章《如何进行测试自动化的成本估算》
查看>>
深圳市软件质量提升工程系列活动——安全测试百人大课堂
查看>>
做培训讲师就像做一名导演
查看>>