Примеси
Этот раздел описывает примеси — механизм расширения сущностей.
О примесях
Примеси — это механизм расширения функциональности сущностей за счет встраивания данных и интерфейсных элементов из другого домена. Это обеспечивает переиспользование конфигурации представлений и логики без необходимости изменять исходную схему домена. При этом сами примеси могут наследоваться по иерархии представлений.
Для подмешанных атрибутов действуют настройки отображения столбцов, а также ограничения и правила данных, заданные в схеме объекта примеси.
Общие поля блока mixins
Путь в схеме: mixins[]
Блок mixins представляет собой массив объектов, описывающих правила подмешивания. Описания примесей включают как общие, так и специфические поля, зависящие от типа конкретной примеси.
Описание каждой примеси включает следующие поля:
| Поле | Обязательность и значение по умолчанию | Тип данных | Описание |
|---|---|---|---|
|
да |
Data ID |
Уникальный идентификатор примеси. |
|
нет |
строка |
Наименование примеси. |
|
нет |
строка |
Описание примеси. |
|
нет |
целое число |
Приоритет примеси. Чем меньше значение, тем выше приоритет. Ознакомьтесь с описанием приоритетов. |
|
нет (по умолчанию: |
логическое |
Переключатель наследования примеси дочерними сущностями. Ознакомьтесь с описанием наследования. |
|
да |
перечисление |
Тип подмешивания: Ознакомьтесь с описанием типов. |
|
да |
объект или Data ID Ref |
Объект встраивания примеси. Структура поля определяется типом примеси и описана далее для каждого типа. |
|
да |
массив |
Встраиваемые представления и их компоненты. Ознакомьтесь с описанием поля |
Пример описания примесей
mixins:
- id: linkage_mixin
linkage: incident_to_gossopka
type: linkage
entity:
to: unit.example.com/Incident
from: gossopka-card.example.com/GossopkaNotification
views:
- id: linkage_mixin_panel
type: panel
to:
panel: panels_infoIncident
change:
add:
tabs:
tabs:
- tab: tabs_main
label: Данные ГосСопка
- id: linkage_mixin_list
type: list
to:
list: lists_incidents
change:
add:
list: lists_GNlist
- id: linkage_mixin_create_form
type: form
to:
form: forms_panels_newIncident
change:
add:
form: blocks_forms_new
- id: linkage_mixin_edit_form
type: form
to:
form: forms_panels_edit
change:
add:
form: blocks_forms_edit
- id: view_mixin
type: view
entity: unit.example.com/Incident
views:
- id: view_mixin_tab
type: tab
to:
tab: tabs_info
fromView: views_main
change:
add:
components:
- block: blocks_info_main
Типы примесей (type) и специфические поля
Путь в схеме: mixins[].type
Существует два типа примесей:
-
linkage— примеси на основе связей. Используют связанный объект, из которого заимствуются данные и логика действий. -
view— примеси компонентов интерфейса. Расширяют представление целевого объекта без создания связи с исходным объектом. Отображение атрибутов и выполнение действий происходит в контексте целевого объекта.
Примеси на основе связей (type: linkage)
Примеси на основе связей расширяют представления за счет использования данных связанного объекта. Одна и та же примесь может использоваться в нескольких сущностях.
Связь между примесью и целевой сущностью должна быть направленной и принадлежать к одному из следующих типов:
-
1-1 — примесь может находиться с любой стороны связи.
-
1-N — примесь должна находиться со стороны 1.
При создании объекта целевой сущности создается и объект примеси; между этими объектами устанавливается связь.
При редактировании подмешанных атрибутов изменения происходят на стороне объекта примеси. Подмешанные действия выполняются в контексте объекта примеси.
Если объект примеси или связь с ним удалены, подмешанные данные не отображаются в целевом объекте. При этом можно установить связь с другим объектом сущности, тогда в целевом объекте появятся данные нового объекта.
Описание примеси типа linkage дополнительно включает поля:
| Поле | Обязательность и значение по умолчанию | Тип данных | Описание |
|---|---|---|---|
|
да |
Data ID Ref |
Связь, на основе которой строится примесь. Допустима связь со значением |
|
да |
объект |
Описание направления примеси. Ознакомьтесь с описанием поля |
Направление примеси на основе связи (entity)
Путь в схеме: mixins[].entity
Поле entity в примесях с type: linkage имеет следующую структуру:
| Поле | Обязательность и значение по умолчанию | Тип данных | Описание |
|---|---|---|---|
|
да |
Data ID Ref |
Сущность, которая служит источником примеси. |
|
да |
Data ID Ref |
Целевая сущность, в которую встраивается примесь. |
Примеси компонентов интерфейса (type: view)
При подмешивании компонентов интерфейса к целевому объекту соответствующие компоненты используются в контексте представлений этого объекта. Примесь может быть добавлена, если выполняется одно из следующих условий:
-
Целевая сущность и сущность примеси находятся в одном домене.
-
В представлении сущности примеси установлен параметр
isMixin: true.
Встраивание столбцов таблицы и виджетов возможно только для тех атрибутов, которые описаны для целевой сущности.
При редактировании атрибутов изменения происходят на стороне целевого объекта примеси. Встроенные действия выполняются в контексте целевого объекта.
Описание примеси типа view дополнительно включает поле:
| Поле | Обязательность и значение по умолчанию | Тип данных | Описание |
|---|---|---|---|
|
да |
Data ID Ref |
Целевая сущность, в которую встраивается примесь. |
Источники примесей компонентов интерфейса определяются в массиве views отдельно для каждого компонента.
|
Приоритет примеси (weight)
Путь в схеме: mixins[].weight
Поле weight определяет приоритет использования примеси: чем меньше число, тем выше приоритет. Если приоритет не указан, он считается наименьшим.
При добавлении нескольких примесей в одно и то же представление, используется следующая логика:
-
Если у примесей разные веса, сначала встраивается примесь с наивысшим приоритетом.
-
Если у нескольких примесей одинаковый приоритет или приоритет не указан:
-
Примеси сортируются по полю
idв алфавитном порядке. Первой встраивается примесь, идентификатор которой выше по алфавиту. -
Если у примесей разные типы, сначала встраивается примесь с
type: view.
-
Логика работы наследования (useForChild)
Путь в схеме: mixins[].useForChild
Если для примеси установлено значение параметра useForChild: true, она автоматически встраивается в представления всех дочерних сущностей, которые используют то же представление, что и родительская сущность. Это позволяет добавить примесь один раз на верхнем уровне иерархии и обеспечить ее доступность для всех наследников.
Если установлено значение useForChild: false, примесь будет добавлена исключительно в родительское представление.
Подмешиваемые представления (views)
Путь в схеме: mixins[].views[]
Блок views в структуре примеси определяет подмешиваемые представления и их компоненты. Существуют следующие варианты подмешивания:
-
Изменение — к целевому представлению добавляются компоненты примеси, при этом можно удалить некоторые компоненты целевого представления. Удаляемые и добавляемые компоненты указываются в схеме.
-
Замена — компоненты целевого представления заменяются компонентами примеси.
Описания примеси представлений включают как общие, так и специфические поля, зависящие от типа представления.
Общие поля представлений
Описание каждой примеси представления включает следующие поля:
| Поле | Обязательность и значение по умолчанию | Тип данных | Описание |
|---|---|---|---|
|
да |
View ID |
Идентификатор примеси компонентов. |
|
да |
перечисление |
Тип представления. Ознакомьтесь с описанием поля |
|
да (при |
View ID Ref |
Представление, из которого будут подмешаны компоненты. Доступно для примесей с |
|
да |
объект |
Содержит поле с View ID Ref целевого представления. Структура описана далее для каждого типа представления. |
|
да (при |
объект |
Компоненты, которые должны быть добавлены или удалены в целевом представлении. Ознакомьтесь с описанием поля |
|
нет |
объект |
Содержит поле с View ID Ref представления, компонентами которого будут заменены компоненты целевого представления. Доступно для примесей с Структура описана далее для каждого типа представления. |
Изменение компонентов в целевом представлении (change)
Путь в схеме: mixins[].views[].change
Поле change имеет следующую структуру:
| Поле | Обязательность и значение по умолчанию | Тип данных | Описание |
|---|---|---|---|
|
да |
объект |
Компоненты, которые должны быть подмешаны в целевое представление. Содержит ссылки на компоненты и определение их расположения в поле Структура описана далее для каждого типа представления. |
|
нет |
объект |
Компоненты, которые будут удалены в целевом представлении. Доступно для примесей с Структура описана далее для каждого типа представления. |
Расположение добавленных компонентов (position)
Путь в схеме: mixins[].views[].….position
Поле position имеет следующую структуру:
| Поле | Обязательность и значение по умолчанию | Тип данных | Описание |
|---|---|---|---|
|
нет (по умолчанию — |
перечисление |
Расположение добавленных компонентов среди компонентов целевого представления. Доступные значения:
|
|
да (при |
объект |
Содержит поле с View ID Ref компонента целевого представления, после которого должны отображаться добавленные компоненты. Структура описана далее для каждого типа представления. |
Типы представлений (type)
Путь в схеме: mixins[].views[].type
Поле type в записи группы может принимать следующие значения:
Примесь модального окна (type: form)
При примеси модального окна к целевому представлению добавляются указанные виджеты и блоки примеси.
| К окну создания объекта необходимо добавить виджеты всех обязательных атрибутов сущности примеси. |
Описание примеси type: form дополнительно включает поля:
| Поле | Обязательность и значение по умолчанию | Тип данных | Описание |
|---|---|---|---|
|
да |
View ID Ref |
Целевая форма, в которое должны быть добавлены виджеты и блоки. |
|
да (при |
View ID Ref |
Форма, компоненты которой должны быть добавлены к целевой форме. |
|
нет (по умолчанию — |
перечисление |
Расположение добавленных компонентов среди компонентов целевой формы: |
|
да (при |
объект |
|
|
нет |
массив |
Ссылки на блоки, а также виджеты, непосредственно включенные в модальное окно, которые будут удалены из целевого представления. Доступно для примесей с |
|
нет |
View ID Ref |
Форма, компонентами которой будут заменены компоненты целевой формы. Доступно для примесей с |
Примесь вкладки (type: tab)
При примеси вкладки к целевой вкладке добавляются указанные виджеты и блоки примеси.
Описание примеси type: tab дополнительно включает поля:
| Поле | Обязательность и значение по умолчанию | Тип данных | Описание |
|---|---|---|---|
|
да |
View ID Ref |
Целевая вкладка, к которой будут добавлены виджеты и блоки. |
|
да (при |
массив |
Ссылки на блоки и виджеты, которые должны быть добавлены к вкладке. Взаимное расположение определяется порядком в массиве. |
|
нет (по умолчанию — |
перечисление |
Расположение добавленных компонентов среди компонентов целевой вкладки: |
|
да (при |
объект |
|
|
нет |
массив |
|
|
нет |
View ID Ref |
Примесь панели (type: panel)
При примеси панели к целевому представлению добавляются указанные вкладки и действия меню примеси.
Описание примеси type: panel дополнительно включает поля:
| Поле | Обязательность и значение по умолчанию | Тип данных | Описание |
|---|---|---|---|
|
да |
View ID Ref |
Целевая панель, на которую будут добавлены вкладки и действия меню. |
|
нет |
массив |
Ссылки на вкладки, которые должны быть добавлены к панели. Ознакомьтесь с описанием поля |
|
нет (по умолчанию — |
перечисление |
Расположение добавленных вкладок среди вкладок целевой панели: |
|
да (при |
View ID Ref |
Вкладка, правее которой будут отображаться добавленные вкладки. |
|
нет |
массив |
Ссылки на действия, которые должны быть добавлены к меню панели. Ознакомьтесь с описанием поля |
|
нет (по умолчанию — |
перечисление |
Расположение добавленных действий среди действий меню целевой панели: |
|
да (при |
View ID Ref |
Действие в меню, ниже которого будут отображаться добавленные действия. |
|
нет |
массив |
Массив ссылок на вкладки, которые будут удалены из целевой карточки, в формате |
|
нет |
массив |
Массив ссылок на действия, которые будут удалены из меню целевой панели, в формате |
|
нет |
массив |
Ссылки на вкладки, которыми будут заменены вкладки целевой панели. Доступно для примесей с Ознакомьтесь с описанием поля |
|
нет |
массив |
Ссылки на действия, которыми будут заменены действия меню целевой панели. Доступно для примесей с Ознакомьтесь с описанием поля |
Вкладки, подмешиваемые к панели (tabs)
Путь в схеме:
-
mixins[].views[].change.add.tabs.tabs[] -
mixins[].views[].replace.tabs.tabs[]
Каждый элемент массива имеет следующую структуру:
| Поле | Обязательность и значение по умолчанию | Тип данных | Описание |
|---|---|---|---|
|
да |
View ID Ref |
Подмешиваемая вкладка. |
|
нет |
строка |
Отображаемое название вкладки. Ознакомьтесь с описанием поля |
Действия, подмешиваемые к меню панели (menu)
Путь в схеме:
-
mixins[].views[].change.add.menu.menu[] -
mixins[].views[].replace.menu.menu[]
Каждый элемент массива имеет следующую структуру:
| Поле | Обязательность и значение по умолчанию | Тип данных | Описание |
|---|---|---|---|
|
да |
View ID Ref |
Подмешиваемое действие меню. |
|
нет |
строка |
Отображаемое название действия. Ознакомьтесь с описанием поля |
Примесь полноэкранной карточки (type: page)
При примеси полноэкранной карточки к целевому представлению добавляются указанные группы виджетов и действия меню примеси. Тип и количество примешиваемых групп зависят от групп, используемых в целевой карточке:
-
Если в целевой карточке используются вкладки, то можно примешать одну или несколько вкладок. Расположение добавленных вкладок определяется в схеме.
-
Если в целевой карточке используется блок, то можно добавить один блок. Добавленный блок будет располагаться ниже блока целевой карточки.
Описание примеси type: page дополнительно включает поля:
| Поле | Обязательность и значение по умолчанию | Тип данных | Описание |
|---|---|---|---|
|
да |
View ID Ref |
Целевая полноэкранная карточка, в которую будут добавлены вкладки и действия меню. |
|
нет |
объект |
|
|
нет |
View ID Ref |
Ссылка на блок, который будет добавлен к целевой карточке. Доступно, если в карточке используется блок. |
|
да |
массив |
Ссылки на виджеты действий, которые будут добавлены к панели действий карточки. Ознакомьтесь с описанием поля |
|
нет (по умолчанию — |
перечисление |
Расположение добавленных действий среди действий меню целевой панели: |
|
да (при |
View ID Ref |
Действие в меню, ниже которого будут отображаться добавленные действия. |
|
нет |
массив |
Массив ссылок на вкладки, которые будут удалены из целевой карточки, в формате |
|
нет |
массив |
Массив ссылок на виджеты действий, которые будут удалены с панели действий целевой карточки, в формате |
|
нет |
массив |
Ссылки на вкладки, которыми должны быть заменены вкладки целевой панели. Доступно для примесей с Ознакомьтесь с описанием поля |
|
нет |
View ID Ref |
Ссылка на блок, которым будет заменен блок целевой карточки. Доступно для примесей с |
|
нет |
массив |
Ссылки на виджеты действий, которыми будут заменены виджеты панели действий целевой карточки. Доступно для примесей с Ознакомьтесь с описанием поля |
Вкладки, подмешиваемые к панели (tabs)
Путь в схеме:
-
mixins[].views[].change.add.tabs.tabs[] -
mixins[].views[].replace.tabs.tabs[]
Каждый элемент массива имеет следующую структуру:
| Поле | Обязательность и значение по умолчанию | Тип данных | Описание |
|---|---|---|---|
|
да |
View ID Ref |
Подмешиваемая вкладка. |
|
нет |
строка |
Отображаемое название вкладки. Ознакомьтесь с описанием поля |
Виджеты, подмешиваемые к панели действий карточки (actionPanel)
Путь в схеме:
-
mixins[].views[].change.add.actionPanel.actionPanel[] -
mixins[].views[].replace.actionPanel.actionPanel[]
Каждый элемент массива имеет следующую структуру:
| Поле | Обязательность и значение по умолчанию | Тип данных | Описание |
|---|---|---|---|
|
да |
View ID Ref |
Подмешиваемый виджет действия. |
|
нет |
строка |
Отображаемое название действия. Ознакомьтесь с описанием поля |
Примесь списочного представления (type: list)
При примеси списочного представления к целевому списку добавляются столбцы и виджеты панели действий примеси. При этом действуют следующие правила добавления:
-
Столбцы, унаследованные и автоматически собираемые в представлении примеси, также добавляются к целевому представлению.
-
Столбцы, добавленные к представлению примеси из другой примеси, и столбцы с атрибутами связанных сущностей не добавляются к целевому представлению.
Следующие настройки столбцов заимствуются из представления примеси:
Описание примеси type: list дополнительно включает поля:
| Поле | Обязательность и значение по умолчанию | Тип данных | Описание |
|---|---|---|---|
|
да |
View ID Ref |
Целевое списочное представление, в которое будут добавлены столбцы и виджеты панели действий. |
|
да (при |
View ID Ref |
Списочное представление, компоненты которого должны быть добавлены к целевому списку. |
|
нет (по умолчанию — |
перечисление |
Расположение добавленных компонентов среди компонентов целевой формы: |
|
да (при |
View ID Ref |
Столбец, правее которого будут отображаться добавленные столбцы. |
|
нет |
массив |
Массив ссылок на столбцы, которые будут удалены из целевого представления, в формате |
|
нет |
массив |
Массив ссылок на виджеты, которые будут удалены с панели действий целевого представления, в формате |
|
нет |
View ID Ref |
Списочное представление, компонентами которого будут заменены компоненты целевого списка. Доступно для примесей с |
Была ли полезна эта страница?