В таких случаях я хотел бы попытаться обобщить правила как можно более простые. Таким образом, у вас может быть плоское правило сокращения, которое снимает х%. Тогда у вас может быть правило, основанное на условиях, так что вы можете сказать, снять x%, когда баланс больше, чем y.
После того, как вы обобщите свои правила, я бы реализовал правила в бизнес-логике в их общей форме, и в вашей базе данных вы могли бы хранить типы действующих в настоящее время правил и их входные данные.
И вы можете сделать это без планирования времени простоя, добавление нового правила должно быть таким же простым, как обновление БД, и если есть новый тип правила, вы можете просто развернуть новый фрагмент кода. Конечно, это зависит от вашего окружения, я знаю, что в .net это должно быть прямо вперед.
Я работал над действительно забавной системой обработки, основанной на правилах, где мы по существу построили двоичное дерево операндов And & Or, операторы которых возвращали бы true или false, если дерево возвращало true, мы выполняли действие. Все это было сериализовано в Xml, что позволило механизму хранения не зависеть от типов правил и требований к данным.
Редактировать
Система, основанная на правилах, может быть очень мощной. Я использовал их, чтобы помочь найти виджеты, разбросанные по тысячам различных запасов, и определить лучшее место для покупки виджетов на основе любого количества критериев. Я видел, как они привыкли завоевывать детали, например, в автомобильном секторе, OEM-производители любят конкурировать на деталях AM, но только в определенных случаях.
Возможно, вы определили расширенный набор правил, и когда элемент проходит по цепочке, вы можете найти другие правила. Правило может состоять из выражения и действия. Выражение может быть выражено в виде дерева подусловий, которое оценивается как истинное или ложное, когда его действие выполняется.
Если вы используете .net, вы на самом деле можете построить довольно динамичную систему с использованием дерева выражений и динамически создавать лямбы, которые могут представлять операнды и действия.
Существуют встроенные механизмы правил, которые могут помочь ускорить процесс, но я никогда не находил один достаточно дешевый или достаточно базовый для своих нужд.
Расширение этой концепции, на мой взгляд, является программированием рабочих процессов. Поэтому, когда приходит депозит, скажем, если после выполнения ваших правил депозит будет> 25%. И в этом случае вы требуете, чтобы сотрудник одобрил это дело. Механизм рабочего процесса может инкапсулировать логику этого типа и выразить ее более гибким способом, чем традиционное кодирование. Но со всеми вещами есть много минусов. Каждый раз, когда я начинал свой путь с использования механизма рабочих процессов, он заканчивал тем, что в конце концов был потрошен по разным причинам, но обычно потому, что наши рабочие процессы слишком просты, чтобы оправдать затраты на изучение механизма.