Я делаю приложение, в котором данные виртуальной машины, относящиеся к использованию ЦП, использованию памяти, использованию диска и т. д., собираются с помощью интервального HTTP-запроса каждые 5 секунд. Собранные данные выглядят так:
timeStamp (long): 1533554434
memUsagePerc (double): 5.384678498028317
cpuUsagePerc (double): 24.8756219
diskSizePerc (double): 31.880938915483163
diskUtilPerc (double): 1.0505864
Я создал несколько правил в Drools Fusion, пытаясь увидеть следующее: когда загрузка ЦП достигает, например, более 10% за последние 10 секунд, затем напечатайте что-нибудь на экране, но моя проблема в том, что даже если я вставил в правило команду over window:time(Xs)
правило по-прежнему срабатывает, хотя X seconds
еще не пройдено. Вот правило использования процессора:
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.
JAVA_IDENTIFIER expected, got 'window'
в среде IDE? - person Galya   schedule 10.12.2019