Кто как укладывает бизнес правила в БД?

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

Например:
1. Eсли у заказа количество позиций=2 ТО Цена ниже на 10р

но так же более сложные

2. если заказ содержит (количество_позиций=2 и город_отправки ="Москва") или (Город="Санкт-Петербург") ТО доставка осуществляется компанией "Рога и копта"

Поля по которым может быть сравнение динамические, правил для одного заказа может быть много
  • Вопрос задан
  • 2371 просмотр
Решения вопроса 2
Таблица принятия решений (таблица решений) - очень эффективное решение для такого рода задач.
Из русской Википедии:
Таблица принятия решений (таблица решений) — способ компактного представления модели со сложной логикой. Аналогично условным операторам в языках программирования, они устанавливают связь между условиями и действиями. Но, в отличие от традиционных языков программирования, таблицы решений в простой форме могут представлять связь между множеством независимых условий и действий.

5a15e62220a7b529500711.png
На английском - Decision table - можно найти гораздо больше полезного материала, чем на русском. Допустим, это видео с объяснением.
Таблицы можно хранить в СУБД и обмениваться при помощи CSV.
IBM и многие другие компании применяют их в разных своих продуктах. Особенно полезны для описания деятельности бухгалтерии, складского учета и пр.
Ответ написан
egor_nullptr
@egor_nullptr
Учитывая, что правила могут быть совершенно разные и количество участвующих атрибутов заранее не известно, то сам собой напрашивается шаблон проектирования "Интерпретатор". Правила хранятся в виде простейшего кода, который исполняется в песочнице интерпретатора (стороннего или собственной разработки).
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Бизнес-логика в базе - это такое себе. Логика может меняться, усложняться, становиться динамической. По возможности, приложение не должно знать о базе.
Ответ написан
@AndryG
У нас говорят на подобную задачку "Ты собираешься на написаном для тебя интерпретаторе написать свой интерпретатор для другого программиста?"

Даже если вы напишете свой удобный язык, то программировать на нем будете лишь вы. И закодировано на нем будет с десяток различного рода правил, потому как бизнесу много на самом деле и не надо. Это мы программисты пытаемся объять невпихуемое, а бизнес работает по понятным и простым правилам. )

Предлагаю вам написать пяток классов, которые с кучкой переключателей и флажков реализуют тот самый десяток скелетов бизнесправил. Просто, надежно, красиво.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы