Регистр правил для пользователей
В этой статье я объясню на понятном для пользователей языке, что такое регистр правил и как он применяется для гибких настроек.
Рассмотрим для примера регистр правил, который определяет, какой процент скидки давать на тот или иной товар:
Регистр правил представляет собой упорядоченный набор записей. Обычно для сортировки используется колонка приоритет, по которому записи сортируются по возрастанию от 0 до 999.
В данном примере, для поиска процента скидки последовательно применяются все правила в порядке приоритета, как только с текущей строке произойдет совпадение всех признаков, возвращается значение скидки в текущей строке.
Таким образом, можно достаточно гибко управлять результатом (в данном случае скидкой) при сложных сочетаниях групп номенклатуры, видов номенклатуры, свойств номенклатуры и даже назначать скидки на отдельные позиции.
Колонка приоритет может быть скрыта от пользователя и назначаться автоматически в зависимости от порядка строк (просто строки нумеруются 1, 2, … 999). При ручном назначении по умолчанию записям присваивается средний приоритет 500. Более важные записи ставятся с приоритетом 100-300, менее важные 600-900.
Преимуществом регистра правил является наглядность, все правила собраны в отдельном месте, не нужно заходить в настройки каждой группы, вида номенклатуры. Кроме того, можно обобщать признаки, назначая результат на одинаковые значения признаков.
Обычный pattern matching — матчим филды, потом берем макс приоритет. Это достойно отдельной статьи ?
этот пост для пользователя, чтобы не писать ему письмо с этой же темой. Использовался при разработке ТЗ. Думаю, еще пригодится и для других задач, т.к. регистр правил я применяю часто в своей практике.
В твоём же примере абсолютно непонятно какая скидка у красного блокнота А4.
Приоритеты то совпадают
Молодец, что заметил. Одинаковые приоритеты могут быть, если такие свойства не совпадают. Т.е. если не бывает красных блокнотов А4.
А если сейчас не бывает, а завтра будут?
в данном примере считается, что не будет. Примерно как летающих крокодилов.
Ну, а если такие вещи бывают, то их нужно расписывать с разными приоритетами. 😉