首页 文章

如何使用质子运行时检测事件的突然增加或减少?

提问于
浏览
2

我正在使用质子CEP和Orion Context Broker开发应用程序 . 我有传感器更新温度,CEP将温度更新作为事件 . 如果连续两次更新中有10个差异,我希望CEP产生警报 .

例如:传感器的最后更新是35.如果下一次更新小于26或大于44,我需要CEP产生警报 .

如何编写规则来实现这一目标?

1 回答

  • 1

    CEP强烈提到时间窗口 . 您没有提到想要检测两个传感器事件之间差异的时间窗口 . 让我们假设您想要检测10分钟内到达的事件之间的差异 .

    在CEP中,您需要定义一个时间上下文,它将您的输入事件作为启动器,相对时间终止符为10分钟 . 确保将事件启动器的关联策略设置为 Add ,以便即使另一个已打开,每个输入事件也将启动一个上下文实例 .

    然后,您可以定义类型为 Sequence 的EPA(事件处理代理) . 并将其设置为使用您定义的时间上下文 .

    该EPA将有两个参与者事件,均来自您输入事件的类型 . 每个参与者事件应该具有不同的别名(例如sensor1,sensor2),两者都应具有First的实例选择策略和Consume的消费策略 .

    在EPA的条件下,您需要设置您的条件:

    sensor2.temperature >= sensor1.temperature + 10 OR sensor2.temperature <= sensor1.temperature - 10
    

    将评估策略设置为Immediate,将基数策略设置为Single .

    与往常一样,您需要设置在检测到模式时将生成的派生事件 .

    至于CEP与Orion上下文代理的集成,请参阅CEP user guide中的附录A.

相关问题