java - 超能力规则语言: fire rule only after condition is fulfilled for a certain time period

标签 java rule-engine complex-event-processing esper

我想编写一条当心率高于 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 分钟时触发。我该如何调整这个规则?

最佳答案

英超: every(HeartRate(心率>160) -> (计时器:间隔(5 分钟) 而不是 HeartRate(心率<=160))

或者简单地在 Java 代码中使用 and : EPStatement cepStatementRule3 = cepRule3.createEPL("every(HeartRate(heartrate>160) -> (timer:interval(5 min) and not HeartRate(heartrate<=160))"); cepStatementRule3.addListener(new rule3Listener());

在 Esper 文档中查找 EPL 模式语法。

关于java - 超能力规则语言: fire rule only after condition is fulfilled for a certain time period,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36698488/

相关文章:

java - 如何检查 OutputStream 是否已关闭

java - 子线程在Java中是否继承了父线程的ThreadScope?

azure - 规则引擎在 Azure 上的流分析中意味着什么?

tomcat7 - Orion 在与 Apache Tomcat 7 一起运行时遇到问题

java - java 8中基于多个属性从对象列表中删除重复项

rule-engine - 与规则引擎相关的开放标准有哪些?

scope - 使用 Drools 声明局部规则变量

java - Esper 部署错误 : invalid return type for static method, 需要 Java 类

java - Esper 基于客户的查询非常适合多个客户

java - 从结果集中填充表时更改 jtable 的列类型