APP下载

Drools规则与引擎运用

2017-11-09黄丽

电子技术与软件工程 2017年19期

黄丽

摘 要规则引擎技术有吸引力,且应用广泛。本文主要是对规则引擎等方面的概念以及其实现原理进行阐述,然后深入探究Drools 中规则冲突方面的相关处理,最后提出了借助于 Drools规则引擎来如何解决实际应用方面的探究,旨在促进其技术应用的更加广泛。

【关键词】规则引擎 Drools 规则冲突

1 阐述基于规则的专家系统

专家系统里面有不少的划分方法,例如:神经网络、案例推理以及基于规则的系统等等。其中,规则引擎为在规则的专家系统内的一个组成部分。有关Java的规则引擎的构成, 图1是基于规则的专家系统(简称RBES)的结构图。

2 分析Drools项目的具体

Drools项目的本质是Bob 开发的开源项目,是通过Java语言进行实现的,也是对Rete算法进行的增强。Rete算法位于模块的核心位置,被Drools封装成Rete-OO,继而再利用一些外围模块的添加来拓展其功能。其中,Rete算法是在上个世纪70年代被发明的,到现在为止,在现代生产系统中,被称为效率最高的算法,除Rete II外。但是,Rete是唯一一个效率和执行规则数目无关联的算法。

3 分析Drools中规则冲突方面的相关处理

在同一规则集里面如果同时有多项规则满足了这些情况,它就会被触发,另外对于执行次序来说,其顺序不同,执行结果各异,就是所谓的规则冲突。因此,在Drools当中专门设立其对应的冲突处理机制,主要原理就是借助冲突处理策略链路这种方法来处理其冲突。而且,对于冲突处理策略来说,它会形成一个队列,如果位于前面的冲突策略没有被解决的话,冲突规则会发挥其作用将其转到后面进行处理,直到所有的冲突都被解决完毕为止。那么,可以将Drools的冲突处理划分为如下七种处理策略,具体为:优先级策略、广度策略、复杂度优先策略、装载序号策略、简单性优先策略、深度策略以及随机策略。

4 Drools规则引擎方面的运用

借助于一个相对简单的电话费用优惠模型来说,分析实际项目中Drools工具的具体应用。通信运营商为了争夺各大客户,时常推出各种优惠套餐,有套餐类别各异,针对各种人群所需,例如,折扣、固定折扣,保底以及封顶、按时间区间优惠以及超过一定消费总额给予的特殊优惠等等。根据往常常用的优惠规则,现制定如下优惠方案:

(1)用户的每月使用总额比上月提高1成,就对多出的部分给予6折优惠;

(2)长途话费超出200的,可以优惠超出部分的2成;

(3)网费超出200的,市话可以享受5折优惠,但有一个最高上限,即最多优惠50元;

(4)使用增值服务的用户,每月月租减少10元;

(5)对于月消费不确定的用户可以签订保底合同,即每月必须要消费到一定的额度,如果不足将以保底额度来进行计算,超出的费用可以给予半价优惠。

对于以上优惠规则,必须提前设定优先项。即,要首先确定用户是否能够享受第四条优惠,如果已经享受了该优惠就不能再享受其他优惠方案了。第一项优惠方案执行必须在其他优惠之后,即核算出其他优惠规则已经优惠的之后,如果还满足第一条就可以再进行优惠计算。虽然规则就这五条,编程得话会有很多的if语句,而且很难实现且难维护。但是利用 drools 来实现的话,会有有一个封装用户各种费用的类 UserCharge,然后再跟进实际来调用以上规则,这样优惠费用的代码就非常得简单。

5 结语

综上所述,利用 Drools java 的規则引擎,与普通配置文件以及脚本语言定制相对比,规则引擎灵活且能够适用于多规则的共同约束,进而快速的实现规则筛选,将技术实现与规则约束进行有效分离,尤其是适用于变动多且复杂频繁的应用。但是,Drools 也存在一定的缺陷,尤其是面对业务规则复杂程度的不断提高,规则定义文件的难度也会提高。Dro ols缺少可视化工具以及能够自动生成各种语义规则的生成和测试工具。同时,当前的使用版本还有一定的问题,版本低不稳定,文档也有一定的问题。因此,随着计算机科技的快速发展,Java规则引擎发展一定会愈发成熟,应用愈发广泛,这样对于一些复杂的实际问题解决也是行之有效的。

参考文献

[1]http://baike.baidu.com/view/1495.htm 2009.

[2]J os uttis N M. SOA in practice[M].S outheast Universit y,2007.

[3]张渊,夏清国.基于Rete算法的java规则引擎[J].科学技术与工程,2006(06).

[4]http://soft.chinabyt e.com/dat abase/ 351/118948512.shtml.2011.

[5]http://baike.baidu.com/view/1636209.htm.

[6]缴明洋,谭庆平.Java 规则引擎工作原理以及应用[J].计算机与信息技术,2006(06).

[7]http://www.blogjava.net/guangnian0412/archive/2006/06/09/ 51756.html.

[8]陶晓俊,朱敏.基于规则引擎的企业服务开发模式[J].计算机技术与发展,2006.

[9]http://wenku.baidu.com/view/ 719f6a3e0912a216147929fe.htm.

作者单位

中华女子学院 北京市 100101