在Esper CEP中创建更复杂的EPN

时间:2018-12-15 11:40:07

标签: java complex-event-processing esper

我刚刚在Java中实现了Esper CEP的简单示例。类似于example

import requests
login_data = {
        'j_username': '#',
        'j_password':'#'
        }

headers = {
        'User-Agent':'Chrome/70.0.3538.110'
        }
 url ="https://alm.vodafone.com/qcbin/rest/domains/EVO/projects/EVO_Automation_New/defect"
    login_url = "https://alm.vodafone.com/qcbin/rest/domains/EVO/projects/EVO_Automation_New/defect?login-form-required=y"
    r = C.get(login_url)
    tst = C.post(login_url,params=login_data,allow_redirects=True) 
    print("------",tst.status_code)
    resp = C.get(url)
    print("Second",resp.text)
    print(resp.status_code)

但是,在此示例中,仅假定了简单的过滤器EPA。现在,我想在运行时中合并几个EPA,类似于以下示例。不幸的是,我找不到这种实现的任何示例: enter image description here 有人有例子吗?。

提前谢谢

编辑:到目前为止,我做到了,就像user650839所说的那样:

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);

代码被完美地编译,但是当传感器12小于1时,我的事件处理程序也会响应。因此,我猜测如果我的一条语句为true就足够了,但是我的事件处理程序仅在所有语句为true时才作出反应。 / p>

1 个答案:

答案 0 :(得分:0)

@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会进一步激发您的灵感。