У нас есть таблица решений, которая не должна выполняться, если значение поля одного из наших объектов фактов не совпадает с одним из (потенциально длинного) списка значений поиска.Содержимое таблицы решений управляется нетехническими пользователями, и мы ищем способ, позволяющий тем же нетехническим пользователям управлять списком значений поиска.
Вот оценка различных подходов, которые мы определили с помощью Drools Workbench и внешних интеграций (при необходимости) с плюсами и минусами.Нам интересно, есть ли более элегантный подход.
Подходы к ограничению таблицы решений для запуска только в том случае, если значение поля соответствует одному из длинного списка потенциальных значений поиска (коды hts):
Список жестких кодов htsкоды для сопоставления в каждой строке в таблице решений в столбце условий
- Плюсы:
- Одно место для управления справочными данными для правила
- Минусы:
- Избыточная информация в каждой строке таблицы
- Беспорядок в управлении длинным разделенным запятыми списком значений совпадений в ячейке таблицы
Управляемое перечисление кодов HTS в рабочей среде drools, используемой в столбце условий электронной таблицы правил
- Плюсы:
- Управление списком HTS в рабочей среде Drools, перечисления просты дляуправление
- Минусы:
- Другой механизм (менее удобный?) для управления списком HTS, чем для управления другими условиями правил (все остальное в загруженной электронной таблице, список HTS управляетсяпрямо в верстаке)
Связанные таблицы решений: 1 таблица решений содержит список кодов hts для правила и устанавливает флаг tat, вызывающий срабатывание таблицы правил
- Плюсы:
- Управление списком HTS в электронной таблице так же, как и остальные правила - согласованное управление
- Минусы:
- Две таблицыдля каждого правила с фильтром HTS / категории продукта
Список кодов HTS, которые хранятся в базе данных и управляются в ней, загружаются динамически как перечисление или через объект данных,правила в электронной таблице
- Плюсы:
- В соответствии с текущим пользовательским подходом - загрузить электронную таблицу hts в пользовательский интерфейс, который загружен в перечисление, на которое ссылается электронная таблица правил drools
- Минусы:
- Отдельный интерфейс для загрузки таблицы перечисления по сравнению с основным листом правил
- Пользовательский интерфейс за пределами рабочей среды
Шаблон правила, а нетаблица решений со всеми данными правил, хранящимися в базе данных
- Плюсы:
- Подход к ссылочным данным в соответствии с существующим механизмом правил, загрузка листов, управление листами в пользовательский интерфейс
- Все справочные данные обрабатываются одинаково (хранятся в базе данных, загружаются через пользовательский интерфейс)
- Минусы:
- Правила управляются в отдельном интерфейсе от справочных данных (второстепенные?)
- Правило логики, отображающее входные данные для бинов или коэффициентов, отделенных от фактических данных бина и коэффициентов (младший?)