Как сопоставить несколько шаблонов в одном запросе EPL - PullRequest
0 голосов
/ 25 мая 2018

У меня есть два разных шаблона распознавания совпадений, созданных на языке обработки событий Esper, когда я запускаю их один за другим, они работают нормально, но мне нужно получить результат от обоих этих шаблонов для входящих событий.Шаблоны определены следующим образом.

(1)

match_recognize( "
measures A as a, B as b "
pattern (A B) "
define "
A as A.scene= 'stock'and A.activity='assembly' and A.task='picking' and A.mod2='FT' and A.mod3='Scn', 
B as B.scene='stock' and B.activity='assembly' and B.task='picking' and B.mod2='PG' and B.mod3='GzS')

(2)

match_recognize( 
measures A as a, B as b, C as c 
pattern (A B C) 
define
A as A.scene= 'assembly'and A.activity='assembly' and A.task='moving' and A.mod2='GrS' and A.mod3='GzS', 
B as B.scene='assembly' and B.activity='assembly' and B.task='moving' and B.mod2='GrT' and B.mod3='Follow', 
C as C.scene='assembly' and C.activity='assembly' and C.task='moving' and C.mod2='GrT' and C.mod3='GzS')

Мне нужно получить результат, если какой-либо из этих шаблонов совпадаетс входящими событиями по одному запросу.

1 Ответ

0 голосов
/ 25 мая 2018

хорошо, так в чем проблема?Вы просто создаете их оба и добавляете слушателя к каждому и все готово.

Первый пример:

String epl = "@name('first') select ... from ...;\n";
epl += "@name('second') select ... from ...;\n";
epAdministrator.getDeploymentAdmin().parseDeploy(epl);
epAdministrator.getStatement('first').addListener(new MyListener());
epAdministrator.getStatement('second').addListener(new MyListener());

Другой пример:

EPStatement first = epAdministrator.createEPL(...);
first.addListener(new MyUpdateListener());
EPStatement second = epAdministrator.createEPL(...);
second.addListener(new MyUpdateListener());
...