Общие сведения о регистрах правил (УАУ)

Материал из КинтВики
Перейти к: навигация, поиск

Назначение подсистемы

Регистры правил (РП) представляют собой совокупность структуры для хранения информации (наборов правил) и способа ее извлечения. Сведение воедино различных концепций – функциональные зависимости, продукционные системы, таблицы решений, регистры фактов и пр.

Описание задачи, проблемы

Одной из особенностью корпоративных приложений является большое разнообразие входных ситуаций, условий, ограничений, правил. Логика, построенная на операторах "Если То" удовлетворительно описывает лишь самые простые ситуации. При усложнении требований, увеличении количества условностей логика "Если То" перестает быть прозрачной.

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

Обобщение достигается тем, что значениями измерений детерминанта правил могут быть множества (наборы) значений. Самым распространенным множеством является универсум типа ("все значения типа"). Соответственно, одно правило РП может описывать фактически множество различных ситуаций. Более того, РП позволяют контролировать однозначность выборки правила. Если детерминант является ключевым, то противоречивость выборки правил исключена.

Концепция реализации

В самом первом приближении регистр правил представляет собой таблицу с двумя типами колонок. В одном наборе колонок хранятся значения измерений детерминанта, в другом – значения ресурсов корня.

Физический тип таблицы зависит от используемой СУБД. В платформе "1С: Предприятие" для хранения правил могут быть использованы следующие типы данных:

  • Системный уровень – таблица mxl;
  • Пользовательский уровень – справочники, документы, регистры сведений (для V8).

Свойства регистров правил

  • Чем больше мощность множества (количество элементов) значений измерения правила, тем меньшим приоритетом (релевантностью) обладает данное правило.
  • Регистры правил применимы на всех уровнях системы – от правил, установленных разработчиками до бизнес-правил, определяемых пользователями. Существуют:
    • системные РП - структура и значения задаются разработчиками системы,
    • служебные РП - часть структуры задается разработчиками, значения - пользователями,
    • произвольные РП - и структура, и значения задаются пользователями.
  • Отличие регистров правил от регистров фактов заключается в способе обработки пустых (незаданных) значений входного вектора. Для регистров фактов отсутствие во входном векторе одной из координат (значения измерения) означает отсутствие фильтрации по данному измерению (все факты входят в выборку).

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

Примеры использования регистров правил

Существует огромное количество сфер и областей, в которых удобно использование регистров правил.

Можно определить регистры правил для политики ценообразования, запрета отпуска заданного типа товара определенным контрагентам, подстановки типовых операций в зависимости от контекста документа, установки прав доступа к информации и т.п.

Регистр правил настройки скидок может устанавливать отпускные цены в зависимости от клиента и/или его типа, сезонности, региона, филиала и пр.

Рассмотрим, например, задачу выбора типа цены, которая состоит в том, что необходимо по входному контексту (контексту документа), выбрать некоторый тип цены (элемент соответствующего справочника).

Структура соответствующего регистра правил упрощенно может быть следующей:


Пример регистра правил "Установка категории цен"
Вид документа Контрагент Категория цены
Расходная накладная   "Продажа опт."
Расходная накладная ООО РиК "Продажа со скидкой"


Здесь измерениями детерминанта являются атрибуты "Вид документа" и "Контрагент", ресурсом – "Категория цены".

Регистр правил получает на вход конкретное значение детерминанта, например: {Вид документа="Расходная накладная", Контрагент=ООО "РиК"}, и выдает значение корня {Тип цены="Продажа со скидкой"}.

В первой записи регистра значение контрагента отсутствует - данное правило применимо для всех контрагентов.

См. также