85.9. 滑动时间窗或长度


在流模式中,决策引擎可以从指定滑动时间或长度窗口处理事件。滑动时间窗是可以处理事件的指定时间段。滑动长度窗口是可以处理的指定数量事件。当您在 DRL 规则或 Java 应用程序中声明一个滑动窗口时,在决策引擎编译时,标识并创建正确的内部结构,以仅使用滑动窗口来评估该规则。

例如,以下 DRL 规则片断指示决策引擎只处理过去 2 分钟(指定时间窗)或只处理最后 10 个库存点(光纤通道窗口)中的库存点:

来自最后 2 分钟的进程库存点(指定时间窗)

StockPoint() over window:time(2m)
Copy to Clipboard Toggle word wrap

处理最后 10 个库存点(计算长度窗口)

StockPoint() over window:length(10)
Copy to Clipboard Toggle word wrap

85.9.1. 为规则数据声明滑动窗口

您可以为事件声明一个时间窗口(时间流)或长度(发生次数),以便决策引擎仅使用该窗口中的数据来评估规则。

流程

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

例如,下面两个 DRL 规则会基于平均温度激活触发警报。但是,第一条规则使用一个滑动时间窗来计算最近 10 分钟的平均时间,第二个规则使用了滑动长度窗口来计算过去一百个温度读数的平均值。

平均温度超过滑动时间窗

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
Copy to Clipboard Toggle word wrap

平均温度超过滑动长度窗口

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
Copy to Clipboard Toggle word wrap

决策引擎丢弃任何超过 10 分钟以上的 SensorReading 事件,或者并非最后一百阅读的一部分,继续重新计算平均值,或实时读取"隐藏"转发。

决策引擎不会自动从 KIE 会话中删除过时的事件,因为其他规则没有滑动窗口声明可能依赖于这些事件。决策引擎将事件存储在 KIE 会话中,直到事件被显式规则声明过期,或者在基于 KIE 基础中的数据的决策引擎内隐式原因。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat