Обработка сложных событий Сидди с использованием логического И - PullRequest
0 голосов
/ 27 января 2020

Я использую SiddhiQL для обработки сложных событий. Мой вариант использования - проверить, происходят ли два события определенного типа с определенными фильтрами в течение 15 минут. Как, например, -

If event1[filter 1] and event2[filter 2] within 15 mins
Insert into output stream 

В моем случае любое из двух событий может произойти первым, и мне нужно проверить, получаю ли я второе событие после получения первого события в течение 15 минут.

Возможно ли это в SiddhiQL?

EDIT # 1 - ниже определены мои потоки и события (приведенный ниже код не работает)

define stream RegulatorStream(deviceID long, roomNo int, tempSet double);

@sink(type = 'log', prefix = "LOGGER")
define stream outputStream (roomNo int,rooomNo int);

from e1 = RegulatorStream[roomNo==23] and e2 = RegulatorStream[e1.deviceID == deviceID AND roomNo ==24] within 5 minutes 
select e2.roomNo,123 as rooomNo
insert into outputStream;

В приведенном выше случае мне нужно оповещение при получении событий в моем RegulatorStream с номерами roomNo = 23 и roomNo = 24 в течение 5 минут в любом порядке с тем же идентификатором устройства.

Как этого можно достичь в SiddhiQL?

1 Ответ

0 голосов
/ 28 января 2020

Да, это можно сделать с помощью паттернов сиддхи. Пожалуйста, обратитесь к документации по паттернам сиддхи в https://siddhi.io/en/v5.1/docs/query-guide/#pattern и в примерах в https://siddhi.io/en/v5.1/docs/examples/logical-pattern/.

Вы можете использовать операцию ИЛИ внутри шаблона, чтобы обойти порядок возникновения событий .

...