Настройка порта «Дерево»

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

Панель инструментов и контекстное меню списка Входное дерево содержит команды:

  • Получить список — выводит список всех уникальных значений поля. Максимальное количество уникальных значений в списке: 10000.
  • Выбрать все — помечает все узлы.
  • Снять выделение со всех — снимает выделение со всех узлов.
  • Инвертировать выделение — меняет выбранные узлы на невыбранные и наоборот.
  • Добавить в исключенные — добавляет выделенные узлы дерева в группу Исключенные.

Для списка Выходное дерево на панели инструментов и в контекстном меню доступны команды:

  • Добавить дочерний узел — позволяет добавить к корневому узлу дочерний узел.
  • Добавить соседний узел — позволяет создать узел того же уровня иерархии, что и выбранный.
  • Редактировать... — позволяет вызвать окно редактирования и изменить значения полей для выбранного узла (команду также можно вызвать горячей клавишей F2).
  • Добавить в исключенные — работает аналогично кнопке во Входном дереве.
  • Переместить вверх и Переместить вниз — позволяют менять порядок узлов, при этом корневой узел Root переместить нельзя (команды также доступны по комбинации горячих клавиш Ctrl+Up и Ctrl+Down соответственно).
  • Загрузить из XSD... — загружает структуру узлов выходного дерева из файла формата XSD.
  • Загрузить из JSON... — загружает структуру узлов выходного дерева из файла или строки формата JSON. Чтобы воспользоваться этой функцией, необходимо нажать на  и выбрать в выпадающем списке необходимый способ загрузки структуры.
  • Исключить корневой узел при публикации — при установленном флаге из REST и SOAP сообщений исключается корневой узел Дерева данных (по умолчанию опция отключена). При публикации Подмодели с выходным портом типа Дерево данных это свойство необходимо настраивать в мастере настройки входного порта выходного узла Подмодели (см. рисунок 1).
Порт типа Дерево данных выходного узла Подмодели
Рисунок 1. Порт типа Дерево данных выходного узла Подмодели
  • Сгенерировать дочерние элементы — раскрывает рекурсивный узел (добавляет все подузлы рекурсивного узла в дерево данных). Уже раскрытый рекурсивный узел нельзя раскрыть повторно. Если не загружена XSD-схема/JSON-структура (не выполнялось действие Загрузить из XSD.../Загрузить из JSON...) или загруженное дерево не содержит рекурсивных узлов, то кнопка скрыта/неактивна.
  • Следующий рекурсивный нераскрытый узел — выбирает текущим узлом следующий рекурсивный нераскрытый узел после текущего выбранного узла. Для того чтобы выбрать первый рекурсивный узел необходимо выбрать корневой узел и выполнить переход к следующему рекурсивному нераскрытому узлу. Если не загружена XSD-схема/JSON-структура (не выполнялось действие Загрузить из XSD.../Загрузить из JSON...) или загруженное дерево не содержит рекурсивных узлов, то кнопка скрыта/неактивна.
  • Синхронизировать поля — синхронизируется список Выходных узлов дерева порта со списком Входных (алгоритм синхронизации см. автоматическая синхронизация полей).
  • Автоматическая синхронизация — при включении данного режима команда Синхронизировать поля будет выполняться автоматически при выполнении узла (включена по умолчанию).
  • Удалить — удаляет дочерний узел дерева, иконка этой команды высвечивается при наведении курсора на узел (команду также можно вызвать горячей клавишей Delete).
  • Удалить все... — удаляет все дочерние узлы (комбинация горячих клавиш Shift+Delete).

Примечание: Удалить корневой узел дерева нельзя.

При выполнении команд Добавить дочерний узел, Добавить соседний узел, Редактировать... вызывается окно редактирования параметров узла:

  • Имя — название узла с учетом правил наименования:
    • Может состоять из заглавных или строчных латинских букв, символов подчеркивания, цифр (цифра не может быть первым символом).
    • В дереве уникальность имени узла должна соблюдаться в рамках отдельного уровня иерархии.
  • Метка — произвольное описание узла дерева.
  • Тип данных — один из возможных типов данных.
  • Вид данных — один из возможных видов данных.

Кроме того, можно установить следующие признаки:

  • Массив — при установке флага выбранный узел будет определен как упорядоченное множество(массив) данных одного типа/структуры.
  • Контейнер — если флаг установлен,выбранный узел может содержать подчиненные узлы.

Перечень узлов Входного и Выходного деревьев можно отфильтровать с помощью команды Фильтрация на соответствующей панели инструментов. Поиск Поиск – позволяет отметить узлы дерева по имени или его части.

