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. PAT 1001. A+B Format(水题)

    #include<cstdio> #include<cstring> using namespace std; char s[10]; int main() { int a,b ...

  2. hdu 1159(Common Subsequence)简单dp,求出最大的公共的字符数

    Common Subsequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  3. keil 中的一些设置

    option for target 'target 1' 中: 第3选项output: select folder for objects :此选项是选择编译时产生的以希望文件,点击选择路径,不然这些 ...

  4. iOS 控制器title和tabbar的title设置问题

    iOS 设置tabbarItem的title的是通过 controller.tabBarItem.title = @"标题" iOS 设置导航栏控制器title通过 contoll ...

  5. killall 命令

    Linux系统中的killall命令用于杀死指定名字的进程(kill processes by name).我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在 ...

  6. Linux 安装中文man手册

    Centos 安装中文man 虽然在CentOS操作系统中具有多语言包,但其man手册是英文的,对于新手来说能够使用中文man手册将加快学习速度. .首先需要确认的是有没有安装中文支持,如果没有请安装 ...

  7. VMWare Workstation和VMWare vSphere(转)

    VMware workstation一定是安装在window操作系统上的. VMware vSphere可以直接安装在x86机器上,使这台机器完全虚拟化. VMware vSphere主要是企业级用户 ...

  8. 线段树专题—HDU1698 Just a Hook

    题意:t组数据,给一个n.m表示n长度的钩和m次操作.初始钩子的每单位长度的价值为1,接下来输入 x,y,k 的操作把钩子[x,y]区间的价值替换为k,求m次操作后钩子的价值为多少 分析:成段替换.最 ...

  9. [转]Unity Shader 学习总结

    1.先来一段单张纹理贴图的shader示例代码: // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClip ...

  10. maven;cargo;仓库

    [说明]又到晚上九点了,不得不加快进度,首先就是日报.今天上午在服务器搭建maven,下午完成了一个maven web项目,晚上改错找maven配置问题(因为想装jetty和cargo) 一:今日完成 ...