Композитные функции¶
Создание функции¶
Для создания композитной функции:
Убедитесь, что включен режим черновика.
Нажмите кнопку Добавить функцию, расположенную в нижней части списка функций.
В результате действия над кнопкой откроется список вариантов создания.
Выберите пункт "Композитная функция".
В результате действия отроется окно настройки новой функции.
Укажите основные настройки функции: Имя, Отображаемое имя, Описание.
Установите необходимые режимы обработки функции: глобальный и/или локальный.
Создайте необходимую функцию с помощью редактора, используя готовые функции, константы, условия (см. пример).
Сохраните изменения. Нажмите кнопку Сохранить, расположенную в верхнем правом углу окна настройки функции.
После того как все данные введены и сохранены, опубликуйте черновик.
Примечание
Если композитная функция соблюдает ряд условий реализации, то в карточке записи будут отображаться ошибки качества данных напротив атрибутов, где сработала композитная функция (по аналогии со стандартными функциями). Функция должна соблюдать одновременно оба условия реализации:
Блоки композитной функции должны иметь прямое подключение к выходным портам всей композитной функции.
Входные порты функции должны быть соединены с входными портами композитной функции напрямую, либо через блок условия.
Работа с редактором функций¶
Редактор композитных функций содержит основную рабочую область - в центре экрана; а также перечень готовых функций, блоки констант и условий - в левой части экрана.
Добавление блока в рабочую область осуществляется методом drag-n-drop. Для этого выберите необходимый блок из перечня слева, зажмите кнопку и перетащите его в основную рабочую область. Блоки можно перемещать в пределах основной рабочей области редактора.
Удаления блока доступно при нажатии кнопки в правом верхнем углу элемента.
Вход всегда расположен с левой стороны блока, Выход - с правой стороны блока.
Связи между блоками устанавливаются от входа к выходу. Для этого необходимо зажать входной круг и протянуть линию до выходного круга. Если типы портов несоответствуют друг другу - на экране отобразится сообщение об ошибке.
Блоки функций¶
Блок простой или композитной функции может иметь по одному и более входов и выходов. Вход отображается как белый сплошной круг с границей синего цвета, выход - сплошной синий круг.
Блок константы имеет один выход (сплошной синий круг), так как сам передает данные (константу). При нажатии на "Задать значение" открывается модальное окно, в котором указывается тип значения и само значение константы.
Константа подключается ко входу блока функции или блока условия. Подключение означает передачу константы. При этом блок функции или блок условия могут быть подключены одновременно с блоком константы.
Блок условия всегда имеет один логический вход (сплошной оранжевый круг).
Логический вход предназначен для управления условиями, от него приходит значение истина или ложь, и в зависимости от этого выполняются действия соответствующих выходов.
Условие добавляется при нажатии кнопки . В модальном окне задаются параметры порта.
Вход отображается как белый сплошной круг с границей синего цвета.
Выход отображается справа и разделен на 2 ветки: "Истина" - сплошной бирюзовый круг, "Ложь" - сплошной красный круг.
Не все созданные входы/выходы должны использоваться. Блок выбирает, какие из входов будут заполнены, а какие останутся пустыми. Если значения не заполнены, то блок, который соединен с исходящими портами блока "Условие", все равно будет отрабатывать с пустыми значениями.
Клонирование функции¶
Для клонирования композитной функции:
Убедитесь, что включен режим черновика.
Наведите курсор на строку необходимой композитной функции и нажмите кнопку Клонировать функцию в правом конце строки.
В открывшемся окне заполните Имя и Отображаемое имя новой функции.
Нажмите "Сохранить". В результате действия функция будет клонирована, и откроется окно с параметрами функции.
После того как все данные введены и сохранены, опубликуйте черновик.
Пример настройки композитной функции¶
Ниже приведен пример создания композитной функции, которая проверяет серийный номер паспорта и добавляет подпись "Паспорт" перед номером для формирования упрощенных отчетов.
Создайте новую композитную функцию.
Укажите основные настройки функции:
Имя - "pass_number".
Отображаемое имя - "Проверка номера паспорта".
Описание - "В зависимости от длины строки добавляет подпись перед серийным номером паспорта".
Включите режимы обработки функции: Глобальный и Локальный.
Следующие действия выполняются в области редактора функций.
Добавьте новый порт в блоке "Входящие порты", нажав кнопку "Добавить порт". Заполните параметры порта и нажмите "Продолжить":
Имя порта - введите "port1".
Отображаемое имя порта - введите имя "Строка на проверку".
Тип порта - выберите "Простой" тип.
Тип значения - выберите тип "Строка".
Слева в перечне готовых функций найдите функцию "ПроверкаДлиныСтроки" и перетащите ее в основную рабочую область, удерживая кнопку .
Соедините выход входящего порта "Строка на проверку" с одноименным входом функции. Для этого наведите курсор на синий кружок входящего порта, зажмите левую кнопку мыши и протяните связь к белому кружку входа функции, после чего отпустите кнопку. Остальные входы и порты соединяются аналогичным методом.
Функция проверяет количество символов строки в заданном диапазоне при помощи входов "Минимально разрешенное количество символов" и "Максимально разрешенное количество символов". В рассматриваемом случае требуется точное значение, поэтому оба входа должны содержать одинаковые значения.
Перетащите в рабочую область блок константы. Задайте значение константы с помощью одноименной кнопки: выберите тип значения - Целое число, значение - "12" (серийный номер паспорта с пробелами).
Соедините выход константы со входами для минимального и максимального значений.
На выходе функция проверки длины строки возвращает признак проверки: истина (true) или ложь (false). Выход имеет тип "Логический".
Перетащите блок "Условие" в рабочую область редактора.
Соедините логический выход функции проверки длины с логическим входом условия (оранжевый кружок).
Добавьте порт "Проверка значения" для блока "Условие".
Соедините вход блока "Условие" с выходом входящего порта "Строка на проверку". Обработка функции будет осуществляться по алгоритму:
При запуске функции значение атрибута из входящего порта передается в функцию проверки длины строки, осуществляется проверка по заданным условиям.
Далее результат проверки передается в блок "Условие".
Блок "Условие" требует для работы входные данные. В рассматриваемом примере блок обращается к тому же атрибуту входящего порта.
Затем, в зависимости от результата работы функции "ПроверкаДлиныСтроки", в блоке "Условие" выполняются действия из веток true (бирюзовый кружок) или false (красный кружок).
Перетащите функцию "Соединить" в рабочую область редактора.
Добавленный блок может принимать на вход до 5 строк и впоследствии объединять их в одну строку. Входы расположены в порядке объединения, т.е. строка из входа 1 будет первой, строка из входа 5 – последней.
Соедините выход блока "Условие" из ветки true со вторым входом функции "Соединить".
Укажите для первого входа константное значение: перетащите блок "Константа", выберите тип "Строковый" и введите текст "Паспорт " (с пробелом в конце, в противном случае строки не будут содержать пробелов).
Добавьте новый порт в блоке "Исходящие порты", нажав кнопку Добавить порт. Заполните параметры порта и нажмите "Продолжить". Тип исходящего порта должен соответствовать типу результатов обработки. Соответственно, для блока функции "Соединить" исходящий порт будет иметь тип "Строковый".
Имя порта - введите "port2".
Отображаемое имя порта - введите имя "Преобразованное значение".
Тип порта - выберите "Простой" тип.
Тип значения - выберите тип "Строка".
Соедините выход функции "Соединить" - "Результат выполнения" со входом исходящего порта "Преобразованное значение".
Сохраненная композитная функция будет доступна в перечне функций и может использоваться как в правилах качества данных, так и в качестве блока для других композитных функций.