我是Java中使用Esper事件流引擎的新手。 我想以下面的方式检测一些警报 如果条件-A然后是Alert-A 如果条件-B则为Alert-B 如果是条件-C和(不是Alert-A而不是Alert-B)则是Alert-C 条件不是排他性的。 在温度的情况下,将测试温度是否>例如50,100,150(我的情景更复杂) 我不知道如何解决这个问题。 我试过@priority和@drop,但没有成功(我认为引擎没有考虑)我已经把 。config.getEngineDefaults()getExecution()setPrioritized(真)。 EPL句子是:
@Name('critical')
@Drop
@Priority(9)
Insert into AlertEvent
select *, 'critical' as type
from TemperatureEvent (reading > 100)
@Name('warning')
Insert into AlertEvent
select *, 'warning' as type from TemperatureEvent (reading > 200)
任何被归类为“警告”的温度事件,它也被归类为“关键”。 无论如何,我更喜欢没有优先权的解决方案, 任何线索?
答案 0 :(得分:0)
Esper具有分裂和复制语法,提供了一种方便的方法。它在[1]中描述。我没有为你测试过以下内容,但它应该是关闭的:
on TemperatureEvent(reading > 100)
insert into AlertEvent select ... where reading > 200
insert into AlertEvent select ...
[1] http://esper.codehaus.org/esper-5.0.0/doc/reference/en-US/html_single/index.html#split_overview