分享技术,品味人生

  1. Jboss rules规则引擎 Drools 6.4.0 Final 教程(4)

    11.1.Drools 6.0的重要变化

    2019/02/14

  2. Jboss rules规则引擎 Drools 6.4.0 Final 教程(4)

    4.1.概观

    2019/02/14

  3. Jboss rules规则引擎 Drools 6.4.0 Final 教程(2)

    1-Drools语法详解

    2019/02/14

  4. Jboss rules规则引擎 Drools 6.4.0 Final 教程(1)

    前言

    2019/02/14

  5. Drools规则引擎(十)

    1、例子

    2019/02/14

  6. Drools规则引擎(九)-KIE之基础API详解

    在有些术语使用的时候,我有时候会用KIE项目、KIE引擎或者Drools项目、Drools引擎,大家应该理解KIE是Drools等项目的一个统称,所以在大多数情况下KIE或者特指Drools都是差不多的。

    2019/02/14

  7. Drools规则引擎的使用总结

    前一段时间在开发了一个做文本分析的项目。在项目技术选型的过程中,尝试使用了Drools规则引擎。让它来作为项目中有关模式分析和关键词匹配的任务。但后来,因为某种原因,还是撇开了Drools。现将这个过程中使用Drools的一些经验和心得记录下来。 (一)什么时候应该使用规则引擎 这实际是一个技术选型的问题。但这个问题又似乎是一个很关键的问题(一旦返工的话,你就知道这个问题是多么重要了)。不知大家有没有过这样的经验和体会。往往在项目开始的时候,总会遇到应该选用什么技术?是不是应该使用最新的技术?或者应该选用什么技术呢(PS:现在计算机软件中的各种技术层出不穷,具有类似功能的技术很多)? 不管怎么样,这些问题总会困扰着我。比如,这次的这个项目。项目要求是要在一些log文件中(这些log文件都是很大的应用系统所产生的,但由于legacy的原因,log本身的维护和规范工作一直没有得到改善,所以想借助于一些外部应用对这些log做以分析和清洗)抽取出有用的信息。 于是,第一个想到的就是,这是一个文本挖掘类的项目。但又想,要抽取有用信息,必须得建立一些规则或pattern(模式)。所以,我第一个想到了规则引擎。因为这里面要建立好多规则,而这些规则可以独立于代码级别(放到一个单独的drl文件里)并可以用规则引擎去解析和执行。另一个重要的原因是,我原来用过,比较熟悉。这样,也可以节省开发时间吧。于是,好不犹豫的就开始做了Demo…. 但事实上,在经历了一个多星期的编码、测试后,我发现运用规则引擎实在是太笨拙了。 (1)首先必须建立一些数据模型。通过这些模型来refer规则文件中的LHS和Action。 (2)还要考虑规则的conflict。如果有一些规则同时被触发,就要考虑设定规则的优先级或者是设定activiation-group来保证在一个group中的规则只有一个规则可以被触发。 (3)对于‘流’规则group ruleflow-group的使用。如果要控制在workingmemory中的规则被触发的顺序,则可以将这些规则分组。然后,通过规则建模的方式来实现。但这也添加了一定的effort。修改或者更新不大方便。 所以,基于上述体会,我更认为规则引擎更适用于那些对非流程性规则匹配的应用。当然,Drools也支持对流程性规则的建模过程。但,这也许不是最好的方式。 (二)Drools规则引擎的使用杂记 (1)Fact 的变更监听。在Drools里,如果一个Fact通过规则而改变,则需将这种改变通知给规则引擎。这里,一般有两种方式:显式和隐式。 显式—在drl文件中通过 update、modify来通知;在程序中,通过Fact的引用调用modifyObject等方法来实现。 隐式—通过在java bean实现property Listener Interface来让引擎自动监听到属性值的变化。我更习惯于这种方式。因为,一般看来凡是在规则引擎中添加到fact都是希望引擎来帮你进行管理的。 所以,那它自己看到fact的变化是种很省事的办法。也很简单,就是用java bean property 监听的方式。 通过StatefulSession来注册。 调用StatefulSession的某个instance 的insert(Object,true)实现。而这个object是一个java bean。其中,要实现 private final PropertyChangeSupport changes = new PropertyChangeSupport( this );

    2019/02/14

  8. Drools6新特性

    其实Drools6有挺多优秀的入门学习资料了,按理说没必要在重复别人的内容了。不过由于项目的需要,需要对Drools有个透彻的了解甚至说现有的中文资料都没法支持我把需求做出来,所以还是把基础打扎实把。 所以什么是规则引擎,什么是Drools,就都先参考下以下资料吧。

    2019/02/14

  9. Spring Boot 知识清单

    知识点 一、抛砖引玉:探索Spring IoC容器 1.1、Spring IoC容器 1.2、Spring容器扩展机制 二、夯实基础:JavaConfig与常见Annotation

    2019/02/13

  10. MongoDB进阶之路:不仅仅是技术研究,还有优化和最佳实践

    摘要: MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

    2019/02/13

生活就是故事,故事就是生活

一个架构师的自我修养

工欲善其事,必先利其器

智能技术落地的初探


--> -->