Drools用户手册翻译——第四章 Drools规则引擎(十四)复杂事件处理(CEP)滑动窗口和内存管理

news2025/6/30 0:50:02

甩锅声明:本人英语一般,翻译只是为了做个笔记,所以有翻译错误的地方,错就错了,如果你想给我纠正,就给我留言,我会改过来,如果懒得理我,就直接划过即可。 

目录

时间或长度的滑动窗口

为规则数据声明滑动窗口

事件的内存管理


时间或长度的滑动窗口

在流模式中,Drools可从指定的时间或长度窗口处理事件。时间滑动窗口是指定处理事件的时间长度,长度的滑动窗口是指指定处理事件的数量。当你在DRL规则或者java应用中声明滑动窗口,Drools就会在编译时识别并创建合适的内部数据结构,以便用该滑动窗口中的数据去评估规则。

例如,下面的DRL规则片段指明Drools只处理最近2分钟的(时间滑动窗口)StockPoint,或者只处理10个StockPoint(长度滑动窗口)

处理最近2分钟的库存点(时间滑动窗口)

StockPoint() over window:time(2m)

处理最近的10个库存点(长度滑动窗口)

StockPoint() over window:length(10)

为规则数据声明滑动窗口

你可以为事件声明一个时间滑动窗口或者长度滑动窗口,以便让Drools只使用窗口里面的数据去评估规则。

过程

在DRL规则文件中,为插入的事实指定 over window:<time_or_length>(<value>)

例如,下面的两个根据平均温度来激活火警警报的DRL规则文件。第一个规则使用事件滑动窗口,计算最近10分钟的平均温度,而第二个规则文件使用长度滑动窗口,计算最近100个温度读数的平均值。

滑动时间窗口内的平均温度

rule "Sound the alarm if temperature rises above threshold"
when
  TemperatureThreshold($max : max)
  Number(doubleValue > $max) from accumulate(
    SensorReading($temp : temperature) over window:time(10m),
    average($temp))
then
  // Sound the alarm.
end

滑动长度窗口内的平均温度

rule "Sound the alarm if temperature rises above threshold"
when
  TemperatureThreshold($max : max)
  Number(doubleValue > $max) from accumulate(
    SensorReading($temp : temperature) over window:length(100),
    average($temp))
then
  // Sound the alarm.
end

Drools对于任何超过10分钟或者不是最近的100个读数的SensorReading事件,都不会处理,并且会不断的实时的重复计算按照事件和长度窗口的设置。

Drools不会自动的从会话中移除过期事件,因为其他没有设置滑动窗口的声明可能会依赖那些过期事件。Drools会在会话中存储事件,直到事件过期,这个过期是指在规则中显式声明的过期,或者是通过kie库的数据推断的隐式原因的过期。

事件的内存管理

在流模式中,Drools使用自动的内存管理去维护存储在会话中的事件。Drools可以从会话中回收任何不再能够与规则匹配的事件,根据事件的时间约束,同时释放被回收事件所持有的一切资源。

Drools使用显示或者推断过期去回收过时过时的事件:

  • 显示过期:drools引擎会移除那些在规则文件中声明了@expores标签的过期事件

DRL规则用显示过期的片段

declare StockPoint
  @expires( 30m )
end

这个例子设置任意StockPoint事件会在30分钟后过期,同时如果没有其他规则使用这个事件,会被会话移除。

  • 推断过期:Drools可以通过分析规则中的时间约束隐式地计算出给出事件的过期偏移量:

使用事件约束的DRL文件

rule "Correlate orders"
when
  $bo : BuyOrder($id : id)
  $ae : AckOrder(id == $id, this after[0,10s] $bo)
then
  // Perform an action.
end

对于这个例子,Drools会自动计算,每当BuyOrder事件发生,drools需要至少存储该事件10s,用来等待AckOrder事件发生。在10s之后,Drools推断过期并从会话中移除事件。AckOrder事件只可以匹配已经存在的BuyOrder事件,所以如果没有匹配发生,Drools会推断过期,并立即删除事件。

同理可应用于时间滑动窗口window:time(),但是长度滑动窗口window:length()不计算他的过期。

