2015-12-03 3 views
0

В WSO2 CEP я составил план выполнения, который включает в себя следующий запрос: (он будет срабатывать, если температура будет подаваться 20 градусов 3 раза подряд в течение 10 секунд)Запрос CEP на основе даты/времени дня

from MQTTstream[meta_temperature > 20]#window.time(10 sec) 
select count(meta_temperature) as meta_temperature 
having meta_temperature > 3 
insert into out_temperatureAlarm 

Как я могу достичь того, что запрос применяется только в том случае, если это особое время суток, например 08:00 до 10:00 часов?

Есть ли что-то, что я мог бы поставить в запрос как:

having meta_temperature > 3 and HOUR_OF_THE_DAY BETWEEN 8 and 10 

ответ

2

Вы можете использовать окно хрон #window.cron вместо временного окна #window.time. Вы можете указать строку выражения Cron для желаемых периодов времени в Сиддхи [1]. Пожалуйста, обратитесь к документации планировщика кварца, чтобы получить дополнительную информацию о строках выражения cron [2].

[1] https://docs.wso2.com/display/CEP400/Inbuilt+Windows#InbuiltWindows-croncron

[2] http://www.quartz-scheduler.org/documentation/quartz-1.x/tutorials/crontrigger

+0

Если я установить cron.window так: window.cron ("0/10 0-30 11 * *?"). Выражение периодически оценивается каждые 10 секунд. Но с результатом window.time результат возвращается сразу после трех событий за 10 секунд. С временным окном cron могут возникать пропущенные события, если события происходят между двумя окнами cron. Можно ли как-то обойти это? – Blackvenom

+0

Хорошо, я решил это, используя одно выражение с window.time, вставив результат во временный поток и второе выражение, используя временный поток с окном.cron. Может быть, не изящный, но теперь он работает так, как я себе представлял. Большое спасибо! – Blackvenom

Смежные вопросы