Написать запрос и пользовательскую функцию в Esper
Я пытаюсь создать заявление EPL, которое покажет, возможен ли заказ или нет.
Есть два события, EventA(обработано) и EventB(не обработано).
создать схему EventA (тип string, процент Completed integer);
создать схему EventB(тип string);
Оператор должен соответствовать всем обработанным элементам, основываясь на типе (строке) элемента. Результат должен содержать логическое значение, которое указывает, должен ли быть обработан заказ или нет.
У меня есть заявление ниже, чтобы вернуть true, когда успешное совпадение сделано (и можно разместить заказ). Тем не менее, я также хотел бы вернуть ложь, когда заказ не может быть размещен.
Случай проверен здесь:
http://esper-epl-tryout.appspot.com/epltryout/mainform.html
create schema EventA(type string, percentCompleted integer);
create schema EventB(type string);
@Name('Out') select * from pattern [every a=EventA -> every b=EventB(a.type = b.type AND a.percentCompleted > 20) ]
Последовательность:
EventA={type="1",percentCompleted=0}
EventA={type="2",percentCompleted=0}
EventA={type="1",percentCompleted=20}
EventA={type="1",percentCompleted=40}
EventB={type="1"}
Результат: (возвращает только верный результат):
Out-output={a={EventA={type='1', percentCompleted=40}}, b={EventB={type='1'}}}
Я хочу, чтобы мое утверждение возвращало TRUE и "type" вместо целого результата, а также я хочу, чтобы запрос возвращал FALSE и "type", когда a.percentCompleted < 20.
1 ответ
Как долго процент завершения должен оставаться ниже 20, чтобы он указывал ЛОЖЬ? Или здесь идея получить ЛОЖЬ каждый раз? В любом случае вам будет проще всего написать второй EPL и подключить того же слушателя. Либо так, либо напишите запрос как объединение.