Drools-规则引擎的使用总结

Drools-规则引擎的使用总结

ID:44208731

大小:203.50 KB

页数:4页

时间:2019-10-19

Drools-规则引擎的使用总结_第1页
Drools-规则引擎的使用总结_第2页
Drools-规则引擎的使用总结_第3页
Drools-规则引擎的使用总结_第4页
资源描述:

《Drools-规则引擎的使用总结》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、前一段时间在开发了一个做文本分析的项目。在项目技术选型的过程屮,尝试使用了Drools规则引擎。让它来作为项目屮有关模式分析和关键词匹配的任务。但后来,因为某种原因,还是撇开了Drools^现将这个过程中使用Drools的一些经验和心得记录下来。(一)什么时候应该使用规则引擎这实际是一个技术选型的问题。但这个问题又似乎是一个很关键的问题(一盘返乙的z冕你就知道这个问题是多么重要了、o不知大家有没有过这样的经验和体会。往往在项目开始的时候,总会遇到应该选用什么技术?是不是应该使用最新的技术?或者应该选用什

2、么技术呢(PS:现在计算机软件中的各种技术层出不穷,具有类似功能的技术很多)?不管怎么样,这些问题总会困扰着我。比如,这次的这个项目。项目要求是要在一些log文件中〈这些log文件都是很大的应用系统所产生的,但由于legacy的原因,og本身的维护和规范工作一直没有得到改善,所以想借助于一些外部应用对这些log做以分析和清洗)抽取出有用的信息。于是,第一个想到的就是,这是一个文本挖掘类的项目。但又想,要抽取有用信息,必须得建立一些规则或pattern(模式)。所以,我第一个想到了规则引擎。因为这里面要

3、建立好多规则,而这些规则可以独立于代码级别J放到一个单独的dd文件里)并对以用规则引擎去解析和执行。另一个重要的原因是,我原来用过,比较熟悉。这样,也可以节省开发时间吧。于是,好不犹豫的就开始做了Demo....但事实上,在经历了一个多星期的编码、测试后,我发现运用规则引擎实在是太笨拙了。(1)首先必须建立一些数据模型。通过这些模型来refer规则文件屮的LHS和Action。(2)还要考虑规则的conflicto如果有一些规则同时被触发,就要考虑设定规则的优先级或者是设定activiation-gro

4、up来保证在一个group屮的规则只有一个规则可以被触发。(3)对于'流'规则groupruleflow-group的使用。如果要控制在workingmemory中的规则被触发的顺序,则可以将这些规则分组。然后,通过规则建模的方式来实现。但这也添加了一定的efforto修改或者更新不大方便。所以,基于上述体会,我更认为规则引擎更适用于那些对非流程性规则匹配的应用。当然,Drools也支持对流程性规则的建模过程。但,这也许不是最好的方式。(二)Drools规则引擎的使用杂记(1)Fact的变更监听。在Dr

5、ools里,如果一个Fact通过规则而改变,则需将这种改变通知给规则引擎。这里,一般有两种方式:显式和隐式。显式…在drl文件中通过update、modify來通知;在程序中,通过Fact的引用调用modifyObject等方法来实现。隐式…通过在Javabean实现propertyListenerInterface来让引擎自动监听到属性值的变化。我更习惯于这种方式。因为,一般看来凡是在规则引擎中添加到fact都是希望引擎來帮你进行管理的。所以,那它自己看到fact的变化是种很省事的办法。也很简单,就是

6、用Javabeanproperty监听的方式。通过StatefulSession来注册。调用StatefulSession的某个instance的insert(Object,true)实现。而这个object是一个javabean0英中,要实现privatefinalPropertyChangeSupportchanges=newPropertyChangeSupport(this);publicvoidaddPropertyChangeListener(finalPropertyChangeListe

7、nerI){this.changes.addPropertyChangeListener(I);publicvoidremovePropertyChangeListener(finalPropertyChangeListenerI){this.changes.removePropertyChangeListener(I);然后在set方法中调用this.changes.firePropertyChange("temp",null,this.temp);(2)规则触发的优先级、组设置往往,在设计我们口己的

8、规则时,要考虑规则的触发条件。这不仅限于LHS的条件部分,还有规则木身被触发的有些设置等等。这里,列出一些比较常用和有效的规则优先级设置方式,以及需要注意的地方。A.通过Salience方式。此值可正可负。越大优先级越高,也会被引擎首先执行。B.通过ruleflow-group方式。实际上,使用这种方式也就是在使用建立规则流的方式。在Eclipse3.3中,Drools提供了建立规则流的插件。耍在drl的同级目录中建立rf和rfm两个文件(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。