文档章节

Drools学习

scl33
 scl33
发布于 2015/08/15 10:51
字数 522
阅读 596
收藏 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/17
2K
1
Java 业务规则引擎--Drools

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

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

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

oschina
2016/04/19
3.1K
4
Drools 6.3.0.Final 发布,Java 业务规则引擎

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

叶秀兰
2015/09/29
3.2K
4
Drools 6.2.0.Final 发布,Java 业务规则引擎

Drools 6.2.0.Final 发布,此版本主要关注可用性和易用性方面的改进:Workbench UI;支持社会活动和插件管理;规则方面全新的 Execution Server。 相关链接: News & Noteworthy Downloads ...

叶秀兰
2015/03/07
5.4K
1

没有更多内容

加载失败,请刷新页面

加载更多

Kubernetes 1.13.0的快速升级

Kubernetes 1.13.0已经正式发布,快速升级(含国内镜像快速下载链接)包括升级kubeadm/kubectl/kubelet版本、拉取镜像、升级Kubernetes集群三个主要步骤。注意Kubernetes 1.13.0版本暂时不支...

openthings
17分钟前
0
0
go的卸载和环境变量配个人.bashrc

若是用安装包直接解压 http://download.csdn.net/detail/u010026901/7592581 cd /usr/local tar -zxvf go1.1.2.linux-386.tar.gz(先把安装包移到这个目录) 3.安装 $ cd go/src,$ ./all.b......

dragon_tech
22分钟前
0
0
区块链安全 - 以太坊短地址攻击

1 基础知识 EVM虚拟机在解析合约的字节码时,依赖的是ABI的定义,从而去识别各个字段位于字节码的什么地方。关于ABI,可以阅读这个文档: https://github.com/ethereum/wiki/wiki/Ethereum-C...

HiBlock
33分钟前
1
0
自定义函数及内部函数

变量的作用域 局部变量 global $Global及其他超全局数组 静态变量 仅初始化赋值 保留于内存直到response才销毁 global和static变量的区别 global:局部变量全局话 static:定义静态局部变量 函...

关元
34分钟前
1
0

中国龙-扬科
46分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部