【发布时间】:2018-08-06 11:37:31
【问题描述】:
我正在制作一个应用程序,其中通过每 5 秒一次的 HTTP 请求间隔收集来自虚拟机的与 CPU 使用率、内存使用率、磁盘使用率等相关的数据。收集的数据如下所示:
timeStamp (long): 1533554434
memUsagePerc (double): 5.384678498028317
cpuUsagePerc (double): 24.8756219
diskSizePerc (double): 31.880938915483163
diskUtilPerc (double): 1.0505864
我在 Drools Fusion 上创建了一些规则,试图查看以下内容:
例如,当 CPU 使用率在最后 10 秒内达到 10% 以上时,然后在屏幕上打印一些内容,但我的问题是,即使我在规则中输入了命令 over window:time(Xs),即使 @987654323 仍然会触发该规则@尚未通过。以下是 CPU 使用率的规则:
declare Netdata
@role( event )
end
rule "CPU usage over 10%"
salience -1
when
$cpu : Netdata(cpuUsagePerc > 10)
over window:time (10s)
from entry-point Netdata
then
System.out.println("CPU usage over 10%");
end
Netdata 是从 HTTP 响应中收集所有数据并每次创建一个对象的类。然后 Drools Fusion 使用该对象。
请注意,没有over window:time(Xs) 部分的更“虚拟”规则也会被触发。此外,屏幕上会出现以下错误,在over window:time(Xs) 旁边:JAVA_IDENTIFIER expected, got 'window'
我使用的是 Drools 5.1.1 版。
【问题讨论】:
-
您是否修复了 IDE 中的
JAVA_IDENTIFIER expected, got 'window'msg?
标签: java drools complex-event-processing drools-fusion