Наборы правил качества
Предупреждение
В версии 6.10.2 реализована работа правил качества для атрибутов связи и классификатора.
Создание набора
Чтобы создать набор правил:
Убедитесь, что включен режим черновика и выбран черновик.
Убедитесь, что в разделе "Качество данных" активна закладка "Наборы правил".
Нажмите кнопку
Создать набор, расположенную в правой части заголовка таблицы.
В результате действия откроется выдвижная панель с настройками нового правила.
Заполните основные настройки:
Имя. Логическое имя набора.
Отображаемое имя. Имя, которое будет отображаться пользователям.
Описание. Опционально. Дополнительная информация о наборе.
Укажите состав правил качества в наборе:
Правило. Выпадающий список с правилами качества.
Контекст. Контекст выполнения для выбранного правила. Использует выражение Upath, где задаются объекты системы, для которых будет применяться выбранное правило. Подробнее о Upath-выражениях см. ниже
Входящие порты правила качества. Позволяют выбирать атрибут/запись, для которых будет выполняться правило качества. Состав параметров порта зависит от выбранного правила качества и функции, которая была задана в этом правиле.
Выбрать атрибут - задание атрибутов в виде Upath-выражения (описание см. ниже).
Задать константу - задание одиночного значения константы или в некоторых случаях - массива значений.
Исходящие порты правила качества. Позволяют выбирать атрибут/запись, в которые будут выгружаться результаты выполнения правила качества. Заполняются по правилам, аналогичным Входящим портам. Исходящие порты доступны для редактирования, только если в правиле качества включен режим "Обогащение".
Примечания:
При работе с исходящими портами правил качества рекомендуется избегать атрибутов типа Кодовый/Альтернативно кодовый. Значения являются уникальными и не редактируются после первой публикации.
При необходимости добавьте одно или несколько правил качество в набор. Нажмите кнопку Добавить, расположенную в правой части заголовка настроек набора. При добавлении нового правила, в окне набора правил, происходит автоматическая прокрутка.
Области с правилами качества для удобства можно свернуть кликом по заголовку.
При необходимости удалите правило качество из набора. Нажмите кнопку Удалить, расположенную в правой части строки "Правило" соответствующего правила.
Сохраните изменения. Нажмите кнопку Сохранить, расположенную в верхнем правом углу выдвижной панели.
Далее перейдите в закладку Назначение правил для назначения правил качества на объекты системы.
После того как все данные введены и сохранены, опубликуйте черновик.
Примечания:
Правила обогащения применяются и обрабатываются перед правилами валидации.

Рисунок 1 – Список наборов правил

