Лучший дизайн шаблона для создания движка правил - PullRequest
3 голосов
/ 16 февраля 2012

Предположим, мне нужно спроектировать механизм правил, в котором в зависимости от правила статической конфигурации цепочка ответственности изменяется во время выполнения.Каков наилучший шаблон проектирования для реализации этой проблемы?

FO e e, g.в зависимости от некоторых конфигураций набор событий в потоке может быть (1) отфильтрован, (2) разбит на подмножества (3) изменен

Для каждого потока клиент может выбрать все 3 или некоторые из трехили ни одного из трех.

Итак, мой конвейер сборки должен быть сконфигурирован во время выполнения на основе конфигурации для каждого потока.

Какой шаблон проектирования является лучшим для достижения этого?

1 Ответ

4 голосов
/ 24 февраля 2012

Я не уверен, что понимаю ваш вариант использования, но есть проекты с открытым исходным кодом, которые, кажется, делают именно то, что вам нужно.

Прежде всего, у вас есть Apache Camel , который позволяет вам настраивать маршруты (статически и / или динамически). Таким образом, вы можете направить потоки событий через каждый компонент вашего конвейера в соответствии с настроенными маршрутами.

В качестве альтернативы или в дополнение к Camel, Drools Fusion и Esper - это два проекта с открытым исходным кодом, которые выполняют комплексную обработку событий (то есть фильтрацию событий, корреляцию, сегрегацию и т. Д.). Они оба поддерживают динамическое добавление / удаление правил / запросов. Таким образом, вместо изменения маршрута вы можете, например, иметь отдельный маршрут в сеансе Drools / Esper и вместо этого просто добавлять / удалять правила / запросы в соответствии с конфигурацией, чтобы делать то, что вам нужно.

Мне кажется, вам не нужно создавать «движок правил». Вы можете просто использовать то, что там.

...