Wso2 匹配没有事件的情况

Wso2 匹配没有事件的情况,wso2,wso2cep,siddhi,Wso2,Wso2cep,Siddhi,我有一个简单的对象状态流: define stream statusStream (id string, success bool); 我想查询自5分钟以来“失败”(success=false)的所有对象:statusStream(,false)的所有事件,其中5分钟内没有事件(相同id,true) 对于这种工作,最简单的siddhi查询是什么 目前我有: define stream statusStream (id string, success bool); from statusStr

我有一个简单的对象状态流:

define stream statusStream (id string, success bool);
我想查询自5分钟以来“失败”(success=false)的所有对象:statusStream(,false)的所有事件,其中5分钟内没有事件(相同id,true)

对于这种工作,最简单的siddhi查询是什么

目前我有:

define stream statusStream (id string, success bool);

from statusStream[ success == false ]#window.time(5 minutes)
insert expired events into expiredStatusStream;

from every status = statusStream[ success == false ]
  -> ackStatus = statusStream[ success == true and id == status.id]
    or expiredStatus = expiredStatusStream[ id == status.id ]
select status.id, ackStatus.id as ackId
into filteredStatusStream;

from filteredStatusStream[ ackStatus.id is null ]
insert into failedStatusStream;

如果您收到“success==false”消息表示失败,请尝试以下执行计划:

@Import('statusStream:1.0.0')
define stream statusStream (id string, success bool);

@Export('alertStream:1.0.0')
define stream alertStream (alert string);

from statusStream
select id, success, time:timestampInMilliseconds() as ts
insert into statusStreamWithTS;

from every e1=statusStreamWithTS[success==false], statusStreamWithTS[success==false]*, e2=statusStreamWithTS[success==false AND (e2.ts - e1.ts) >= 500000]
select 'some message' as alert
insert into alertStream;
在这里,如果我们在5分钟内继续收到“success==false”消息,将生成一个警报