Производный компонент

Описание

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

Базовым узлом может выступать любой узел за исключением Цикла, Выполнения узла, Узла-ссылки, ссылки и производного узла на Подключение. Но, как правило, используется Подмодель. Поскольку в Подмодели можно реализовать произвольную логику обработки данных и задать необходимые входные и выходные порты, то на ее основе пользователь имеет возможность создать Производный компонент с универсальной функциональностью, пригодной для многократного использования в различных аналитических задачах. Таким образом, набор средств для реализации различной логики обработки данных не ограничивается стандартными компонентами платформы и может быть расширен самим пользователем. Подобный подход является важным инструментом в реализации структурного подхода в проектировании сложных решений (см. инструментарий проектирования).

Особенностью производного компонента являются его следующие свойства:

  • Наследование — означает, что изменение базового узла повлечет за собой изменение Производного компонента и, соответственно, всех созданных на базе этого компонента узлов Сценария;
  • Переопределение — модификация производного узла без изменения Производного компонента, из которого он создан.

Из Производных компонентов создаются производные узлы — наследники базового узла. Наследование осуществляется механизмом обновления производных узлов при изменении базового. При внесении изменений в базовый узел во всех отнаследованных от него производных узлах появится оповещение "Базовый узел изменился...". Эти изменения будут применены к производным узлам:

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

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

Перечень запрещенных изменений при переопределении производного узла:

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

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

Важно: При переопределении и наследовании настроек базового узла необходимо учитывать что именно является атомарным объектом переопределения и наследования. Например, в условии фильтрации < 01.01.2020 присутствуют две атомарные части: < и 01.01.2020. В этом случае к каждой из этих частей механизмы переопределения и наследования применяются отдельно, а не ко всему условию в целом. Это означает, что при переопределении одной из них, другая может быть изменена механизмом наследования при изменении базового узла.

В разных компонентах атомарными могут быть как отдельные настройки, так и группы настроек.

Создание и настройка производного компонента

Для создания Производного компонента необходимо выбрать базовый узел (Подмодель) и в его контекстном меню выбрать пункт Создать производный компонент. Та же команда доступна на панели инструментов области построения Сценариев.

Откроется окно Настройка производного компонента, где определяются:

  • Метка — наименование производного компонента;
  • Описание — дополнительная информация по компоненту;
  • Область видимости — доступность Производного компонента на разных уровнях Пакета, задается радиокнопкой:
    • Закрытый (доступен только внутри текущего Модуля);
    • Частично закрытый (доступен только внутри текущего Модуля и его Подмоделей);
    • Внутренний (доступен только внутри текущего Пакета);
    • Открытый (доступен во всех пакетах) — для использования Производного компонента из другого пакета необходимо создать Ссылку на Пакет (см. модификатор доступа), в котором Производный компонент был создан.
  • Целевые типы узлов — типы узлов, которые можно создавать по производному компоненту (по умолчанию выставлен флаг у Выполнение узла и Цикл, хотя бы один флаг должен быть выставлен):
    • Выполнение узла и Цикл — разрешается создание узлов Выполнение узла и Цикл по производному компоненту;
    • Производные узлы — разрешается создание производных узлов по производному компоненту.

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

После сохранения настроек Производный компонент будет доступен в панели Производные компоненты. Все доступные Производные компоненты отображаются в виде списка и группируются по принадлежности к пакету, в котором они созданы. В Панели навигации кликом правой кнопкой мыши по папке Текущий модуль вызывается меню с опцией Перейти к производным компонентам. При активации этой опции открывается окно Компоненты со списком Производных компонентов. Аналогично, если кликнуть правой кнопкой мыши по определённому Производному компоненту — откроется окно Компоненты со списком Производных компонентов, но с фокусировкой на выбранном компоненте.

Для создания узла Сценария на основе производного компонента можно воспользоваться контекстным меню, нажав правой кнопкой мыши по нужному компоненту. Также можно перенести производный компонент в область построения Сценария методом Drag-and-Drop:

  • с зажатой кнопкой Shift в сценарий переносится узел Цикл;
  • с зажатой кнопкой Ctrl в сценарий переносится Производный узел;
  • без зажатых клавиш в сценарий переносится узел Выполнение узла.

На созданных таким образом узлах отображается кнопка "Показать базовый узел", которая позволяет найти базовый узел (в случае, если он расположен в пределах текущей области построения Сценария).

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

Для производных компонентов второго и последующих уровней, созданных от производного узла, в конце метки ставится индекс (#2, #3, и т.д.).

Отредактировать настройки созданных в пакете Производных компонентов можно в разделе Компоненты панели навигации: Панель Навигация -> Пакеты -> Текущий пакет -> Компоненты. При выборе данного раздела открывается окно со списком Производных компонентов, в котором доступны следующие действия:

  • Действия панели инструментов раздела:
    • Группировать (Alt+G) — список Производных компонентов группируется по типу базового узла (Импорт, Трансформация, Управление, Исследования и т.д.);
    • Настроить — открывается окно настройки выделенного в списке Производного компонента;
    • Удалить — удаление выделенного в списке Производного компонента.
  • Действия контекстного меню элементов списка:
    • Настроить — открывается окно настройки выбранного Производного компонента;
    • Удалить — удаление выбранного Производного компонента.
    • Перейти к базовому узлу — осуществляется переход к расположению базового узла в сценарии.
    • Обновить — обновляется список Производных компонентов.