首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Esper CEP中创建更复杂的EPN

在Esper CEP中创建更复杂的EPN
EN

Stack Overflow用户
提问于 2018-12-15 19:40:07
回答 1查看 115关注 0票数 0

我刚刚用java实现了一个简单的Esper CEP示例。类似于example

代码语言:javascript
复制
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说的做的:

代码语言:javascript
复制
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时,我的事件处理程序也会响应,所以我猜如果我的一条语句为真就足够了,但是我的事件处理程序只有在所有语句都为真时才会做出反应。

EN

回答 1

Stack Overflow用户

发布于 2018-12-15 20:51:31

代码语言:javascript
复制
@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

也可能,取决于这幅画的确切含义

代码语言:javascript
复制
@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会进一步激励你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53792015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档