Запрос Сиддхи для события до другого в течение срока - PullRequest
0 голосов
/ 17 ноября 2018

Я пытаюсь написать запрос сиддхи, чтобы определить, не произошло ли событие раньше другого в течение определенного времени.Запрос, который я должен определить, не случалось ли когда-либо «X» до «Y» в течение всей жизни приложения siddhi:

from stream[value == 'Y']
and not stream[value == 'X']

Я предположил, что добавление временного ограничения будет работать:

from stream[value == 'Y']
and not stream[value == 'X'] for 5 min

Однако, выражение for никогда не имеет никакого эффекта, который я вижу.Этот запрос все еще запускается независимо от того, был ли «X» 4 минуты назад или 6 минут назад.Я понимаю, что аналогичного эффекта можно достичь, проверив, идет ли «Y» после «X» в течение определенного периода времени, но для моих целей мне нужно знать обратное.

Возможно ли это с Сиддхи?Если да, то может ли кто-нибудь предоставить пример запроса, который может этого добиться?

1 Ответ

0 голосов
/ 20 ноября 2018

Исходя из вашего комментария, я пишу ответ ниже. Конструкция Sequence в Сиддхи гарантирует, что никто не сможет войти в поток состояний в случайной точке. В качестве примера рассмотрим пример последовательности запросов.

from every e1=InputStream[state='X'], e2=InputStream[state'Y']
select e1.state as initialState, e2.state as finalState
insert into NextStream;

Таким образом, здесь мы указываем X, за которым следует последовательный Y. Если Y встречается до того, как конструкция последовательности X будет обрабатывать это и отбрасывать Y. Так что все, что входит в NextStream, гарантированно удовлетворяет переходу состояния x -> Y.

Более расслабленной конструкцией последовательности является pattern . Это то же самое, что и последовательность при ослаблении требования последовательного прибытия. Надеюсь, это поможет !!

...