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