Как получить список сработавших событий в espertech CEP

Я реализовал espertech CEP в своем проекте, и все отлично работает, однако я хотел бы показать список всех инициированных событий. Позволяет ли это эспертех?


person user1281678    schedule 30.11.2016    source источник
comment
Каковы варианты использования и заявление EPL, которые у вас есть на данный момент? Я спрашиваю, потому что в зависимости от того, является ли это шаблоном, агрегацией или чем-то еще, что вы можете сделать, ответ может зависеть. И что такое триггерные события? Это выходные события или события, которые приходят и запускают что-то или?   -  person goodie    schedule 30.11.2016
comment
Я использую UpdateListener для запуска действий в соответствии с потоком данных, который я определил в операторе запроса события. UpdateListner работает, но мне нужен список каждый раз, когда он вызывается. Например: когда значение больше 1, срабатывает updatelistener и распечатывает информацию о событии. Пока я говорю о простых событиях   -  person user1281678    schedule 30.11.2016
comment
Хорошо, список каждый раз, когда он вызывается, означает для меня какой-то журнал, когда слушатель вызывается, кажется, что слушатель может просто записать это?   -  person goodie    schedule 01.12.2016
comment
Да, я также делаю это, но я спрашиваю, поскольку CEP также представляет собой таблицу, как запросить механизм CEP, чтобы получить список инициированных событий.   -  person user1281678    schedule 02.12.2016


Ответы (1)


Насколько мне известно, по умолчанию CEP ничего не предоставляет.

Но вы всегда можете сделать это, используя HashMap<String, List<EventBean>>.

Быстрый пример будет выглядеть так:

    HashMap<String, ArrayList<EventBean>> eventsNeeded = new HashMap<String, List<EventBean>>();
    Configuration configuration = new Configuration();
    configuration.addEventType("Event", IEvent.class);
    EPServiceProvider engine = EPServiceProviderManager.getDefaultProvider(configuration);
    EPRuntime runtime = engine.getEPRuntime();
    EPAdministrator admin = engine.getEPAdministrator();
    engine.initialize();

    int limit = 30;
    String query = "Select instanceId, qty from Event where netValue >" + limit;
    eventsNeeded.put(query, new ArrayList<EventBean>());

    admin.createEPL(query).addListener((eventBeans, eventBean1) -> {
        for (EventBean eventBean : eventBeans) {
            eventsNeeded.get(query).add(eventBean);
        } 
    });
    sendEvent(runtime, new Event("X", 10, 1, 100, "A"));
    sendEvent(runtime, new Event("X", 20, -1, 100.0, "A"));
    sendEvent(runtime, new Event("X", 15, 1, 100.0, "B"));
    //You can use eventsNeeded here
person impossible    schedule 10.12.2017