Рисунок 2 – Свойства нового набора правил
Редактирование набора
Редактирование доступно для каждой закладки в разделе "Правила качества".
Для редактирования:
Перейдите в закладку "Наборы правил".
Выберите требуемую строку в списке.
В результате откроется выдвижная панель. Некоторые поля, например, логическое имя, будут недоступны для изменения.
Внесите изменения.
Сохраните изменения. Нажмите кнопку Сохранить, расположенную в правом верхнем углу выдвижной панели.
После того как все данные введены и сохранены, опубликуйте черновик.
Удаление набора
Удаление доступно для каждой закладки в разделе "Правила качества".
Для удаления в закладке "Наборы правил":
В списке наборов правил отметьте флагом требуемые наборы правил.
Кнопка "Создать набор" сменится на кнопку Удалить. Нажмите кнопку.
Подтвердите действие и опубликуйте черновик.
Upath-выражения
Upath-выражения используются в следующих параметрах набора правил: Контекст выполнения, Входящие и Исходящие порты.
Контекст выполнения. Позволяет задавать область применения для входящих портов: Справочники, Реестры, Связи, а также Классификации.
Контекст необходимо заполнять, чтобы избежать ошибок применения правил качества для всех сущностей.
Контекст можно не заполнять только для атрибутов записи.
Контекст можно не заполнять, если используются разные атрибуты сущностей для обогащения с выходным портом в атрибуте записи.
Более подробно узнать о заполнении контекста см. режимы обработки функций.
Существуют два параметра, которые влияют на работу Upath и могут вызвать ошибку:
Если контекст не заполняется, то пользователь получает все наборы атрибутов сущности (Записи, комплексного атрибута, Атрибутов связи и классификации).
Тип функции и используемые входные порты: функция использует входной тип строки и находит по Upath лишь один атрибут, то ошибки не будет, если будет найдет найден больше, чем один атрибут, то возникнет ошибка.
Правило будет работать корректно, если получает правильное количество атрибутов в соответствии со своим входным/выходным типом порта.
Заполнение контекста увеличивает стабильность работы правила качества, но снижает диапазон доступных атрибутов сущностей.
Входящие и Исходящие порты. Позволяют уточнять и задавать конкретные атрибуты или запись целиком, реестры, справочники, связи, а также классификаторы, их версии и узлы. Возможна любая глубина вложенности.
Для комплексного атрибута необходимо выбрать вложенные в него атрибуты, поскольку выбор комплексного атрибута целиком недоступен.
Для классификатора последовательно указывается тип объекта (classification), далее через разделитель "|" указывается имя классификатора (industrial_machine), его версия (machine) и необходимый узел (milling), затем в конце - атрибут (type). Пример: "classification:industrial_machine|machine|milling:{}.type".
Кнопка "Сменить вид" позволяет переключаться между 2 видами отображения: вид Upath и человекочитаемый путь атрибута с отображаемыми именами.
Примечания:
В DRAFT фазе автоматически работают только правила валидации, правила обогащения применяются только в ручном режиме.
При перемещении узла классификатора с атрибутом, на который ссылается Upath, потребуется корректировка Upath, чтобы правило продолжило работать.
Синтаксис UPath
Принцип построения Upath-выражений:
Имена атрибутов разделяются точками: <комплексный_атрибут>.<вложенный_атрибут>;
[ ] – фильтровать по индексу записи в комплексном атрибуте;
{ } – добавить в порт запись целиком (тип порта: любой или запись);
{имя_атрибута:значение_атрибута} – фильтровать по точному значению вложенного атрибута. Только для комплексных атрибутов.
Значения для фильтрации указываются в зависимости от типа атрибута:
Строковый тип, Перечисление, Ссылка на справочник со строковым кодовым атрибутом: Person_Doc{Doc_Status:'not valid'}.Doc_type
Целочисленный тип: Material{Units:12345}.Height
Численный тип: Material{Width:12.345}.Height
Логический тип: Process{Complete:false}.Result
Дата: Person_Doc{Issue_Date:2010-01-12}.Doc_type
Время: Service{Start_Time:15:32:54}.Certificate
Дата/время: Service{Last_date:2018-04-28T15:32:54}.Certificate
Значения атрибутов: Строковый, Перечисление, Ссылка на справочник (со строковым кодовым атрибутом) обрамляются в одинарные кавычки. Для всех прочих типов значения атрибута кавычки не используются, например, person{birthday:yyyy-mm-ddTHH:mm:ss}
Совет
Пример фильтрации по значению атрибутов: Contact{Contact_Type:'home'} позволяет выбрать коллекцию комплексных атрибутов "Контакты", у которых вложенный атрибут "Тип контакта" имеет значение "Домашний" (тип порта: любой или запись)
Совет
Пример фильтрации по индексу записи: Person_Doc[2].Doc_Series позволяет выбрать коллекцию атрибутов "Серия" из состава комплексного атрибута "Документы" с индексом 2
Для построения более сложных Upath-выражений см. официальную документацию и синтаксис языка выражений MVEL.
Пример фильтрации с учетом условий:
Существует реестр persons, имеющий комплексный атрибут contacts, в составе которого созданы 2 атрибута: contact_type и contact_value.
Для него необходимо создать правило качество с выполнением условия: если атрибут contact_type имеет значение "email", то для атрибута contact_value требуется применить правило обогащения, например, очистка от пробелов.
Upath-выражение будет иметь вид: register:persons:{}.contacts{record.attributes['contact_type'].value == 'email'}.contact_value
где record - это корневой контекст выполнения выражения типа DataRecord.class. Выражение будет выбирать только атрибуты (attributes) с именем contact_value, и только те, у которых атрибут contact_type имеет значение 'email'.
Далее созданный набор правил, содержащий функцию "Удаление пробелов", назначается на реестр persons. При попытке опубликовать запись с заполненным атрибутами: contact_type = email и contact_value = mymail@gmail.com (последний содержит лишние пробелы в начале и конце значения) - пробелы будут удалены за счет отработки правила обогащения.