2016-08-11 10 views
0

Я пытаюсь создать оператор EPL, который покажет, возможен ли заказ.Напишите запрос и пользовательскую функцию в Esper

Существует два события, EventA (обработано) и EventB (не обработано).

создать схему EventA (тип string, percentCompleted integer);
создать схему EventB (строка типа);

Оператор должен соответствовать всем обработанным элементам в зависимости от типа (строки) элемента. Результат должен содержать логическое значение, которое указывает, должен ли обрабатываться заказ или нет.

У меня есть утверждение, приведенное ниже, чтобы вернуть 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'}}} 

Я хочу, чтобы мое заявление, чтобы вернуться ИСТИНА и «тип» вместо всего результата и также я хочу, чтобы запрос возвращал FALSE и «type», когда a.percentCompleted < 20.

ответ

0

Как долго процент завершения должен оставаться ниже 20, чтобы он указывал FALSE? Или идея здесь получить ЛОЖЬ каждый раз? В любом случае вам может быть проще всего написать вторую EPL и приложить тот же прослушиватель. Либо это, либо написать запрос в качестве соединения.

+0

Да, идея состоит в том, чтобы каждый раз становиться ложным. На самом деле, я немного смущен, не могли бы вы указать запрос на этот случай. – Umer

+0

«EPSatate cepStatement1 = cepAdm.createEPL (« выберите * из рисунка [каждый a = EventA -> каждый b = EventB (a.type = b.type AND a.percentCompleted> 20)] "); cepStatement1.addListener (новый CEPListener1());» ------------------------------------------------- --- EPSatate cepStatement2 = cepAdm.createEPL («выберите * из рисунка [каждый a = EventA -> b = EventB (a.type = b.type AND a.percentCompleted <= 20)]"); cepStatement2.addListener (новый CEPListener2()); ------------------------------------------------- ------------- Является ли это прекрасным ???? – Umer

+0

И как я могу проверить только последнее значение EventA, а не все предыдущие. – Umer

 Смежные вопросы

  • Нет связанных вопросов^_^