Drools Fusion (Complex Event Processing) 是Drools对于复杂事件处理的模块, 与它功能相似的是Esper, 两者都可以提供基于时间跨度和滑动窗口的事件处理, 两者最大的区别可能就在于1. Drools开源, 不支持Distribution, 语法drl, Esper有企业版, 支持Distribution, 语法类SQL

看了一下官方文档

http://docs.jboss.org/drools/release/5.6.0.Final/drools-fusion-docs/html_single/

写了几个例子

https://github.com/zhwbqd/droolsCEP

下面介绍一下Drools Fusion中一些关键的概念

1. event和fact的区别

  1. event 一般是不变对象
  2. event 与时间强相关
  3. event 拥有可管理的生命周期(一般只会在有限的时间内匹配规则, 方便engine管理自动管理event, 将未匹配的event销毁, 并释放相关资源)
  4. 每个event都有自己的ts, 可以使用滑动时间窗口, 例如: 统计过去60min的平均值
2. drools support 两种语义的event, 时间点和区间(区别是 @duration 注解是否为0)
 
3. 注解:
    1. @role 默认fact, CEP时候 @role(event) 标识fact 是一个event
    2. @timestamp, 每个event都有一个相关的timestamp, 默认是从系统获得(即为插入session的时间), 也可以由外部赋值
    3. @duration, 每个event的持续时间, 在point-in-time event中为0, 默认值也为0, 外部可赋值
    4. @expire, 只在STREAM MODE有效, event的过期时间, @expire(300) 300s过期 @expire(1d3h45m20s29ms) 1天3小时45分钟20秒29毫秒过期
 
4. SessionClock 共有4中, 主要使用的有两种, realtime和pseudo
 
5. After, Before, During, Meet 等关键字 都是用于比较两个事件的发生时间顺序
比如before关键字的意义
3m30s <= $eventB.startTimestamp - $eventA.endTimeStamp <= 4m 
$eventA : EventA( this before[ 3m30s, 4m ] $eventB ) 

6. Sliding Window 只能跑在STREAM模式下, SlidingWindow 会立即执行运算,而不会等到事件满足要求才进行计算, event未在sliding window被匹配上的也不会被销毁, 可能有其他event依赖于它, 它会在自己的expire时间内过期

Drools Fusion (CEP) Example 和 关键概念的更多相关文章

  1. Kafka学习之(一)了解一下Kafka及关键概念和处理机制

    Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模小打的网站中所有动作流数据.优势 高吞吐量:非常普通的硬件Kafka也可以支持每秒100W的消息,即使在非常廉价的商用机器上也能做 ...

  2. Docker关键概念阐述

    要了解Docker需要对其体系结构中的几个关键概念有所了解,主要包括image.container.service.swarm.stack等. 在介绍这几个概念时,会使用到一个测试环境,这个测试环境是 ...

  3. 【NS-3学习】ns3-模拟基础:关键概念,日志,命令行参数

    前言 本篇博客先介绍在仿真过程中会使用到的一些关键概念,然后介绍便于调试仿真脚本的常用技术:日志.命令行参数. 关键概念 节点 在因特网术语中,主机(终端)是指任何一台连接到网络的计算设备.ns-3并 ...

  4. Libra教程之:Libra协议的关键概念

    文章目录 Libra协议 交易和状态 交易详解 账本状态详解 版本数据库 账户 账户地址 Proof 验证节点 存储 Libra协议 Libra协议是Libra区块链的基础,本文主要讲解Libra协议 ...

  5. DotNetty关键概念及简单示例(基于NET5)

    DotNetty关键概念及简单示例(基于NET5) 目录 DotNetty关键概念及简单示例(基于NET5) 1.DotNetty 设计的关键 1.1 核心组件 1.1.1 Channel 1.1.2 ...

  6. Elasticsearch 的一些关键概念

    我更喜欢把 Elasticsearch 作为一种 nosql 去理解,它的一些开发概念和 MongoDB 以及 Redis 没有太大的区别,不过了解 Elasticsearch 中的一些核心概念对于你 ...

  7. ElasticSearch关键概念

    Elasticsearch 添加索引 一个存储关联数据的地方 用来指向一个或者多个分片(shards)的逻辑命名空间(logical namespcase) 应用程序直接与索引通信 一个分片(shar ...

  8. Compute API 关键概念 详解

    Compute API 是 RESTful HTTP 服务,提供管理虚机的能力. 虚机可能有不同的内存大小,CPU数量,硬盘大小,能够在几分钟之内创建出来.和虚机的交互,可以通过Compute API ...

  9. .net core 关键概念

    startup       startup asp.net core 的入口,在构造函数中完成环境参数的配置. 其中Configure 方法是用来控制如何respond一个http请求的, 例如配置l ...

随机推荐

  1. OpenGL/GLSL数据传递小记(3.x)(转)

    OpenGL/GLSL规范在不断演进着,我们渐渐走进可编程管道的时代的同时,崭新的功能接口也让我们有点缭乱的感觉.本文再次从OpenGL和GLSL之间数据的传递这一点,记录和介绍基于OpenGL3.x ...

  2. hdu 4112 Break the Chocolate(乱搞题)

    题意:要把一块n*m*k的巧克力分成1*1*1的单元,有两种操作方式:1,用手掰(假设力量无穷大),每次拿起一块,掰成两块小的:2,用刀切(假设刀无限长),可以把多块摆在一起,同时切开.问两种方式各需 ...

  3. Unity3D 之IAP

    本人是一个Unity忠实爱好者,鉴于网上关于Unity的内置付费教程 少之甚少,本人就把自己倒腾过的IAp分享出来,仅供大家参考.一.搭建号沙盒环境( 详细请看:http://xiaominghimi ...

  4. 【MIG专项测试组】如何准确评测Android应用的流畅度?

    转自 腾讯Bugly 叶方正,2008年加入腾讯,就职于无线研发部[专项测试组].曾经负责多个产品的性能优化工作,积累大量的移动终端平台优化以及评测经验. 怎样获取SM值? 前文我们分析了通过测量应用 ...

  5. Hadoop自带Sort例子分析

    /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agree ...

  6. IIS 实现一个主机部署多个网站 共享80端口

    如果一个主机只是建立一个80端口的网站就有点浪费了,通过本文你就可以实现,在一个主机上建立多个80端口的站点,并通过不同的域名进行访问. 打开iis软件:控制面板-->管理工具-->Int ...

  7. xshell 连接腾讯服务器

    1.先关机, 创建秘钥,再绑定主机,下载秘钥保存下来 2. 填写好主机好和端口 3 4.导入刚才下载的文件 记住用户名是ubuntu 不是root!!

  8. 不依任何赖第三方,单纯用vue实现Tree 树形控件

    这几天接到一个需求,里面有需要做一个属性组件,找的第三方的,但是不能完全满足我的需求,有这时间,我就自己做个小轮子吧. 先看效果图(红点之前用的字体图标,是个对号,这里为了方便,用圆圈代替了选中状态, ...

  9. ios 手势返回<1>

    极其简单取巧的方法 iOS7之后是有侧滑返回手势功能的.注意,也就是说系统已经定义了一种手势,并且给这个手势已经添加了一个触发方法(重点).但是,系统的这个手势的触发条件是必须从屏幕左边缘开始滑动.我 ...

  10. 经过两个多月的攻关,终于搞定了live555多线程并稳定压测通过

    live555已经发展了十几年了,不得不钦佩作者坚持不懈的奉献和国外的开源生态环境,live555可以说是大部分的安防从业者的入门之选,尤其是在嵌入式或者Linux系统上,其应用还是蛮广泛的,主要是其 ...