簡體   English   中英

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;

由於我不得不等待獲取其他節點的數據。如何處理多個事件..?

我認為Siddhi不可能做到這一點。 Siddhi將處理“每個事件”的基礎,因此,無法評估需要多個事件輸入的此類過濾器

但是,如果您知道事件的到達順序(即節點11之后是節點12, 依此類推 ),以及節點計數,則可以使用Siddhi模式來實現;

例如:

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;

通過將流拆分為多個,可以訪問具有多參數的多節點,並且可以訪問它。 這是通過使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM