Я только что реализовал простой пример Esper CEP в Java.Аналогично примеру .
Configuration config = new Configuration();
config.addEventType("SensorEvent",
test.SensorEvent.class.getName());
EPServiceProvider epService = EPServiceProviderManager
.getDefaultProvider(config);
String expression = "select * from SensorEvent where sensor11 >= 1.00";
EPStatement statement = epService.getEPAdministrator().createEPL(expression);
MyListener listener = new MyListener();
statement.addListener(listener);
Однако в этом примере предполагается, что применяется только простой фильтр EPA.Теперь я хотел бы объединить несколько EPA во время выполнения, как показано в следующем примере.К сожалению, я не могу найти примеров для такой реализации: У кого-нибудь есть пример?.
Заранее спасибо
Редактировать: Пока ясделал так, как user650839 сказал:
String expression = "@name('EPA1') insert into EPA1 select * from SensorEvent where sensor11 >= 1";
String expression2 = "@name('EPA2') insert into EPA2 select * from SensorEvent where sensor12 >= 1";
String expression3 ="@name('EPA3') select * from EPA1#time(100) as epa1, EPA2#time(200) as epa2 where epa1.id = epa2.id";
EPStatement statement = epService.getEPAdministrator().createEPL(expression);
EPStatement statement2 = epService.getEPAdministrator().createEPL(expression2);
EPStatement statement3 = epService.getEPAdministrator().createEPL(expression3);
MyListener listener = new MyListener();
statement.addListener(listener);
statement2.addListener(listener);
statement3.addListener(listener);
Код отлично скомпилирован, но мой обработчик событий также отвечает, когда датчик 12 меньше 1. Поэтому я думаю, достаточно, если одно из моих утверждений верно, но мойОбработчик событий должен реагировать, только если все операторы верны.