【问题标题】:Esper rule language: context nestingEsper 规则语言:上下文嵌套
【发布时间】:2016-04-20 14:07:10
【问题描述】:

我有以下两个课程 带字段的心率:

int heartrate;
String heartratesTimestamp;
String macAddress;

以及带字段的步骤:

int steps;
String stepsTimestamp;
String macAddress;

我写的规则在最后一分钟步数超过 100 且心率高于 160 时触发。

EPStatement cepStatementRule7 = cepRule.createEPL("context PartitionByMac select * from "
            + "Steps.win:time(1 min) S, HeartRate.win:time(1 min) H "
            + "having (max(S.steps)-min(S.steps) > 100) and (H.heartrate > 160)");
    cepStatementRule7.addListener(new rule7Listener());

我想更改此规则,使其基于 macAddress 的上下文。因此该规则仅考虑具有相同 macAddress 的步数和心率。我为步骤的 macAddress 和心率的 macAddress 编写了一个上下文规则。它们都单独工作,但是当我尝试嵌套它们时,规则将不再触发。

cepRule.createEPL("create context PartitionByMac 
context PartitionByMacSteps partition by macAddress from Steps, 
context PartitionByMacHeartRate partition by macAddress from HeartRate");

我做错了什么?

【问题讨论】:

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


    【解决方案1】:

    你想要的是

    create context PartitionByMac 
    partition by macAddress from Steps, macAddress from HeartRate; 
    

    这可确保相同的 macaddress 值位于同一分区中以分析步数和心率事件。

    嵌套上下文的行为不同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-08
      • 1970-01-01
      • 2018-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多