Регистры правил. Знакомство с концепцией
Дмитрий Малюгин, Корпоративные информационные технологии
Описание задачи, проблемы
Одной из главных проблем корпоративных приложений является большое разнообразие входных ситуаций, явных и неявных условностей, ограничений, бизнес-правил. Логика, построенная на операторах "Если То" удовлетворительно описывает лишь самые простые ситуации. При усложнении требований, увеличении количества условностей логика "Если То" перестает быть прозрачной. Регистры правил позволяют справиться с разнообразием входных ситуаций, сводя их к нескольким заранее определенным.
Это означает, что в регистре правил могут содержаться не все возможные значения детерминанта ситуации (декартово произведение пространств значений измерений), а только некоторые обобщающие. Такое обобщение достигается тем, что некоторые значения измерений детерминанта правил не определены (правила "для всех"), другие представляют собой множество значений. Соответственно, одно правило может описывать множество различных ситуаций (редукция ситуаций). Более того, РП позволяют контролировать однозначность выборки правила. Если детерминант является ключевым (a это требуется в большинстве случаев), то противоречивость выборки правил исключена "в зародыше".
Концепция решения
В самом первом приближении все просто — РП это таблица с двумя типами колонок. В одном наборе колонок хранятся значения измерений детерминанта, в другом — значения ресурсов корня. Физический тип таблицы зависит от используемой СУБД. В платформе "1С:Предприятие" для хранения правил могут быть использованы следующие типы данных:
- Системный уровень — таблица mxl;
- Пользовательский уровень — справочники, документы, регистры сведений V8.
Инварианты, принципы
- Чем больше мощность множества (количество элементов) значений измерения правила, тем меньшей степенью соответствия (приоритетом) обладает данное правило.
- Общий принцип для всех подсистем подобного рода — применимость общего подхода на всех уровнях системы — от разработчиков до конечных пользователей. В соответствии с данным принципом существуют системные РП (структура и значения задаются разработчиками системы), служебные РП (часть структуры задается разработчиками, значения — пользователями) и произвольные РП (и структура, и значения задаются пользователями).
- Есть важное отличие регистров правил от регистров фактов. Касается способа обработки пустых (незаданных) значений входного вектора. Для регистров фактов отсутствие во входном векторе одной из координат (значения измерения) означает отсутствие фильтрации по данному измерению (все факты входят в выборку). Для регистра правил пустое значение координаты входного вектора означает неопределенное (неизвестное) значение. Соответственно в выборке должны остаться только те правила, у которых значение данного измерения также пусто ("для всех значений").
Базовые статьи
Познакомиться с основами концепции можно из следующих работ:
- Регистры правил. Общие принципы — изложены основы концепции в первом приближении.
- Регистры правил. Развитие парадигмы — более детальное вникание в тему и уточнение концепции.
При чтении данных работ следует иметь ввиду, что некоторые их положения устарели и пересмотрены, что, однако, не влияет на общие принципы концепции.