Drools分析全部的Kie库,用来为每一个事件类型找到偏移,用来确认没有其他的规则使用这个准备移除的事件。每当隐式过期和显式过期冲突时,Drools会使用两者中更长的时间去存储事件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/858500.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

详解配置交换机多生成树MSTP+VRRP 的典型组网

详解配置交换机多生成树MSTPVRRP 的典型组网 组网&#xff1a; 1. 这是一个由三台交换机组成的倒三角型二层交换网络&#xff1b;网络中有4个VLAN&#xff1a;10、20、30、40&#xff1b;接口编号如图所示&#xff1b;SW3为接入层交换机&#xff0c;SW1、SW2为汇聚层交换机&am…

论文阅读 - Neutral bots probe political bias on social media

论文链接&#xff1a;Neutral bots probe political bias on social media | EndNote Click 试图遏制滥用行为和错误信息的社交媒体平台被指责存在政治偏见。我们部署中立的社交机器人&#xff0c;它们开始关注 Twitter 上的不同新闻源&#xff0c;并跟踪它们以探究平台机制与用…

linux自动程序

嵌入式linux下有软件需要自启动&#xff0c;只需要在/etc/init.d/rcS末尾添加所要启动的程序即可&#xff0c;开机就会自动运行 vi /etc/init.d/rcS在文件末尾添加 例&#xff1a;

Unity-Linux部署WebGL项目MIME类型添加

在以往的文章中有提到过使用IIS部署WebGL添加MIME类型使WebGL项目在浏览器中能够正常加载&#xff0c;那么如果咱们做的是商业项目&#xff0c;往往是需要部署在学校或者云服务器上面的&#xff0c;大部分情况下如果项目有接口或者后台管理系统&#xff0c;后台基本都会使用Lin…

对p-n结/AlGaN/GaN HEMTs中n-GaN掺杂浓度对栅极可靠性的影响

目录 第35届功率半导体器件与集成电路国际研讨会论文集2023年5月28日至6月1日&#xff0c;中国香港南方科技大学电气电子工程系&#xff0c;深圳标题&#xff1a;Impacts of n-GaN Doping Concentration on Gate Reliability of p-n Junction/AlGaN/GaN HEMTs摘要信息解释研究了…

MySQL基本语法总结

创建数据库 create database 数据库名&#xff1b; -- 字符集要看mysql 版本&#xff0c; 5.7 Latin&#xff0c; 8.0 utf8 create database 数据库名 character set ‘utf8’&#xff1b;-- 指定数据库的字符集 create database IF NOT EXISTS 数据库名 character se…

k8s-----集群调度

目录 一&#xff1a;调度约束 二&#xff1a;Pod 启动创建过程 三&#xff1a;k8s调度过程 1、Predicate 有一系列的常见的算法 2、常见优先级选项 3、指定调度节点 &#xff08;1&#xff09;nodeName指定 &#xff08;2&#xff09;nodeSelector指定 四&#xff1a;亲和…

数字工厂管理系统能给企业管理者带来哪些好处

数字工厂管理系统是现代企业管理的神器&#xff0c;它能够以数字化方式管理企业的生产过程&#xff0c;实现生产过程的自动化、智能化和可视化。数字工厂管理系统解决方案不仅提高了生产效率&#xff0c;还给企业管理者带来了很多好处。下面就让我们来详细了解一下。 首先&…

【Android】MVC,MVP,MVVM三种架构模式的区别

MVC 传统的代码架构模式&#xff0c;仅仅是对代码进行了分层&#xff0c;其中的C代表Controller&#xff0c;控制的意思 将代码划分为数据层&#xff0c;视图层&#xff0c;控制层&#xff0c;三层之间可以任意交互 MVP MVP是在MVC基础上改进而来的一种架构&#xff0c;其中的…

2023年10款常用的Mac工具合集

Typora Typora 是一款由 Abner Lee 开发的轻量级 Markdown 编辑器&#xff0c;与其他 Markdown 编辑器不同的是&#xff0c;Typora 没有采用源代码和预览双栏显示的方式&#xff0c;而是采用所见即所得的编辑方式&#xff0c;实现了即时预览的功能&#xff0c;但也可切换至源代…

帆软设计器:报表超链接“删除”后仍会打开链接的问题

