文档章节

Drools学习

scl33
 scl33
发布于 2015/08/15 10:51
字数 522
阅读 575
收藏 3
点赞 0
评论 0

最近公司需要用到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.4.0.Final 发布,Java 业务规则引擎

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

oschina
2016/04/19
2.9K
5
Drools 6.2.0.Beta1 发布

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

叶秀兰
2014/08/14
1K
1
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
【PDF分享】Drools5 规则引擎开发教程.pdf

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

鉴客
2010/09/12
12.6K
37
Drools 6.2.0.Final 发布,Java 业务规则引擎

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

叶秀兰
2015/03/07
5.3K
1
Java 业务规则引擎--Drools

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

匿名
2008/10/13
38.3K
6
Drools & jBPM 6.0 Alpha 即将发布

jBpm 是一个灵活可扩展的工作流管理系统。作为 jBpm运行时server输入的业务流程使用简单强大的语言表达并打包在流程档案中。jBmp将工作流应用开发的便利性和杰出的企业应用集成(EAI) 能力结...

oschina
2012/12/16
3.6K
4
Drools 6.5.0 发布,Java 业务规则引擎

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

王练
2016/10/28
5.7K
2
Drools7用于那些方面

drools是一个规则引擎,不过目前只是初级的学习了drools,不知道在生活中具体的应用那些方面,用于什么具体的业务,希望有人具体具体具体的回答!,不要只是说大概的方面了,谢谢大家了...

木九天
2017/12/29
57
1
SLife 1.0 加入集群的配置和 Docker 化部署配置

SLife 1.0 新增了以下功能: 1、集群配置,session共享 项目加入了 spring-boot-starter-data-redis 用于共享各个集群节点的session,session存储在redis中,所以开发者们需要去安装一台red...

jamen
01/03
626
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

32.filter表案例 nat表应用 (iptables)

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 10.15 iptables filter表案例: ~1. 写一个具体的iptables小案例,需求是把80端口、22端口、21 端口放行。但是,22端口我...

王鑫linux
今天
0
0
shell中的函数&shell中的数组&告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析

影夜Linux
今天
0
0
Linux网络基础、Linux防火墙

Linux网络基础 ip addr 命令 :查看网口信息 ifconfig命令:查看网口信息,要比ip addr更明了一些 centos 7默认没安装ifconfig命令,可以使用yum install -y net-tools命令来安装。 ifconfig...

李超小牛子
今天
1
0
[机器学习]回归--Decision Tree Regression

CART决策树又称分类回归树,当数据集的因变量为连续性数值时,该树算法就是一个回归树,可以用叶节点观察的均值作为预测值;当数据集的因变量为离散型数值时,该树算法就是一个分类树,可以很...

wangxuwei
昨天
1
0
Redis做分布式无锁CAS的问题

因为Redis本身是单线程的,具备原子性,所以可以用来做分布式无锁的操作,但会有一点小问题。 public interface OrderService { public String getOrderNo();} public class OrderRe...

算法之名
昨天
9
0
143. Reorder List - LeetCode

Question 143. Reorder List Solution 题目大意:给一个链表,将这个列表分成前后两部分,后半部分反转,再将这两分链表的节点交替连接成一个新的链表 思路 :先将链表分成前后两部分,将后部...

yysue
昨天
1
0
数据结构与算法1

第一个代码,描述一个被称为BankAccount的类,该类模拟了银行中的账户操作。程序建立了一个开户金额,显示金额,存款,取款并显示余额。 主要的知识点联系为类的含义,构造函数,公有和私有。...

沉迷于编程的小菜菜
昨天
1
0
从为什么别的队伍总比你的快说起

在机场候检排队的时候,大多数情况下,别的队伍都要比自己所在的队伍快,并常常懊悔当初怎么没去那个队。 其实,最快的队伍只能有一个,而排队之前并不知道那个队快。所以,如果有六个队伍你...

我是菜鸟我骄傲
昨天
1
0
分布式事务常见的解决方案

随着互联网的发展,越来越多的多服务相互之间的调用,这时候就产生了一个问题,在单项目情况下很容易实现的事务控制(通过数据库的acid控制),变得不那么容易。 这时候就产生了多种方案: ...

小海bug
昨天
3
0
python从零学——scrapy初体验

python从零学——scrapy初体验 近日因为一些事情,需要从网上爬取一些东西,故而想通过使用爬虫来顺便学习下强大的python。现将一些学习中遇到的问题记录下来,以便日后查询 1. 开发环境的准...

咾咔叽
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部