WSO2 CEP:Siddhi QL:我可以在单个执行计划中访问多个属性吗

WSO2 CEP :Siddhi QL: Can i access multiple attributes in a single execution plan

我是 WSO2 CEP Siddhi QL 的新手,我需要分析具有多个参数的多个节点的事件。这可能与 siddi 吗?如果是,我该如何实现。?

执行计划

@Plan:name('ExecutionPlan')

@Import('InputStream:1.0.0')
define stream InputStream (node string, param1 int, param2 double, param3 string, param4 string, param5 string, param6 string, param7 string,......,param120 string);

@Export('outputStream:1.0.0')
define stream OutputStream (val1 string, param3 string);

from InputStream [(node == 11 AND Param2 < 110) 
                            AND 
                   (node == 12 AND Param3 > 40)
                              AND 
                   (node == x AND Paramx > some value)] #window.time(1 sec)
select node as val1, param2 as param2, param3 as param3  
insert into OutputStream;

因为我必须等待获取其他 nodes.How 的数据来处理多个事件..?

我认为这对 Siddhi 来说是不可能的。 Siddhi 将处理 "per event" 基础,因此无法评估需要来自多个事件的输入的此类 过滤器

但是,如果您知道事件到达顺序(即节点 11 之后是节点 12,等等...)和节点数,那么您可以使用 Siddhi patterns 来实现此目的;

例如:

from every( e1=InputStream[node == 11 AND Param2 < 110] ) -> e2=InputStream[node == 12 AND Param3 > 40] -> eX=InputStream[node == X AND ParamY > ZZ]
select e1.node as val1, e1.param2 as param2, e2.param3 as param3
insert into OutputStream;

通过将Stream拆分成多个,可以实现多参数访问多节点,你可以访问它。这是通过使用 WSO2 中的模式来完成的。

from every (e1=InputStream) -> (e2=InputStream)-> e3=InputStream[(e1.node == '11' AND e1.param1 > 500 AND e1.param2 > 1000 ) AND (e2.node =='12' AND e2.param3 > 200 AND e2.param1 < 100)] within x mins