这个问题是在使用帆软报表设计器&#xff08;版本 10.0&#xff09;发现的。当直接在决策报表的某个报表下点击 “特效-超级链接” 、并去掉了里面的超链接之后&#xff0c;刷新报表还是鼠标悬浮上去就是一个链接的样子。 找到报表所在单元格 “单元格元素” 的“特效” 配置&a…

【操作系统】操作系统知识点总结(秋招篇)

文章目录 前言操作系统主要做了哪些工作&#xff1f;进程 线程 协程之间的区别进程的组成部分介绍一下进程的PCB讲一下进程的五态 以及它们的状态转移用户态和内核态是什么&#xff1f;进程在用户态和内核态之间是如何切换的讲一下进程之间的通信方式讲一下进程调度的三个层次介…

广州华锐互动:VR3D课程在线教育平台为职业院校提供沉浸式的虚拟现实学习体验

随着科技的飞速发展&#xff0c;虚拟现实(VR)和增强现实(AR)技术已经逐渐渗透到我们生活的各个领域。其中&#xff0c;VR3D课程在线教育平台作为一种新兴的教育方式&#xff0c;正在逐渐改变我们的学习方式和体验。本文将详细介绍VR3D课程在线教育平台的应用前景及特点。 VR3D课…

matplotlib 笔记 plt.grid

用于添加网格线 主要参数 visible 布尔值&#xff0c;True表示画网格 which表示要显示的刻度线类型&#xff0c;可以是 major&#xff08;主刻度&#xff09;或 minor&#xff08;次刻度&#xff09;&#xff0c;或者同时显示&#xff08;both&#xff09;alpha 透明度 …

【Linux的开胃小菜】常用的RPM软件包与YUM仓库包管理器使用

一、系统初始化进程 systemd与System V init的区别以及作用&#xff1a; System V init运行级别systemd目标名称systemd目标作用0poweroff.target关机1rescue.target单用户模式2multi-user.target多用户的文本界面3multi-user.target多用户的文本界面4multi-user.target多用户…

数字万用表测量基础知识--使用DMM测量电阻

概览 DMM&#xff08;即数字万用表&#xff09;是一种电气测试和测量仪器&#xff0c;可测量直流和交流信号的电压、电流和电阻。本文介绍如何正确使用和理解数字万用表(DMM)。 使用DMM测量电阻 电阻测量通常用于测量电阻器或其他组件的电阻&#xff0c;如传感器或扬声器。电…

【腾讯云 Cloud Studio 实战训练营】基于Cloud Studio构建React完成点餐H5页面

前言 【腾讯云 Cloud Studio 实战训练营】基于Cloud Studio 构建React完成点餐H5页面一、Cloud Studio介绍1.1 Cloud Studio 是什么1.2 相关链接1.3 登录注册 二、实战练习2.1 初始化工作空间2.2 开发一个简版的点餐系统页面1. 安装 antd-mobile2. 安装 less 和 less-loader3. …

新能源汽车充电桩控制主板有哪些特点

你是否好奇&#xff0c;新能源汽车充电桩控制主板是什么样子的?它有哪些特点?接下来&#xff0c;我们将为您揭秘。 控制主板是充电桩的大脑&#xff0c;它决定了充电桩的性能和稳定性。睿讯微充电桩主板拥有良好的整机抗干扰能力&#xff0c;能够有效地防止外部信号和电磁波的…

QT压缩解压文件

文章目录 前言一、下载Quazip二、编译Quazip1.使用vs2019打开quazip.sln2.使用Qt VS Tools打开外层的.pro工程3.编译 三、工程使用1.配置头文件路径2.配置静态库lib目录3.添加库4.动态库dll放到.exe同级目录下5.使用 前言 Qt工程中需要用到zip压缩解压功能&#xff0c;网上搜索…

【论文阅读】Deep Instance Segmentation With Automotive Radar Detection Points

基于汽车雷达检测点的深度实例分割 一个区别&#xff1a; automotive radar 汽车雷达 &#xff1a; 分辨率低&#xff0c;点云稀疏&#xff0c;语义上模糊&#xff0c;不适合直接使用用于密集LiDAR点开发的方法 &#xff1b; 返回的物体图像不如LIDAR精确&#xff0c;可以…