Должен ли я использовать структуру отчетности?

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

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

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

  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. Кто-нибудь сталкивался с веб-платформой для создания предикатов и/или с чем-то для сохранения этих данных?


person James    schedule 07.03.2012    source источник


Ответы (2)


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

person Andriy Budzinskyy    schedule 07.03.2012
comment
Я собираюсь посмотреть на слюни. Некоторое время назад я использовал jrules, в которых были деревья решений/таблицы/правила; Я чувствую, что это может быть излишним с нескольких точек зрения - разработка, развертывание набора правил, кривая обучения пользователей для создания новых правил/наборов данных. То, что я искал, — это форма, в которой есть поле со списком, содержащее, скажем, «Количество», «День недели», еще одно сочетание «содержит», «равно», «есть в списке», которое управляет генерацией поле (поля) конечного значения, например. текстовое поле, комбо, список и т. д. Затем кнопка добавления сохраняет текущее правило и запускает другое. Звучит так, как будто машина правил формулирует это так! - person James; 07.03.2012

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

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

Даже встраивание языка сценариев, такого как groovy, может быть хорошим решением.

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

person rdmueller    schedule 16.03.2012