Производный компонент
Описание
Производный компонент — создаваемый пользователем компонент, который может применяться в Сценариях наравне со стандартными, предоставляемыми платформой компонентами. Алгоритм обработки данных, входные и выходные порты производного компонента задаются базовым узлом.
Базовым узлом может выступать любой узел за исключением Цикла, Выполнения узла, Узла-ссылки, ссылки и производного узла на Подключение. Но, как правило, используется Подмодель. Поскольку в Подмодели можно реализовать произвольную логику обработки данных и задать необходимые входные и выходные порты, то на ее основе пользователь имеет возможность создать производный компонент с универсальной функциональностью, пригодной для многократного использования в различных аналитических задачах. Таким образом, набор средств для реализации различной логики обработки данных не ограничивается стандартными компонентами платформы и может быть расширен самим пользователем. Подобный подход является важным инструментом в реализации структурного подхода в проектировании сложных решений (см. инструментарий проектирования).
Особенностями производного компонента являются его следующие свойства:
- Наследование — означает, что изменение базового узла повлечет за собой изменение производного компонента и, соответственно, всех созданных на базе этого компонента узлов Сценария;
- Переопределение — модификация производного узла без изменения производного компонента, из которого он создан.
Из производных компонентов создаются производные узлы — наследники базового узла. Наследование осуществляется механизмом обновления производных узлов при изменении базового. При внесении изменений в базовый узел во всех отнаследованных от него производных узлах появится оповещение "Базовый узел изменился...". Эти изменения будут применены к производным узлам:
- при выборе в контекстном меню производного узла пункта меню Обновить конфигурацию узла;
- при активации, переобучении, вызове мастера настройки производного узла или его портов.
При переопределении свойств и настроек производных узлов базовый узел остается неизменным. Если в базовом узле изменять настройки, то в производном узле будут обновлены только те настройки, которые не были переопределены пользователем. Перечень запрещенных изменений при переопределении производного узла приведен ниже.
Перечень запрещенных изменений при переопределении производного узла:
Наследуемый узел | Объект | Список запрещенных операций |
---|---|---|
Все узлы | Столбцы и переменные во входных и выходных портах |
|
Подмодель | Узлы Подмодели |
|
Подключения |
|
|
Производные компоненты |
|
|
Узлы с переменным числом портов, в том числе Подмодель | Входные и выходные порты |
|
Чтобы принудительно сбросить все внесенные в производный узел изменения и сделать производный и базовый узлы идентичными, следует в контекстном меню производного узла выбрать пункт Восстановить исходную конфигурацию узла.
Важно: При переопределении и наследовании настроек базового узла необходимо учитывать что именно является атомарным объектом переопределения и наследования. Например, в условии фильтрации
< 01.01.2020
присутствуют две атомарные части:<
и01.01.2020
. В этом случае к каждой из этих частей механизмы переопределения и наследования применяются отдельно, а не ко всему условию в целом. Это означает, что при переопределении одной из них, другая может быть изменена механизмом наследования при изменении базового узла.В разных компонентах атомарными могут быть как отдельные настройки, так и группы настроек.
Создание и настройка производного компонента
Для создания производного компонента необходимо выбрать базовый узел (Подмодель) и в его контекстном меню выбрать пункт Создать производный компонент. Та же команда доступна на панели инструментов области построения Сценариев.
Откроется окно Настройка производного компонента, где определяются:
- Метка — наименование производного компонента;
- Описание — дополнительная информация по компоненту;
-
Область видимости — доступность производного компонента на разных уровнях Пакета, задается радиокнопкой:
- Закрытый (доступен только внутри текущего Модуля);
- Частично закрытый (доступен только внутри текущего Модуля и его Подмоделей);
- Внутренний (доступен только внутри текущего Пакета);
- Открытый (доступен во всех пакетах) — для использования производного компонента из другого пакета необходимо создать Ссылку на пакет, в котором производный компонент был создан.
Примечание. Для корректного использования производных компонентов, содержащих Подключения, необходимо настроить не только область видимости производного компонента, но и модификатор доступа Подключения.
-
Целевые типы узлов — типы узлов, которые можно создавать по производному компоненту (по умолчанию выставлен флаг у Выполнение узла и Цикл, хотя бы один флаг должен быть выставлен):
- Выполнение узла и Цикл — разрешается создание узлов Выполнение узла и Цикл по производному компоненту;
- Производные узлы — разрешается создание производных узлов по производному компоненту.
Примечание. Если у производного компонента указано значение Открытый в параметре Область видимости, и установлен флаг Производные узлы в разделе Целевые типы узлов, то содержимое этого компонента будет доступно для просмотра в зависимых пакетах даже в том случае, если производный компонент находится внутри зашифрованного пакета.
После сохранения настроек производный компонент будет доступен в панели Производные компоненты. Все доступные производные компоненты отображаются в виде списка и группируются по принадлежности к пакету, в котором они созданы. В Панели Производные компоненты кликом правой кнопкой мыши по папке Текущий модуль вызывается меню с командой, которая открывает окно Перейти к производным компонентам. При активации этой команды открывается окно Компоненты со списком производных компонентов. Аналогично, если кликнуть правой кнопкой мыши по определённому производному компоненту и выбрать Перейти к производному компоненту, откроется окно Компоненты со списком производных компонентов, но с фокусировкой на выбранном компоненте.
Примечание: Если метка производного компонента начинается на
__
, то он не будет виден на панели компонентов в других пакетах, даже если имеет значение Открытый в параметре Область видимости. На такие производные компоненты можно ссылаться только внутри пакета, а также строить другие производные компоненты внутри пакета. Если узел построен с помощью «скрытого» производного компонента (с открытой областью видимости), то на него можно ссылаться в других пакетах, при этом не будет возникать ошибок, как при случае, если построить узел с помощью «закрытого» производного компонента.
Для создания узла Сценария на основе производного компонента можно воспользоваться контекстным меню, нажав правой кнопкой мыши по нужному компоненту. Также можно перенести производный компонент в область построения Сценария методом Drag-and-Drop:
- с зажатой кнопкой Shift в сценарий переносится узел Цикл;
- с зажатой кнопкой Ctrl в сценарий переносится Производный узел;
- без зажатых клавиш в сценарий переносится узел Выполнение узла.
На созданных таким образом узлах отображается кнопка «Показать базовый узел», которая позволяет найти базовый узел (в случае, если он расположен в пределах текущей области построения Сценария).
При попытке создать производный компонент по узлу, по которому уже есть производный компонент, пользователю задаётся вопрос о том, действительно ли он хочет создать ещё один.
Для производных компонентов второго и последующих уровней, созданных от производного узла, в конце метки ставится индекс (#2
, #3
, и т.д.).
Отредактировать настройки созданных в пакете производных компонентов можно на странице Компоненты: Панель Навигация -> Пакеты -> Текущий пакет -> Модуль -> Компоненты. На этой странице представлен список производных компонентов, для которых доступны следующие действия:
- Действия на панели инструментов:
Группировать (Alt+G) — список Производных компонентов группируется по типу базового узла (Импорт, Трансформация, Управление, Исследования и т.д.);
Настроить — открывается окно настройки выделенного в списке Производного компонента;
Удалить — удаление выделенного в списке Производного компонента.
- Действия контекстного меню элементов списка:
Настроить — открывается окно настройки выбранного Производного компонента;
Удалить — удаление выбранного Производного компонента.
- Перейти к базовому узлу — осуществляется переход к расположению базового узла в сценарии.
- Обновить — обновляется список Производных компонентов.