我刚刚用java实现了一个简单的Esper CEP示例。类似于example。
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时,我的事件处理程序也会响应,所以我猜如果我的一条语句为真就足够了,但是我的事件处理程序只有在所有语句都为真时才会做出反应。
发布于 2018-12-15 20:51:31
@name('EPA1') insert into EPA3 select * from SensorEvent(sensor11>1);
@name('EPA2') insert into EPA3 select * from SensorEvent(sensor11<1);
@name('EPA3') select count(*) from EPA3也可能,取决于这幅画的确切含义
@name('EPA1') insert into EPA1 select * from SensorEvent(sensor11>1);
@name('EPA2') insert into EPA2 select * from SensorEvent(sensor11<1);
@name('EPA3') select * from EPA1#time(10) as epa1, EPA2#time(20) as epa2 where epa1.sensorId = epa2.sensorId也许solution patterns会进一步激励你。
https://stackoverflow.com/questions/53792015
复制相似问题