【问题标题】:Esper rule language: fire rule only after condition is fulfilled for a certain time period埃斯珀规则语言:只有在条件满足一定时间后才会触发规则
【发布时间】:2016-04-18 15:36:33
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    EPL: every(HeartRate(heartrate>160) -> (timer:interval(5 min) 而不是 HeartRate(heartrate

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

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

    【讨论】:

    • 你能把这个写完整吗,因为我不明白这个规则的语法。谢谢
    • 谢谢,我现在有以下规则:"select * from pattern[every(HeartRate(heartrate&gt;160) -&gt; (timer:interval(5 min) and not HeartRate(heartrate&lt;=160)))]" 但是我如何像以前的规则一样通过 macaddress 包含组?
    • 你可以使用一个按mac地址分区的上下文,像这样:create context PartitionByMac partitioned by macaddress from HeartRate; context PartitionByMac select * from pattern[every(HeartRate(heartrate>160) -> (timer:interval(5 min) 而不是 HeartRate(heartrate
    • 当我这样做并使用您建议的分区时,该规则不再触发。我的规则现在是cepRule3.createEPL("create context PartitionByMac partition by macAddress from HeartRate", "context PartitionByMac select * from pattern[every(HeartRate(heartrate&gt;160) -&gt; (timer:interval(5 min) and not HeartRate(heartrate&lt;=160)))]");。如果没有上下文,规则可以正常工作,但随后会为所有 macAddresses 触发。可能是什么问题?
    • 没关系找到我的问题。我应该创建两个单独的 EPL 语句。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-08
    • 1970-01-01
    相关资源
    最近更新 更多