Esper如何表达句子之间的依赖关系

时间:2014-04-15 18:06:55

标签: esper

我是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)

任何被归类为“警告”的温度事件,它也被归类为“关键”。 无论如何,我更喜欢没有优先权的解决方案, 任何线索?

1 个答案:

答案 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