Режимы обработки функций
Контекст выполнения позволяет применять правила качества как ко всей структуре атрибутов реестра/справочника, так и к отдельным ее частям, и реализуется 2 режимами обработки:
Глобальный (GLOBAL). Режим обработки, при котором функция обрабатывает порт единожды, вне зависимости от объема коллекции атрибутов, которые в него попадают. Детали режима:
Однократная обработка — функция выполняется один раз для всего набора данных.
Широкий охват — можно выбирать атрибуты на любом уровне вложенности структуры.
По умолчанию — основной режим для большинства стандартных проверок.
Подходит для проверки связей между разными уровнями данных и комплексных валидаций всей структуры.
Может нагружать систему, если валидируются слишком большие структуры атрибутов или если режим применяется повсеместно для множества правил качества.
Локальный (LOCAL). Режим обработки, при котором функция обрабатывает порт столько раз, сколько атрибутов было собрано в коллекцию. Детали режима:
Проверяет только нужные атрибуты. Вы явно указываете, какие данные должны быть обработаны.
Позволяет избегать ошибок обработки, исключая проблемные атрибуты.
Лучшая производительность, так как не тратятся ресурсы на ненужные проверки.
Работа с вложенными структурами. Точечная проверка элементов внутри комплексных атрибутов
Подходит для проверки форматов отдельных полей, валидации элементов массивов и сложных структур и ситуаций, когда глобальная проверка вызывает ошибки.
Как выбрать режим?
Критерий |
GLOBAL |
LOCAL |
Проверка связей между уровнями |
✓ |
✗ |
Точечная проверка отдельных атрибутов |
✗ |
✓ |
Работа со сложными структурами |
✗ |
✓ |
Обработка агрегированных значений |
✓ |
✗ |
Автоматическое исключение проблемных данных |
✗ |
✓ |
Особенности контекста выполнения:
Режим LOCAL исключает из обработки те атрибуты, которые могут привести к ошибкам выполнения функции в процессе сбора коллекции атрибутов.
В режиме LOCAL функция обрабатывает порт столько раз, сколько атрибутов было собрано в коллекцию;
В режиме LOCAL могут быть выбраны порты либо выше по структуре, либо 1 уровень ниже от указанного комплексного атрибута;
Атрибуты, выбранные выше контекста, являются прямыми предками атрибутов (родители и прародители), указанных в контексте;
Каждая стандартная функция обработки данных поддерживает один из режимов. Для отдельных стандартных функций доступен выбор между режимами. Информация о режиме обработки указана в разделе "Функции" при выборе стандартной функции из списка;
При создании композитной функции доступен выбор возможных режимов обработки;
При реализации сторонней функции также необходимо указание значения параметра, который указывает доступные режимы обработки;
Upath-выражение, указанное в поле "Контекст выполнения" должно совпадать с выражениями входящих и исходящих портов.
Режим обработки GLOBAL
В режиме GLOBAL в качестве значения контекста выполнения указывается имя реестра. Могут быть выбраны любые порты на любом уровне вложенности.
Режим GLOBAL подразумевает, что во входные и выходные порты могут быть выбраны атрибуты на любом уровне вложенности. Запуск и фильтрация будут выполнены в зависимости от записей выбранного комплексного или записи верхнего уровня.

Рисунок 1 – Режим обработки GLOBAL
Режим обработки LOCAL
В режиме LOCAL в качестве значения контекста выполнения указывается комплексный атрибут (обозначение 2.1.2 на Рисунке 2).
Режим LOCAL ограничивает возможности выбора портов в пределах одной ветки структуры. При этом если в режиме LOCAL указан 2 уровень вложенности, то выбор портов ниже 3 уровня недоступен и приведет к ошибке.
Функция будет запущена для всех записей выбранного комплексного атрибута.
Многие сложности в работе с данными возникают из-за несоответствия типов или структуры. Локальный режим специально разработан для решения этих проблем:
Защита от ошибок — не пытается обработать несовместимые типы данных.
Четкая область действия — предотвращает случайную проверку "лишних" атрибутов.
Гибкость — позволяет работать с отдельными элементами сложных структур.
Предсказуемость — каждый атрибут обрабатывается независимо.
Примечания:
Если функция обрабатывает входящие порты типов – целочисленный, строковый, численный, дата, дата/время, время, логический – то во входящие и исходящие порты правила могут попасть только простые атрибуты выбранного комплексного, или простые атрибуты родителей и прародителей.
Если функция обрабатывает входящие порты типов – любой, запись – то может быть выбран комплексный атрибут.
Вне зависимости от типа порта – выбрать атрибут из другой ветки или подсветки атрибутов нельзя. Запись верхнего уровня также можно использовать, с учетом всех ограничений.
Ограничения:
В Юниверс MDM существуют ограничения для функций обработки данных, которые решает использование режима LOCAL:
Отдельные функции (например, арифметические) не поддерживают списки значений во входящих портах, но могут быть сконфигурированы таким образом, что возникают ошибки;
Исходящие порты могут содержать несогласованные и противоречивые результаты запуска функций;
Функция может не учитывать заполненность атрибутов на всех уровнях вложенности реестра, что также приводит к ошибкам в процессе выполнения.

Рисунок 2 – Режим обработки LOCAL