Должен ли я использовать систему отчетности? - PullRequest
4 голосов
/ 07 марта 2012

Чтобы объяснить, что я пытаюсь сделать, возьмем классический пример банковского дела.

У меня есть поток платежей, приходящих с одного банковского счета на другой. Мне бы хотелось, чтобы пользователи моего веб-приложения могли создавать свои собственные предикаты для фильтрации платежей, которые будут формировать входные данные для некоторых отчетов. Я планировал писать отчеты вручную, а не с помощью существующей системы отчетности.

В порядке приоритета я хотел бы, чтобы пользователи могли создавать с помощью веб-интерфейса следующие предикаты:

  1. payment.amount > 100.0
  2. payment.amount > 100.0 || payment.dayOfWeek = TUESDAY
  3. (payment.amount > 100.0 && payment.description.contains("foo")) || payment.dayOfWeek = TUESDAY

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

Я считаю, что это должно быть настолько распространенным требованием, что, по крайней мере, кое-что из этого должно быть уже разработано, но мне трудно точно определить, что именно я пытаюсь найти в Google. Кто-нибудь сталкивался с сетевым каркасом для генерации предикатов и / или чем-то для сохранения этих данных?

Ответы [ 2 ]

2 голосов
/ 07 марта 2012

Я думаю, вы можете использовать Drools для создания и повторного использования бизнес-правил.

0 голосов
/ 16 марта 2012

Механизм бизнес-правил может быть хорошим решением, но он может быть и слишком большим.

На рынке существует множество двигателей правил, и они сильно различаются. Например, http://openrules.com отлично подходит для тяжелого использования, тогда как drools - это больше механизм правил для разработчиков (см. http://java -source.net / open-source / rule-engine для большого списка). двигателей).

Хорошим решением может быть даже встраивание скриптового языка, такого как groovy.

Бит, если вам действительно нужны только те три правила, которые вы описали, я думаю, имеет смысл просто сохранить эти три параметра (количество, searchTerm и день недели) и построить запрос к БД с ними.

...