Siddhi CEP新手。除了WS02 CEP上的常规文档之外,有人可以指出一个很好的教程。
以下是我们的要求。指出一些关于编写此类查询的正确方法的线索。
需要执行计划的种类: - 如果设备通知报告传感器1的使用情况,则监控是否在5分钟内检查设备通知是否也报告传感器2的使用情况。如果找到,则生成输出流,报告REST-JSON上的复合活动 - 如果在早晨,下午和晚上的时间段内未检测到此类复合活动,则在REST-JSON上生成警告事件流状态。 (那么如何找到没有及时发生的事件) - 如果在早晨,下午和晚上的某些时段内未找到此类复合活动,则在REST-JSON上报告failure1-event-stream状态。
这应该是日常工作,那么在WSO2 CEP中如何删除先前处理的数据。
此致 阿米特
答案 0 :(得分:2)
查询可以如下(这些是草稿查询,可能需要稍作修改才能使它们运行)
from e1=sensorStream[sensorId == '1'] -> e2=sensorStream[sensorId == '2']
select 'composite activity detected' as description, e1.value as sensor1Value, e2.value as sensor2Value
within 5 minutes
insert into compositeActivityStream;
from sensorStream[sensorId == '1']#window.time(5 minutes)
select *
insert into delayedSensor1Stream for expired-events;
from e1=sensorStream[sensorId == '1'] -> nonOccurringEvent = sensorStream[sensorId == '2'] or delayedEvent=delayedSensor1Stream
select 'id=2 not found' as description, e1.value as id1Value, nonOccurringEvent.sensorId as nonOccurringId
having (not(nonOccurringId instanceof string))
insert into nonOccurrenceStream;
这将在id = 1事件到达后的5分钟结束时立即检测到未发生的事件。 有关上述逻辑的解释,请查看non occurrence sample of cep 4.0.0(语法有点不同,但想法相同)
from nonOccurrenceStream#window.timeBatch(360 minutes)
select count(id1Value) as nonOccurrenceCount
insert into nonOccurrenceReportsStream for expired-events;
您可以使用http输入/输出适配器,并为此用例执行json构建器和格式化程序的json映射。