我的查询仅在Siddhi CEP引擎中以正确的流顺序工作

时间:2017-08-05 06:32:57

标签: wso2 complex-event-processing siddhi

我想从4个输入流中生成一个流。例如,

from s1[at1>0], s2[at2==2], s3[at3>1], s4[at4 is null]
select 'k' as res
insert into s5;

第一个问题是,如果我在Siddhi中以其他顺序输入事件,请尝试它,它不会产生结果。 其次,如果我没有输入其中一个事件,那么也不会产生结果。而且,如果我没有在属性at4中放置值,则会产生错误。 如果'k'没有价值或事件at4没有来,我的目标是将s4置于资源中。

1 个答案:

答案 0 :(得分:1)

在上面你使用的是序列[1]。序列要求所有传入事件按特定顺序排列。因此,在上面给出的查询中,当且仅当您按顺序依次获得事件时,才会获得输出。 1. at1> 0的事件 2. at2 = 2的事件 3. at3> 1的事件 4. at4 = null

的事件

如果其中一个事件没有发生或条件没有,你就不会获得输出。这就是为什么你没有得到任何结果,这是预期的行为。您能否确认您的需求是否仅适用于"把' k'在res中,如果at4没有价值或事件s4没有来。"如果是这种情况,我可以帮助您解决查询问题。

Siddhi尝试它不允许你保持属性字段未定义。当你没有投入价值时,这就是你得到和错误的原因。 Siddhi也不允许您不发送已定义的属性。 Siddhi总是要求您发送所有已定义的属性。唯一可能的是,您的支票所涵盖的属性变为空。

[1] https://docs.wso2.com/display/CEP420/SiddhiQL+Guide+3.1#SiddhiQLGuide3.1-Sequence