Перейти к содержимому

Бизнес-правила и ограничения

Бизнес-правило обычно существует независимо от программной реализации. Оно описывает порядок работы предметной области: кто что имеет право делать, при каких условиях объект может изменить состояние, какие значения допустимы, какие события должны быть зафиксированы. Система может автоматизировать проверку правила, частично поддерживать его или только хранить данные для контроля, но само правило не возникает из кода.

Ограничение отличается тем, что задаёт рамку проектного решения. Например, “использовать PostgreSQL”, “поддерживать только внутреннюю сеть”, “не хранить персональные данные за пределами организации” — это ограничения. Они могут быть техническими, организационными, правовыми или ресурсными. Ограничение не описывает норму предметной области напрямую, но сильно влияет на архитектуру и реализацию.

Бизнес-правила удобно разделять по типам:

Тип правилаЧто описываетПример
Правило допустимостикогда действие разрешеностудент может записаться только на свободный интервал
Правило расчётакак получить значениеитоговая сумма заказа равна сумме позиций с учётом скидки
Правило классификациикак определить категориюобращение считается срочным, если связано с остановкой сервиса
Правило жизненного циклакак меняется состояниеутверждённая заявка не возвращается в черновик без отмены согласования
Правило полномочийкто имеет право действоватьтолько преподаватель может отменить свой интервал консультации
Правило фиксации событиячто нужно зарегистрироватькаждая смена статуса заявки должна попадать в журнал

Ограничения тоже бывают разными:

Тип ограниченияПример влияния
Техническоевыбранная СУБД влияет на хранение и транзакции
Организационноеработа только в рабочее время влияет на сценарии обработки
Правовоетребования к персональным данным влияют на доступ и хранение
Ресурсноеограниченный срок влияет на объём автоматизации
Интеграционноевнешний сервис доступен только через заданный API

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

Например, правило “заявку нельзя редактировать после утверждения” влияет сразу на несколько решений. В сценарии появляется исключительный поток при попытке редактирования. В процессной модели возникает условие “заявка утверждена?”. В концептуальной модели нужен объект “заявка” и состояние “утверждена”. В технической модели должна появиться проверка перед изменением. В данных может потребоваться хранить статус и историю его изменения.

Поэтому правило нельзя держать только “в голове”. Его нужно сформулировать достаточно явно, чтобы потом увидеть, где оно проверяется и какие элементы модели от него зависят.