我正在使用质子CEP和Orion Context Broker开发应用程序 . 我有传感器更新温度,CEP将温度更新作为事件 . 如果连续两次更新中有10个差异,我希望CEP产生警报 .
例如:传感器的最后更新是35.如果下一次更新小于26或大于44,我需要CEP产生警报 .
如何编写规则来实现这一目标?
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.
1 回答
CEP强烈提到时间窗口 . 您没有提到想要检测两个传感器事件之间差异的时间窗口 . 让我们假设您想要检测10分钟内到达的事件之间的差异 .
在CEP中,您需要定义一个时间上下文,它将您的输入事件作为启动器,相对时间终止符为10分钟 . 确保将事件启动器的关联策略设置为 Add ,以便即使另一个已打开,每个输入事件也将启动一个上下文实例 .
然后,您可以定义类型为 Sequence 的EPA(事件处理代理) . 并将其设置为使用您定义的时间上下文 .
该EPA将有两个参与者事件,均来自您输入事件的类型 . 每个参与者事件应该具有不同的别名(例如sensor1,sensor2),两者都应具有First的实例选择策略和Consume的消费策略 .
在EPA的条件下,您需要设置您的条件:
将评估策略设置为Immediate,将基数策略设置为Single .
与往常一样,您需要设置在检测到模式时将生成的派生事件 .
至于CEP与Orion上下文代理的集成,请参阅CEP user guide中的附录A.