- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Drools Fusion(CEP)定义及使用方法讲解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
从 Drools 统一行为建模平台的视野看,Drools Fusion 是负责启用事件处理行 为的一个模块.
定义 。
支持复杂事件处理,是比简单的理解事件是什么要更多得多,cep场景具有几个共同而明显的特点:
用fusion,要把插入drools的数据声明为事件.
drools处理数据有两种方式,云模式和流模式,默认是云模式,用fusion,需要设置为流模式。流模式,插入的数据叫事件,有时间顺序,云模式没有, 。
流(stream)支持 。
大部分 CEP 用例必须处理事件流(stream).
流的特性:
声明流模式 。
在kmodule.xml 中添加配置 eventProcessingMode=“stream” 为流模式 。
事件声明 。
用fusion,要把插入drools的数据声明为事件,声明事件使用@role标签 。
@role 。
把@role元数据标签指派给该事实类行 。
例如:
Person 为java bean 也就是一个事实类型 。
Person 的属性如下:
@timestamp 。
每一个事件都要有一个关联的时间戳指派给它。默认时,一个给定事件的时间戳是在事件被插入到工作内存时,从 Session Clock 读取,并且分配给该事件。有些时候,事件用时间戳作为它自己的一个属性。在这情况下,用户可以用@timestamp 标记用户属性为时间戳 。
例如:用Person的 createTime 属性为时间戳 。
@expires 。
重要:这个标签只有引擎运行在流(STREAM)模式之下才会被考虑. 。
该标签显示定义 一个事件在什么时候应该到期,事件到期,事件可能不再匹配和激活任何规则时.
使用如下 。
@expires( 1h35m ) 。
在person 例子中假设过期时间为20S 。
滑动时间窗口 。
滑动时间窗口允许用户编写规则,其将仅匹配在最近的 X 时间单元内发生的事件 。
例如:只匹配最近3秒内,年龄小于25的人 。
调用代码如下:
规则代码如下:
由于Thread.sleep(4000);所以最近3秒内只有李大嘴一条记录所以 。
结果如下:
streamName:boy name:李大嘴 age:16 desc:少年 总执行了1条规则------------------------------ 。
范例2 10S 内的平均年龄 。
滑动长度窗口 。
和滑动时间窗口很类似,其将仅匹配最近几次发生的事件,用法如图,只匹配最近1次发生的事件.
例如年领大于49岁的最近两条记录 。
调用代码:
规则代码 。
只匹配符合规则的最近的两条记录,所以舍弃“白展堂记录” 。
执行结果 。
streamName:boy name:李大嘴 age:56 desc:老年 streamName:boy name:佟湘玉 age:57 desc:老年 总执行了2条规则------------------------------ 。
本文所有测试例子的pom 依赖 。
本文所有测试例子的kmodule.xml 配置 。
其他关键字: After, Before, During, Meet 等关键字 都是用于比较两个事件的发生时间顺序,用法待以后再叙 。
总结 。
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我的支持.
最后此篇关于Drools Fusion(CEP)定义及使用方法讲解的文章就讲到这里了,如果你想了解更多关于Drools Fusion(CEP)定义及使用方法讲解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
在complier.h中有一个宏定义如下: # define __cond_lock(x,c) ((c) ? ({ __acquire(x); 1; }) : 0) 但是这里我有一个问题,就是哪里
curl_easy_setopt 的选项在哪里?定义?我试图寻找 CURLOPT_VERBOSE 和其他一些整数值,但这些似乎没有在 curl.h 中明确定义。 最佳答案 第 792 行: #ifde
我确实有一个如下所示的类(class): //.h file class __declspec(dllimport) MyClass { public: //stuff pri
作者: zhuwenzhuang, 2024.05.08. 阅读前假设读者熟悉数据库使用,了解 SQL 的语法和关系算子的大概含义, 能通过 EXPLAIN 命令查看数据库执行计划. 0 前言
我似乎无法找到是否可以声明一个 header 对象以便在响应 header 中重用它,有一些示例定义了响应模式的对象,但它不会转置为响应 header 。我只设法制作了一个可重用的响应对象,如下所示:
css 选择器 * + * 实际上是什么意思?当您执行检查元素时,您可以在谷歌浏览器的控制台中看到它。在我看来,这似乎是对 "Every second child"应用一种风格,但仍然想确定。谁能帮我
我试图弄清楚基本的IO Haskell 函数是定义好的,所以我使用了this reference我到了putChar函数定义: putChar :: Char -> IO () putChar
我得到了一个自动生成的文件,该文件定义了程序集属性,我正在尝试理解内容。 [assembly: global::System.Runtime.Versioning.TargetFrameworkAtt
This文档演示了如何检查变量是否先前已在 gnuplot 脚本中定义。 文档中的示例: a = 10 if (exists("a")) print "a is defined" if (!exist
好吧,这是一个相当基本的问题:我正在关注 SICP 视频,我对 define、let 和 之间的区别有点困惑设置!. 1) 根据 Sussman 在视频中的说法,define 只允许为变量附加一个值一
我一直在尝试定义一个包含只能具有以下三个值之一的字段的 XSD: 绿色 红色 蓝色 本质上,我想在架构级别定义严格的枚举。 我的第一次尝试似乎是错误的,我不确定修复它的“正确”方法。
有人可以定义“POCO”到底是什么意思吗?我越来越频繁地遇到这个术语,我想知道它是否仅与普通类有关还是意味着更多? 最佳答案 “普通旧式 C# 对象” 只是一个普通的类,没有描述基础结构问题或域对象不
在我经常看到的一些django模型中 myfield = models.CharField(_('myfield')) class_name = models.CharField(_('Type'),
每当 BOOL 数据类型不容易预定义时,我都会使用以下定义进行 boolean 运算, typedef unsigned char BOOL; (由于内存使用)。 我意识到出于性能原因,使用本地总线宽
l_ABC_BEANVector = utilRemote.fnGetVector("ABC_COVBEANVector"); 编码的含义是什么?任何帮助,我真的很感激。谢谢 最佳答案 唯一可以肯定地
我正在使用 javacc 开发一个项目,我遇到问题并需要一些帮助,我的文件中有这样的内容: STRING COPYRIGHT (C) 2003, 2004 SYNOPSYS, INC.; 我为单词 S
我想弄清楚基本的 IO定义了 Haskell 函数,所以我使用了 this reference然后我到了 putChar函数定义: putChar :: Char -> IO () putCha
我在具体类中使用 @property 定义 getter 时遇到问题。这是Python代码: from abc import ABCMeta, abstractproperty class abstr
我正在为大学用 C 语言编写一个小游戏,但我陷入了困境。我(在头文件中)有这个结构: typedef struct{ game_element field[MAX_ROWS][MAX_COLU
我一直在 .l 文件中创建标记定义。由于数据集数量庞大,它变得有点乏味。有没有办法读取文件中的所有单词,例如包含所有名词的 noun.txt 并给所有名词一个标记。 基本上,我想自动化这部分: %%
我是一名优秀的程序员,十分优秀!