Предоставить общий оператор запроса для всех конкретных событий - PullRequest
0 голосов
/ 04 февраля 2019

следующий реальный вариант использования, который уже был реализован нашей компанией:

Мы создали приложение с rest api в качестве оболочки вокруг esper java api.Пользователь может определить его схему карты и оператор запроса.Каждое событие (instanceof MapEventBean), отправляемое пользователем (в виде JSON), имеет один общий параметр (каждый раз с разными значениями), который необходимо добавить в карту в фоновом режиме к событию пользовательской карты в качестве дополнительной пары ключ-значение.

Проблема: чтобы получить этот дополнительный параметр с помощью UpdateListener, пользовательские схемы и оператор запроса должны быть расширены программно по этому атрибуту.

Например:

Определяемая пользователем схема: создать схему карты Имя как (...)

Прог.измененная схема: создать имя схемы карты как (дополнительная карта атрибута, ...)

Пользовательский запрос stmt: выберите foo, бар из имени

Prog.модифицированный запрос stmt: выберите AdditionalAttribute, foo, bar из Name

Вопрос: подход работает, но он очень подвержен ошибкам или не слишком независим, как нам хотелось бы.
Так что вопрос: Любая возможность определить общий запрос stmt (например, выбрать дополнительный атрибут для каждого события ...) или сказать слушателю обновления, чтобы он получал конкретный атрибут в каждом успешном запросе, независимо от того, был ли он определен в пользовательском параметре stmt или нет.

Заранее спасибо!

Обновление: я уже рассмотрел некоторые возможности, такие как NamedWindows, но проблема в том, что эти дополнительные атрибуты должны принадлежать каждому конкретному событию, то естьатрибуты должны быть извлечены из шаблона слушателем обновления одновременно с событием self.

1 Ответ

0 голосов
/ 04 февраля 2019

Существует API объектной модели оператора, который вы можете использовать для изменения запросов без выполнения строковых манипуляций.Ссылка на документацию для API: http://esper.espertech.com/release-8.0.0/reference-esper/html_single/index.html#apicompiler-soda

...