Я хочу написать правило, которое срабатывает, когда частота сердечных сокращений выше 160 в течение 5 минут. Правило я придумал следующий:Язык правил эспера: правило огня только после выполнения условия в течение определенного периода времени
EPAdministrator cepRule3 = cep.getEPAdministrator();
EPStatement cepStatementRule3 = cepRule3.createEPL("select * from "
+ "HeartRate.win:time(5 min) "
+ "group by macAddress "
+ "having min(heartrate) > 160");
cepStatementRule3.addListener(new rule3Listener());
Мой класс HeartRate имеет следующие поля:
int heartrate;
String heartratesTimestamp;
String macAddress;
Проблема я столкнулся в том, что это правило срабатывает каждый раз, когда частота сердечных сокращений выше 160. Вместо этого я хочу, чтобы он срабатывал только тогда, когда частота сердечных сокращений оставалась выше 160 в течение 5 минут. Как я могу настроить это правило?
не могли бы вы написать это в полной мере, потому что я не понимаю, синтаксис этого правила Благодаря – Tim
Спасибо, я сейчас следующее правило:.. ' "выберите * из узор [каждый (HeartRate (сердечный ритм> 160) -> (таймер: интервал (5 мин) a nd not HeartRate (heartrate <= 160)))] "' но как я могу включить группу по macaddress, как в моем предыдущем правиле? – Tim
Вы можете использовать контекст, секционированный по MAC-адресу, например: создать контекст PartitionByMac, выделенный из macaddress из HeartRate; контекст PartitionByMac выберите * из рисунка [каждый (HeartRate (сердечный ритм> 160) -> (таймер: интервал (5 мин), а не HeartRate (сердечный <= 160))); – user3613754