如何在esper中管理语句执行顺序

时间:2018-04-17 13:23:35

标签: esper cumulocity

以下代码存在问题。在A增加或减少之前....最终陈述被执行。为什么会发生这种情况..我们如何管理语句的执行顺序。

create variable Integer A=0;



on pattern[every a=EventCreated(a.type ='C')]
  set A=  A+1;


on pattern[every a=EventCreated(a.type ='EOD')]
  set A=  A-1;



select
  "R" as type,
  "R" as text,
  e.time as time,
  e.source as source
from EventCreated e where A=0 ;

1 个答案:

答案 0 :(得分:1)

从技术上讲,第一个语句的输入也适用于最后一个语句,这就是为什么esper首先触发最后一个语句的原因。

您可以使用注释@Priority

强制esper优先处理您的第一个语句的优先级
@Priority(1)
@Name("ReplaceCarCounterAdd")
on pattern[every a=EventCreated(a.type ='Charging')]
  set ReplaceCar =  ReplaceCar+1;

首先执行最高优先级,默认情况下,所有语句都为零。有了这个改变,它应该有效,因为当触发最后一个语句时,变量不再是0。

esper中的文档: http://esper.espertech.com/release-7.1.0/esper-reference/html/epl_clauses.html#epl-syntax-annotation