Загрузка структуры узлов из XSD-схемы

Структуру выходного дерева можно загрузить из файла формата XSD с помощью команды Загрузить из XSD...

В появившемся диалоговом окне необходимо заполнить поля:

  • XSD файл — поле для выбора файла (не редактируемое).
  • Пространство имен — выбор пространства имен из списка всех пространств имен описанных в файле XSD, ограничивает выбор корневого элемента только указанным пространством. По умолчанию принимает значение Все пространства имен.
  • Корневой элемент — выбор корневого узла из списка в загруженном файле. По умолчанию имеет значение первого корневого узла выбранного файла.
  • Глубина рекурсии — максимальное число рекурсий при раскрытии рекурсивных узлов. Выбирается в диапазоне от 0 до 3. По умолчанию равно 1, что означает: каждый рекурсивный узел будет раскрыт автоматически, но рекурсивные узлы внутри этих узлов останутся нераскрытыми. Дополнительно раскрытие рекурсивных узлов можно проводить вручную после построения дерева. При значении 0 все рекурсивные узлы не будут раскрыты автоматически.
  • Формировать метки узлов по xsd:documentation — если этот параметр включен, то узлы дерева получат в качестве меток значения из первой непустой строки файла .xsd. Если документация отсутствует или параметр выключен, то метка узла генерируется по имени элемента или атрибута.

После заполнения всех полей необходимо нажать кнопку Загрузить, и XSD-схема будет загружена для дальнейшей работы.

Загрузка структуры узлов из JSON-структуры

Структуру выходного дерева можно загрузить из файла или строки формата JSON с помощью команды Загрузить из JSON...

В появившемся диалоговом окне требуется выбрать способ загрузки JSON-структуры:

  • Из файла — необходимо указать файл в поле для выбора файла.
  • Из строки — необходимо ввести JSON-строку в поле для ввода текста.

Независимо от способа загрузки требуется ввести:

  • Шаблон даты/времени — задаёт формат представления даты и времени.

После заполнения всех полей необходимо нажать кнопку Загрузить, и JSON-структура будет загружена для дальнейшей работы.

Сопоставление узлов дерева

Для сопоставления узлов Входного и Выходного дерева необходимо задать между ними связи. Это можно сделать нажав кнопку Связать автоматически. Входные и Выходные узлы будут связаны, если у них совпадают имена и тип данных. Связи также можно установить вручную, с помощью метода Drag-and-drop путем перетаскивания узла из левого списка на узел из правого списка. В этом случае имена полей не важны, однако типы данных должны совпадать.

Связи между узлами можно удалять:

  • с помощью кнопки Удалить все связи — удаляет все связи;
  • нажатием на кнопку Удалить связь на линии связи (при наведении курсора кнопка меняет вид на Удалить связь).

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

Список Исключенные учитывается при автосинхронизации:

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

Особенности работы с Исключенными узлами дерева

Исключение позволяет удалять узлы деревьев из набора данных, при этом не нарушая работу Автосинхронизации.

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

  • Исключенные узлы дерева в списке показываются курсивом в отдельной группе Исключенные.
  • В группе Исключенные можно менять порядок узлов дерева и удалять их из группы.
  • При выборе Исключенного узла дерева подсвечивается соответствующий ему Входной узел дерева.
  • Нельзя добавить отсутствующий или потерянный узел дерева в группу Исключенные.
  • При выполнении действия Связать автоматически не выполняется связывание исключенных Входных узлов дерева.
  • Выходной узел дерева удаляется при добавлении в группу Исключенные:
    • Входного узла дерева, связанного с Выходным узлом дерева
    • Выходного узла дерева.

Нельзя добавить в группу исключенных узлов:

  • Обязательный Входной узел дерева или Выходной узел дерева, связанный с обязательным Входным.
  • Отнаследованный Выходной узел дерева или Входной узел дерева, связанный с отнаследованный выходным.

Обязательный узел — это узел, который был добавлен алгоритмом узла, либо параметры этого узла переопределены пользователем.

Отнаследованный — это узел дерева в Производном компоненте, который был унаследован от базового узла.

Примечание:
Узлы считаются необязательными если они были созданы в компонентах:

  • JSON в дерево — при автоматическом создании дерева.
  • Объединение(дерево) — всегда.
  • Слияние(дерево) — все узлы, кроме корневого узла присоединяемого дерева или первого уровня узлов присоединяемого дерева, если пропускается корневой узел.
Новости, материалы по аналитике, кейсы применения, активное сообщество