Эспер - обнаружить событие после отсутствия

Я узнал, что можно определить отсутствие события, например: выбрать * из шаблона [каждый EventX -> (таймер: интервал (10 секунд), а не EventX)], но также возможно ли обнаружить наличие события после его отсутствия? Возможно, используя априор? И можно ли использовать одно выражение для обнаружения как отсутствия, так и присутствия? Заранее спасибо!


person user5526698    schedule 17.07.2016    source источник


Ответы (1)


Похоже, вы ищете это

every EventX -> (timer:interval(10 sec) and not EventX) -> Event X

...добавляя временной интервал, через который должно прийти событие...

every EventX -> (timer:interval(10 sec) and not EventX) -> Event X where timer:within(10)

Попробуйте внешнее соединение для обнаружения нескольких шаблонов:

select * from pattern[...].win:length_batch(1) as pattern1 full outer join pattern[...].win:length_batch(1) as pattern2
person goodie    schedule 18.07.2016
comment
Спасибо за предложение, я попробую это. Идея состоит в том, что датчик отправляет событие каждые 10 секунд, и я хочу запустить уведомление о том, что датчик находится в автономном режиме, когда от этого датчика не обнаружено никаких событий через 10 секунд. Но когда датчик снова начинает отправлять события через регулярные промежутки времени, я хочу отправить онлайн-уведомление. - person user5526698; 18.07.2016
comment
Вроде работает, но за 10 сек. например, если для повторного поступления событий требуется более 20 секунд (после отсутствия), он перестает работать. Мне как-то нужно определить, когда датчик снова в сети после более длительного (неизвестного) периода времени. Это возможно? - person user5526698; 18.07.2016
comment
Я бы попробовал вставить в именованное окно при обнаружении отсутствия. Когда приходит событие и в именованном окне есть строка, выберите и удалите строку, и это индикатор онлайн. - person goodie; 19.07.2016