文档章节

Drools学习

scl33
 scl33
发布于 2015/08/15 10:51
字数 522
阅读 586
收藏 3

最近公司需要用到drools规则引擎, 找了一些资料, 将学习点记录在此

  • Drools Fusion(CEP) 复杂事件处理

    1. 事件声明

      1. 事件声明@role(fact|event)

      2. 开始时间@timestamp(attributeName)

      3. 持续时间@duration(attributeName)

      4. 过期时间@expires(timeOffset) 仅在stream模式生效

    2. 会话时钟

         实时时钟(系统)

      KnowledgeSessionConfiguration config = KnowledgeBaseFactory.newKnowledgeSessionConfiguration(); config.setOption( ClockTypeOption.get("realtime") );

         伪时钟(程序测试)

      KnowledgeSessionConfiguration conf = KnowledgeBaseFactory.newKnowledgeSessionConfiguration(); conf.setOption( ClockTypeOption.get( "pseudo" ) ); StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession( conf, null ); SessionPseudoClock clock = session.getSessionClock();

      FactHandle handle1 = session.insert( tick1 ); clock.advanceTime( 10, TimeUnit.SECONDS ); FactHandle handle2 = session.insert( tick2 ); clock.advanceTime( 30, TimeUnit.SECONDS ); FactHandle handle3 = session.insert( tick3 );

    3. 流(stream)支持, JMS 数据库 纯文本

    4. 时间(Temporal)推理

      1. 时间运算符

        1. after            $eventA : EventA( this after[ 3m30s, 2m ] $eventB )    3m30s <= AS - BE <= 2m

        2. before        $eventA : EventA( this before[ 3m30s, 4m ] $eventB )  3m30s <= BS - AE <= 4m

        3. coincides    $eventA : EventA( this coincides[15s, 10s] $eventB )    abs( AS - BS ) <= 15s && abs( AE - BE ) <= 10s

        4. during        $eventA : EventA( this during[ 2s, 6s, 4s, 10s ] $eventB )  2s <= AS - BS <= 6s && 4s <= BE - AE <= 10s

        5. finishes        $eventA : EventA( this finishes[ 5s ] $eventB )  BS < AS && abs( $AE - BE ) <= 5s

        6. finishedby    $eventA : EventA( this finishedby[ 5s ] $eventB )  AS < BS && abs( AE - BE ) <= 5s

        7. includes        $eventA : EventA( this includes[ 2s, 6s, 4s, 10s ] $eventB )   2s <= BS - AS <= 6s && 4s <= AE - BE <= 10s

        8. meets            $eventA : EventA( this meets[ 5s ] $eventB )  abs( BS - AE) <= 5s

        9. metby            $eventA : EventA( this metby[ 5s ] $eventB )  abs( AS - BE) <= 5s

        10. overlaps         $eventA : EventA( this overlaps[ 5s, 10s ] $eventB )   AS < BS < AE < BE && 5s <= AE - BS <= 10s

        11. overlappedby    $eventA : EventA( this overlappedby[ 5s, 10s ] $eventB )  BS < AS < BE < AE && 5s <= BE - AS <= 10s

        12. starts                $eventA : EventA( this starts[ 5s ] $eventB )   abs( AS - BS ) <= 5s && AE < BE

        13. startedby          $eventA : EventA( this startedby[ 5s ] $eventB )   abs( AS - BS ) <= 5s && AE > BE

    5. 事件处理模式

      1. 云模式(无序, 无时间先后概念)

        KnowledgeBaseConfiguration config = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); config.setOption( EventProcessingOption.CLOUD );

        或配置 drools.eventProcessingMode = cloud

      2. 流模式(有序, 时间同步)

        KnowledgeBaseConfiguration config = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); config.setOption( EventProcessingOption.STREAM );

        或配置 drools.eventProcessingMode = stream

    6. 滑动窗口

      1. 两分钟内的事件  over window:time( 2m )

      2. 最近10个事件  over window:length( 10 )

    7. 知识库分割(并行计算规则而非触发动作)

      1. 启用(默认禁用)

        1. KnowledgeBaseConfiguration config = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); config.setOption( MultithreadEvaluationOption.YES );

        2. 或配置 drools.multithreadEvaluation = true|false 默认false

      2. 线程池配置

        1. KnowledgeBaseConfiguration config = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); config.setOption( MaxThreadsOption.get(5) );

        2. 或配置 drools.maxThreads = -1|1...n, 默认3, -1为不限制(危险)

    8. 内存管理(规则到期移出内存)

      1. 显式到期偏移量

        1. declare StockTick @expires( 30m ) end

      2. 推理到期偏移量

        1. rule "correlate orders" when $bo : BuyOrderEvent( $id : id ) $ae : AckEvent( id == $id, this after[0,10s] $bo ) then // do something end

  •  



