Композитные функции

Создание функции

Для создания композитной функции:

  1. Убедитесь, что включен режим черновика.

  2. Нажмите кнопку image3 "Создать", расположенную в нижней части списка функций.

  3. В результате действия над кнопкой откроется список вариантов создания.

  4. Выберите пункт "Композитная функция".

  5. В результате действия отроется окно настройки новой функции.

  6. Укажите основные настройки функции: Имя, Отображаемое имя, Описание.

  7. Установите необходимые режимы обработки функции: глобальный и/или локальный.

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

  9. Сохраните изменения. Нажмите кнопку image2 "Сохранить", расположенную в верхнем правом углу окна настройки функции.

  10. После того как все данные введены и сохранены, опубликуйте черновик.

Примечание

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

  • Блоки композитной функции должны иметь прямое подключение к выходным портам всей композитной функции.

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

Работа с редактором функций

Редактор композитных функций содержит основную рабочую область - в центре экрана; а также перечень готовых функций, блоки констант и условий - в левой части экрана.

  • Блок добавляется в рабочую область методом drag-n-drop. Для этого выберите необходимый блок из перечня слева, зажмите кнопку image4 и перетащите его в основную рабочую область. Блоки можно перемещать в пределах основной рабочей области редактора.

  • Удаление блока доступно при нажатии кнопки image5 в правом верхнем углу элемента.

  • Вход всегда расположен с левой стороны блока, Выход - с правой стороны блока.

  • Связи между блоками устанавливаются от входа к выходу. Для этого необходимо зажать входной круг и протянуть линию до выходного круга. Если типы портов несоответствуют друг другу - на экране отобразится сообщение об ошибке.

  • Редактирование порта доступно при наведении курсора на нужный блок и нажатии на кнопку image9 справа от строки порта. В открывающемся модальном окне доступны для изменения все поля, кроме "Имя порта". При нажатии кнопки "Редактировать" производится проверка возможности изменения порта.

    • Если изменяемый порт не соответствует связанным с ним портам по типу или типу значения - отобразится соответствующая ошибка.

    • Доступно редактирование входящих и исходящих портов, а также портов блока "Условие".

    • При изменении порта блока "Условие" изменяются все порты с тем же системным именем внутри этого блока.

  • Удаление порта доступно при наведении курсора на нужный блок и нажатии на кнопку image10.

Блоки функций:

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

  • Блок константы имеет один выход (сплошной синий круг), так как сам передает данные (константу). При нажатии на "Задать значение" открывается модальное окно, в котором указывается тип значения и само значение константы.

    • Константа подключается ко входу блока функции или блока условия. Подключение означает передачу константы. При этом блок функции или блок условия могут быть подключены одновременно с блоком константы.

  • Блок условия всегда имеет один логический вход (сплошной оранжевый круг).

    • Логический вход предназначен для управления условиями, от него приходит значение истина или ложь, и в зависимости от этого выполняются действия соответствующих выходов.

    • Условие добавляется при нажатии кнопки image3. В модальном окне задаются параметры порта.

    • Вход отображается как белый сплошной круг с границей синего цвета.

    • Выход отображается справа и разделен на 2 ветки: "Истина" - сплошной бирюзовый круг, "Ложь" - сплошной красный круг.

    • Не все созданные входы/выходы должны использоваться. Блок выбирает, какие из входов будут заполнены, а какие останутся пустыми. Если значения не заполнены, то блок, который соединен с исходящими портами блока "Условие", все равно будет отрабатывать с пустыми значениями.

Клонирование функции

Для клонирования композитной функции:

  1. Убедитесь, что включен режим черновика.

  2. Наведите курсор на строку необходимой композитной функции и нажмите кнопку image1 "Клонировать функцию" в правом конце строки.

  3. В открывшемся окне заполните Имя и Отображаемое имя новой функции.

  4. Нажмите image2 "Сохранить". В результате действия функция будет клонирована, и откроется окно с параметрами функции.

  5. После того как все данные введены и сохранены, опубликуйте черновик.

Просмотр композитной функции

Для просмотра композитной функции:

  1. Убедитесь, что режим черновика отключен.

  2. Выберите необходимую композитную функцию.

  3. Нажмите кнопку image8 "Просмотр", расположенную в верхней правой части окна композитной функции.

  4. В результате действия отроется окно редактора композитной функции в режиме просмотра (Рисунок 1).

Для выхода из режима просмотра композитной функции:

  1. Нажмите на кнопку image7 "Назад", расположенную в верхней правой части окна настроек композитной функции.

Примечания:

  • В режиме просмотра у узлов нет элементов управления и они заблокированы для передвижения.

  • Боковая панель с функциями и константами не показывается, так как в функцию ничего нельзя добавить.

Режим просмотра композитной функции

Рисунок 1 - Режим просмотра композитной функции

Валидация композитных функций

Существуют проверки целостности и корректности сохраняемой композитной функции:

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

  2. Проверка корректности направления портов (порты каких типов на каких сторонах переходов могут быть). Допустимые исходящие порты:

    • Константа;

    • Исходящие порты блока "Функция";

    • Исходящие порты блока "Условие";

    • Входящие порты самой композитной функции.

    Допустимые входящие порты:

    • Логический вход и другие входящие порты блока "Условие";

    • Входящие порты блока "Функция";

    • Исходящие порты самой композитной функции.

  3. Проверка совместимости типов соединяемых портов:

    • Если исходящий порт типа "Любой", то входящий порт тоже должен быть типа "Любой";

    • Если входящий порт типа "Любой", то исходящий порт может быть каким угодно типом

    В остальных случаях все типы исходящего порта должны присутствовать во входящем порте. Аналогичная проверка и у типов значений портов.

    Проверка входящих и исходящих портов блока "Условие":

    • Тип исходящих портов "Условия" проверяется по связанным входящим портам "Условия";

    • Входящие порты "Условия" сравниваются с портами на противоположном конце перехода.

  4. Проверка наличия переходов у блоков композитной функции.