Мой запрос работает только в правильном порядке потоков в движке Siddhi CEP

Я хочу создать поток из 4 входных потоков. Например,

from s1[at1>0], s2[at2==2], s3[at3>1], s4[at4 is null]
select 'k' as res
insert into s5;

Первая проблема заключается в том, что если я попробую ввести события в другом порядке на сиддхи, это не даст результата. Во-вторых, если я не введу одно из событий, снова не будет результата. И, если я не помещаю значение в атрибут at4, возникает ошибка. Моя цель - поместить 'k' в res, если at4 не имеет значения или событие s4 не наступает.


person user3265113    schedule 05.08.2017    source источник
comment
Я не уверен, что вы имеете в виду - если я ввожу события в другом порядке в Сиддхи, попробуйте, это не даст результата   -  person Amarjit Dhillon    schedule 30.08.2017
comment
Я имею в виду, что события будут происходить в смешанном порядке, например s2 перед s1, и в этом случае это не сработает. Я думаю, что решил это с соединениями, но это сложнее.   -  person user3265113    schedule 27.09.2017


Ответы (1)


Выше вы используете последовательность [1]. Последовательность требует, чтобы все входящие события происходили в определенном порядке. Таким образом, в приведенном выше запросе вы получите результат только тогда и только тогда, когда вы получите события в следующем точном порядке одно за другим. 1. Событие, где at1> 0 2. Событие, где at2 = 2 3. Событие, где at3> 1 4. Событие, где at4 = null

Если одно из событий не наступит или условие не выполняется, вы не получите выход. Вот почему вы не получаете никаких результатов, и это ожидаемое поведение. Можете ли вы подтвердить, требуется ли вам только «поместить 'k' в res, если at4 не имеет значения или событие s4 не наступает». Если это так, я могу помочь вам с вопросом.

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

[1] https://docs.wso2.com/display/CEP420/SiddhiQL+Guide+3.1#SiddhiQLGuide3.1-Sequence

person Tishan    schedule 01.09.2017
comment
я хочу поставить 'k' в res, если s4 не приходит да - person user3265113; 27.09.2017