© 著作权归作者所有

共有 人打赏支持
scl33
粉丝 10
博文 2
码字总数 891
作品 0
普陀
程序员
Drools 6.2.0.Beta1 发布

Drools 6.2.0.Beta1 发布,此版本引入了一个新的 Drools Execution Server。更多内容请看这里。 Drools 是用 Java 语言编写的开放源码规则引擎,使用 Rete 算法对所编写的规则求值。Drools ...

叶秀兰
2014/08/14
1K
1
Drools 6.4.0.Final 发布,Java 业务规则引擎

Drools 6.4.0.Final 发布了,Drools 是用 Java 语言编写的开放源码规则引擎,使用 Rete 算法对所编写的规则求值。Drools 允许使用声明方式表达业务逻辑。可以使用非 XML 的本地语言编写规则,...

oschina
2016/04/19
2.9K
5
【PDF分享】Drools5 规则引擎开发教程.pdf

Drools 是一款基于Java 的开源规则引擎,所以在使用Drools 之前需要在开发机器上安装好 JDK 环境,Drools5 要求的JDK 版本要在1.5 或以上。 大多数软件学习的第一步就是搭建这个软件的开发环...

鉴客
2010/09/12
12.6K
37
Java 业务规则引擎--Drools

Drools 是用 Java 语言编写的开放源码规则引擎,使用 Rete 算法对所编写的规则求值。Drools 允许使用声明方式表达业务逻辑。可以使用非 XML 的本地语言编写规则,从而便于学习和理解。并且,...

匿名
2008/10/13
38.3K
6
Drools 6.3.0.Final 发布,Java 业务规则引擎

Drools 6.3.0.Final 发布,此版本主要是平台的扩展和改进。 相关内容: Downloads Documentation Release Notes Drools 6.3 是跟 jBPM 一起发布的,主要改进: 实时验证和 Decision 表认证 ...

叶秀兰
2015/09/29
3K
4

没有更多内容

加载失败,请刷新页面

加载更多

Java中的移位运算符

国庆给自己放了个小长期二十几天,回来继续更新专栏 上一篇文章我们说了Java里的二进制,知道了计算机是以0和1来处理数据的,在阅读源码的过程中,经常会看到这些符号<< ,>>,>>>,这些符号...

SuShine
32分钟前
2
0
linux版QQ

下载地址在这 http://yun.tzmm.com.cn/index.php/s/XRbfi6aOIjv5gwj Appimage包不用做什么别的处理,安装啥的都不需要。。找到文件所在目录,终端中修改一下文件的权限 chmod 777 QQ-2017112...

悲催的古灵武士
38分钟前
1
0
咕泡-MyBatis 实用篇作业

1. Mapper在spring管理下其实是单例,为什么可以是一个单例? 首先,mapper 内部不包含 成员字段,无状态单例是安全的 另外,一直存在不用每次调用都new 一个新实例 2. MyBatis在Spring集成下...

职业搬砖20年
41分钟前
2
0
MQTT协议的初浅认识之连接建立

MQTT百科 MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布...

亚林瓜子
58分钟前
1
0
OpenStack部署都有哪些方式

对于每一个刚接触到OpenStack的新人而言,安装无疑是最困难的,同时这也客观上提高了大家学习OpenStack云计算的技术门槛。想一想,自己3年前网上偶然接触到OpenStack时,一头茫然,手动搭建一...

tututu_jiang
58分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部