drools规则引擎的使用总结43437.pdf
《drools规则引擎的使用总结43437.pdf》由会员分享,可在线阅读,更多相关《drools规则引擎的使用总结43437.pdf(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、前一段时间在开发了一个做文本分析的项目。在项目技术选型的过程中,尝试使用了 Drools规则引擎。让它来作为项目中有关模式分析和关键词匹配的任务。但后来,因为某种原因,还是撇开了 Drools。现将这个过程中使用 Drools 的一些经验和心得记录下来。(一)什么时候应该使用规则引擎 这实际是一个技术选型的问题。但这个问题又似乎是一个很关键的问题(一旦返工的话,你就知道这个问题是多么重要了)。不知大家有没有过这样的经验和体会。往往在项目开始的时候,总会遇到应该选用什么技术是不是应该使用最新的技术或者应该选用什么技术呢(PS:现在计算机软件中的各种技术层出不穷,具有类似功能的技术很多)?不管怎么
2、样,这些问题总会困扰着我。比如,这次的这个项目。项目要求是要在一些 log 文件中(这些log文件都是很大的应用系统所产生的,但由于legacy的原因,log本身的维护和规范工作一直没有得到改善,所以想借助于一些外部应用对这些 log做以分析和清洗)抽取出有用的信息。于是,第一个想到的就是,这是一个文本挖掘类的项目。但又想,要抽取有用信息,必须得建立一些规则或 pattern(模式)。所以,我第一个想到了规则引擎。因为这里面要建立好多规则,而这些规则可以独立于代码级别(放到一个单独的drl文件里)并可以用规则引擎去解析和执行。另一个重要的原因是,我原来用过,比较熟悉。这样,也可以节省开发时间吧
3、。于是,好不犹豫的就开始做了 Demo.但事实上,在经历了一个多星期的编码、测试后,我发现运用规则引擎实在是太笨拙了。(1)首先必须建立一些数据模型。通过这些模型来 refer 规则文件中的 LHS 和Action。(2)还要考虑规则的 conflict。如果有一些规则同时被触发,就要考虑设定规则的优先级或者是设定activiation-group来保证在一个group中的规则只有一个规则可以被触发。(3)对于流规则 group ruleflow-group 的使用。如果要控制在 workingmemory中的规则被触发的顺序,则可以将这些规则分组。然后,通过规则建模的方式来实现。但这也添加了
4、一定的 effort。修改或者更新不大方便。所以,基于上述体会,我更认为规则引擎更适用于那些对非流程性规则匹配的应用。当然,Drools 也支持对流程性规则的建模过程。但,这也许不是最好的方式。(二)Drools 规则引擎的使用杂记 (1)Fact 的变更监听。在 Drools 里,如果一个 Fact 通过规则而改变,则需将这种改变通知给规则引擎。这里,一般有两种方式:显式和隐式。显式-在 drl 文件中通过 update、modify 来通知;在程序中,通过 Fact的引用调用 modifyObject 等方法来实现。隐式-通过在 Java bean 实现 property Listener
5、 Interface 来让引擎自动监听到属性值的变化。我更习惯于这种方式。因为,一般看来凡是在规则引擎中添加到 fact 都是希望引擎来帮你进行管理的。所以,那它自己看到 fact 的变化是种很省事的办法。也很简单,就是用 Java bean property 监听的方式。通过 StatefulSession 来注册。调用 StatefulSession 的某个 instance 的 insert(Object,true)实现。而这个 object 是一个 java bean。其中,要实现 private final PropertyChangeSupport changes =new Pro
6、pertyChangeSupport(this);public void addPropertyChangeListener(final PropertyChangeListener l)l);public void removePropertyChangeListener(final PropertyChangeListener l)l);然后在 set 方法中调用 temp,null,);(2)规则触发的优先级、组设置 往往,在设计我们自己的规则时,要考虑规则的触发条件。这不仅限于 LHS 的条件部分,还有规则本身被触发的有些设置等等。这里,列出一些比较常用和有效的规则优先级设置方式,以及
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- drools 规则 引擎 使用 总结 43437
限制150内