当前位置: 首页 > 知识库问答 >
问题:

Esper规则语言:从模式返回类的数据字段

蓬宾白
2023-03-14

我有以下规则,当心率保持在160以上5分钟时触发。

EPStatement cepStatementRule3 = cepRule.createEPL("context PartitionByMacHeartRate "
                + "select * from pattern[every(HeartRate(heartrate > 160) "
                + "-> (timer:interval(5 min) "
                + "and not HeartRate(heartrate<=160)))]");
        cepStatementRule3.addListener(new rule3Listener());

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

int heartrate;
String heartratesTimestamp;
String macAddress;

我想要的是能够在ruleListener中获得macAddress。然而,这将返回一个空的hashmap。所以我的问题是如何返回心率的macAddress?

共有1个答案

荀振国
2023-03-14

模式保留并返回标记的事件,即这样做:

// we assign the 'h' tag to the first event and the engine now retains that
// the select clause could use "h.macAddress as macAddress", for example
...every(h=HeartRate(... 
 类似资料:
  • 我有以下两个类Heartrate与字段: 和字段步骤: 我写的规则在最后一分钟步数超过100步,心率超过160时触发。 我想更改此规则,使其基于macAddress的上下文。因此,该规则只考虑具有相同macAddress的步骤和心率。我已经为步骤的macAddress和心率的macAddress编写了上下文规则。它们都是单独工作的,但当我试着给它们筑巢时,规则就不再起作用了。 我做错了什么?

  • 我想在Esper中编写一条规则,当过去15分钟内的步数为0且心率高于120时触发。我想出了以下规则: 我的心率类别有以下字段: 我的Steps类有以下字段: 我面临的问题是,我只想在过去15分钟内没有采取任何措施的情况下启动规则。现在,当两个步骤事件的步骤数相同时,它将激发。我知道我可能必须使用计时器。但是我不知道如何写这个规则。谁能帮帮我吗?

  • 我最近注意到一些流口水规则的奇怪行为。我有班级心率,它有以下字段: 我的规则文件如下: 我想将字段<代码>心率更改为<代码>心率,并在我的规则中更改字段名称,以便我的新规则现在是: 但这会产生错误,即drools无法解析该字段的心率。但是,当我将规则更改回原来的规则时,使用心率(heartRate),它可以正常工作,尽管这样的字段已经不存在了。我得到以下错误:

  • 我想写一个心率在160以上持续5分钟时触发的规则,我想出的规则如下: 我的心率类别有以下字段: 我面临的问题是,每当心率超过160时,这条规则就会启动。相反,我希望它只有在心率保持在160以上5分钟时才会启动。如何调整此规则?

  • 我最近开始使用Esper编程,我有一个智能可穿戴设备,可以将计步器数据发送到我的笔记本电脑。然后,我使用esper处理这些数据。但假设我有多个智能穿戴设备,每个都有一个唯一的MAC地址。我使用时间窗口,我的问题是如何更改规则文件,使规则仅对具有相同MAC地址的事件触发,并基于此MAC地址采取适当的操作。我的初始化和规则是: “我的步骤”类具有以下字段: 以下是我插入事件的方式: 这是我的输出: 为

  • 问题内容: 如何从AsyncTask中获取数据?我的MainActivity正在调用触发AsyncTask的DataCall.getJSON函数,但是我不确定如何将数据返回到原始Activity。 调用DataCall的MainActivity应该返回一个字符串并将其保存在 数据通话: 问题答案: 对我来说,关键是创建一个名为URLWithParams的类或其他类,因为AsyncTask将只允许发