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