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

How to manage statement execution order in esper

以下代码存在问题。在 A 递增或递减之前....finalstatement 被执行。为什么会这样。。如何管理语句的执行顺序。

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 ;

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

你可以强制 esper 使用注释 @Priority

将你的第一个语句的优先级提高
@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