如何在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
以下代码存在问题。在 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