有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java 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());

我的心率类别有以下字段:

int heartrate;
String heartratesTimestamp;
String macAddress;

我面临的问题是,每当心率超过160时,这条规则就会生效。相反,我希望它只有在心率保持在160以上5分钟时才会启动。我该如何调整这个规则


共 (1) 个答案

  1. # 1 楼答案

    EPL: 每(心率(心率>160)->;(计时器:间隔(5分钟)而非心率(心率<;=160))

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

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