Структура схемы домена
Этот раздел описывает общую структуру схемы домена.
Обзор структуры
Схемы доменов содержат набор взаимосвязанных обязательных и опциональных блоков. Ниже приведен упрощенный пример структуры с указанием ключевых связей между элементами.
# Метаданные.
id: ...
type: ...
version: ...
name: ...
description: ...
status: ...
date: ...
author: ...
tags: [...]
# Сущности.
entities:
# Сущность 1.
- id: entity_1
# Атрибуты Сущности 1.
attributes:
# Атрибут пользовательского типа.
- id: attribute_1
dataType: data_type_1
# Атрибут-ссылка.
- id: attribute_2
dataType: Reference
entity: entity_2
# Атрибут-идентификатор.
- id: attribute_3
dataType: Identifier
sequence: sequence_1
# Сущность 2.
- id: entity_2
...
# Сущность 3.
- id: entity_3
...
# Пользовательские типы данных.
dataTypes:
- id: data_type_1
...
# Числовые последовательности в идентификаторах.
sequences:
- id: sequence_1
...
# Настройки цветовой схемы счетчика.
counterColorPattern:
- id: counter_color_pattern_1
# Связи.
linkages:
- id: linkage_1_2
side1: entity_1
side2: entity_2
...
- id: linkage_2_3
side1: entity_2
side2: entity_3
...
# Деревья связей.
trees:
- id: tree_1
hierarchy:
entity: entity_1
children:
- linkage: linkage_1_2
entity: entity_2
children:
- linkage: linkage_2_3
entity: entity_3
# Примеси.
mixins:
...
# Правила данных.
dataRules:
- id: ...
entity: entity_1
attributes:
id: attribute_1
...
# Действия.
actions:
-
# Иконки.
medias:
# Представления.
views:
# Меню домена.
menus:
Структура метаданных
Запись метаданных включает следующие поля:
| Поле | Обязательность и значение по умолчанию | Тип данных | Описание |
|---|---|---|---|
|
да |
FQDN |
Уникальный идентификатор схемы. Полное имя (FQDN) домена, который описывается схемой. |
|
да |
перечисление |
Тип элемента экспертизы. Всегда устанавливается значение |
|
да |
строка |
Версия схемы домена в формате Semantic Versioning. |
|
да |
строка |
Название схемы домена. Допустимы строчные и прописные буквы латинского и кириллического алфавитов ( |
|
нет (по умолчанию: пустой массив) |
массив строк |
Теги для классификации и поиска схемы в системе. |
|
нет (по умолчанию: пустая строка) |
строка |
Описание схемы домена. |
|
нет (по умолчанию: пустая строка) |
строка |
Имя и контактные данные автора. |
Сущности (entities) и атрибуты
Блок entities представляет собой массив записей сущностей, входящих в состав домена. В запись сущности необходимо включить блок attributes, содержащий описание массива атрибутов сущности.
Для настройки атрибутов используются также другие поля на первом уровне схемы:
-
Поле
sequencesиспользуется для задания последовательностей, используемых в атрибутах-идентификаторах. -
Поле
counterColorPatternиспользуется для настройки цветовой схемы атрибута-счетчика.
Пользовательские типы данных для атрибутов (dataTypes)
В блоке dataTypes определяются пользовательские типы данных для атрибутов — перечисления, рабочие процессы и таблицы.
Связи (linkages) и деревья (trees)
В блоке linkages описываются линейные и древовидные связи между сущностями.
В поле trees описывается глубина и иерархия древовидных связей.
В поле transitiveLinkages описываются деревья транзитивных связей.
Примеси (mixins)
Примеси расширяют функциональность сущностей путем встраивания данных из другого домена, что позволяет переиспользовать конфигурации представлений и логику обработки данных без необходимости дублирования кода.
Правила данных (dataRules)
В блоке dataRules схемы домена задаются правила данных — выражения, которые при выполнении определенных условий:
-
ограничивают возможные операции с атрибутами сущностей;
-
контролируют допустимые значения атрибутов.
Действия (actions)
В блоке actions описываются действия с экземплярами сущностей.
Описание интерфейса (views)
В блоке views описываются различные представления — интерфейсы объектов и их списков.
Меню домена (menus)
В блоке menus описываются пункты меню домена, расположенного в левой панели.
Иконки (medias)
В блоке medias описываются иконки, используемые в представлениях и меню домена.
Нотация и стереотипные поля в схеме домена
FQID
Домены, сущности и атрибуты определяются в схеме домена при помощи FQID (Fully Qualified ID — полностью определенного идентификатора) согласно следующим правилам:
-
Домен: FQID домена определяется как его FQDN (Fully Qualified Domain Name — полностью определенное доменное имя).
-
Сущность: FQID сущности определяется как "<FQDN>/<ID сущности>". Если сущность определена внутри текущего домена, можно опустить FQDN и указать просто ID сущности.
-
Атрибут: FQID атрибута какой-либо сущности определяется как "<FQID сущности>/<ID атрибута>":
-
Если сущность определена внутри текущего домена, можно опустить FQID сущности и указать просто "<ID атрибута>".
-
Если сущность определена в другом домене, необходимо сослаться на домен: "<FQDN>/<ID сущности>.<ID атрибута>".
-
Если атрибут относится к типу
Reference, его FQID определяется как "<FQID атрибута-ссылки>.<ID атрибута из проекции>".
-
Идентификаторы элементов хранения и представления в домене
Data ID — идентификатор элемента хранения. Допустимы строчные и прописные буквы латинского алфавита, цифры и подчеркивания. Не может быть равен имени любого системного поля или зарезервированному имени устройства Windows.
View ID — идентификатор элемента представления. Допустимы строчные и прописные буквы латинского алфавита, цифры и специальные символы _:#@$. Не может быть равен зарезервированному имени устройства.
| В идентификаторах, где не используется наследование, рекомендуется избегать точек. Наличие точки в идентификаторе интерпретируется системой как обращение к элементу родителя и запускает механизм поиска через наследование. |
Системные поля объектов и связей в доменах
-
id— идентификатор объекта или связи в текущем домене. -
organisationId— идентификатор организации. -
domainId— идентификатор домена из схемы домена. -
entityId— идентификатор сущности из схемы домена. -
createdAt— дата и время создания объекта или связи. -
createdBy— пользователь, который создал объект или связь. -
updatedAt— дата и время последнего обновления объекта или связи. -
updatedBy— пользователь, который в последний раз обновил объект или связь. -
tenantId— тенант, который является владельцем объекта. -
label— человекопонятный идентификатор объекта для пользователя. -
version— версия объекта.
Зарезервированные имена устройств
-
aux
-
com1
-
com2
-
com3
-
com4
-
com5
-
com6
-
com7
-
com8
-
com9
-
lpt1
-
lpt2
-
lpt3
-
lpt4
-
lpt5
-
lpt6
-
lpt7
-
lpt8
-
lpt9
-
con
-
nul
-
prn
Data ID Ref — ссылка на Data ID элемента хранения домена, который уже определен в другом месте. По ссылке система может получить все необходимые метаданные.
View ID Ref — ссылка на View ID элемента хранения домена, который уже определен в другом месте. По ссылке система может получить все необходимые метаданные.
Data ID Ref и View ID Ref — короткие формы полного идентификатора. Они всегда являются локальным идентификатором по отношению к текущей схеме домена. Для большинства элементов схемы домена вместо короткой формы можно указывать полный идентификатор — FQID, который может ссылаться на другой домен.
Правила создания идентификаторов для элементов схемы
В таблице приведены требования к идентификаторам элементов схемы домена. Для каждого типа элемента указаны соглашения об именовании, допустимые символы и примеры.
| Элемент | Правила | Примеры |
|---|---|---|
Домен |
Соответствуют стандартным соглашениям об именовании для доменных имен DNS. Ознакомьтесь с описанием FQID. |
|
Сущности (Data ID) |
Все слова пишутся с заглавной буквы. Разделителей между составными частями нет. Допустимы строчные и прописные буквы латинского алфавита ( Длина не более 30 символов. |
|
Атрибуты (Data ID) |
Первое слово пишется со строчной буквы, следующие — с заглавной буквы. Разделителей между составными частями нет (кроме атрибута типа Допустимы строчные и прописные буквы латинского алфавита ( Длина не более 30 символов. |
|
Типы данных (Data ID) |
Все слова пишутся с заглавной буквы. Разделителей между составными частями нет. Допустимы строчные и прописные буквы латинского алфавита ( Длина не более 63 символов. |
|
Представления, действия, виджеты, группы виджетов (View ID) |
Первое слово пишется со строчной буквы, следующие — с заглавной буквы. Разделителей между составными частями нет. Можно добавлять произвольный префикс для обозначения группы (например, Допустимы строчные и прописные буквы латинского алфавита ( Длина не более 63 символов. |
|
Перечисления константных значений ( |
Слова разделяются символами подчеркивания. Допустимы строчные и прописные буквы латинского алфавита ( Длина не более 63 символов. |
|
Пути в меню и группах меню |
Стандартный путь к местоположению ресурса URL. |
|
Медиаресурсы (иконки, изображения) |
Первое слово пишется со строчной буквы, следующие — с заглавной буквы. Разделителей между составными частями нет. Можно добавлять префикс для обозначения группы ( Допустимы строчные и прописные буквы латинского алфавита ( Длина не более 63 символов. |
|
| Ограничения нотации являются формальными и применяются внутри исходных схем доменов, поставляемых системой. Они могут не соблюдаться, если пользователь создает свою собственную схему домена. Все идентификаторы являются регистрозависимыми. |
RQL-выражения
RQL-выражения всегда предваряются тегом !rql и могут записываться следующими способами:
-
В одну строку:
constraint: !rql organizationId IS NOT NULL -
В несколько строк:
condition: !rql | @CurrentDate >= '2025-09-01' AND @CurrentTime >= CAST('08:00', 'Time') AND @CurrentTime <= CAST('18:00', 'Time')
Если выражение начинается с использования псевдонима на @, используйте запись в несколько строк.
|
Ознакомьтесь с описанием синтаксиса RQL.
Шаблон отображаемого названия (label)
Поле label задается в схеме домена опционально, через указание шаблона. Если поле задано, то в представлениях сущности система будет использовать в качестве отображаемых названий объектов значения атрибута или атрибутов объектов, указанных в шаблоне.
Поле label со ссылкой на один атрибут задается в следующем формате: label: "{<attribute>}". Здесь <attribute> — ссылка на атрибут сущности, позволяющий идентифицировать объект в представлении.
Если атрибут, на который вы ссылаетесь в поле label, недостаточно информативен для однозначной идентификации объекта, в поле label можно сослаться на несколько атрибутов. Также в это поле можно добавлять поясняющие комментарии.
Если поле label не задано, то в представлении для отображения названия объекта используются идентификаторы объекта, домена и сущности: {id} ({domainId}/{entityId}).
Пример
В домене assets.example.com задана сущность Оборудования с идентификатором asset. Для сущности Оборудования не задано поле label.
В представлении объекта с UUID, равным ajdmbfdd, вместо названия объекта Оборудования будет отображаться следующая связка: ajdmbfdd (assets.example.com/asset)
Рекомендуется задавать поле label в описании сущности, чтобы облегчить пользователю работу с представлениями.
|
Редакторы и представления атрибутов
В таблице указано, какие элементы управления могут использоваться в настройках виджета в поле control для типов данных атрибутов в том или ином контексте.
Если в настройках виджета указан элемент, отсутствующий в поле таблицы для этого контекста и типа данных, по умолчанию используется элемент из этого поля. Если в поле указано несколько элементов, по умолчанию используется первый элемент.
| Тип данных атрибута | Редактор в форме значения атрибута (модальное окно) | Редактор значения атрибута по месту (панель) | Нередактируемое предзаполненное представление значения атрибута (модальное окно) | Представление значения атрибута (панель) | Представление значения атрибута (ячейка таблицы) |
|---|---|---|---|---|---|
|
uuid |
uuid |
text |
text |
|
|
uuid |
text |
text |
||
|
timestamp |
timestamp |
timestamp |
text |
text |
|
date |
date |
date |
text |
text |
|
time |
time |
time |
text |
text |
|
timestamp_range |
timestamp_range |
text |
text |
|
|
text, text_area |
text, text_area |
text, text_area |
text, text_area |
text |
|
mac |
mac |
mac |
text |
text |
|
integer, integer_slider |
integer |
integer, integer_slider |
text |
text |
|
decimal, decimal_slider |
decimal |
decimal, decimal_slider |
text |
text |
|
float, float_slider |
float |
float, float_slider |
text |
text |
|
switch, checkbox |
switch, checkbox |
switch, checkbox, bool_text |
switch, checkbox, bool_text |
|
|
select, radio |
select |
select, radio |
tag, level |
text, level |
|
ip |
ip |
ip |
text |
text |
|
cidr |
cidr |
cidr |
text |
text |
|
file, drag_drop_area |
file, drag_drop_area |
file |
file, text |
file, text |
|
select, tag |
link, tag |
link, tag |
link, tag |
|
|
select |
select |
select |
select, level |
text, level |
|
link |
link |
link |
link |
link |
| Название | Комментарии |
|---|---|
|
флажок |
|
тег |
|
поле для ввода IP-адреса |
|
поле для выбора уровня |
|
ссылка |
|
радиокнопка |
|
ползунок Типы ползунка:
|
|
выпадающий список |
|
переключатель |
|
поле для ввода текста |
|
кнопка для выбора прикрепленного файла |
|
область для перетаскивания файла |
Составление схемы домена
Для создания схемы домена:
-
Укажите в метаданных схемы информацию, необходимую для создания домена.
-
Опишите сущности, которые будут отображаться в домене на основе схемы.
Например, домен Активы с сущностями Оборудование и Пользователи.
-
Для сущностей опишите атрибуты, которыми характеризуется сущность.
Например, у сущности Оборудование могут быть атрибуты Имя, IP-адрес, Домен.
-
При необходимости задайте пользовательские типы данных для атрибутов с использованием типов данных, доступных в системе. С их помощью можно описать перечисления, таблицы и рабочие процессы.
-
Опишите параметры сортировки данных при работе с описанием интерфейса списка объектов.
-
Если необходимо автоматически подбирать дополнительные данные для хранимых ссылок на определенные объекты, опишите проекции для этих сущностей.
-
Задайте связи для сущностей, которые будут отображаться в домене на основе схемы.
-
Если сущность является потомком другой сущности, задайте параметры наследования.
-
Опишите действия, которые будут выполняться над объектами.
-
Опишите иконки для виджетов представлений и элементов меню, используя медиаресурсы из библиотеки.
-
Опишите структуру меню для раздела домена и его сущностей, отображаемого в главном меню системы — название пунктов меню и параметры их отображения, группировку элементов меню и ссылки на используемые иконки.
-
Опишите интерфейс объекта:
-
Опишите виджеты, которые будут отображаться в представлениях.
-
Опишите панели и модальные окна, которые будут отображаться для экземпляров сущности.
Опишите визуальные элементы, которые будут включаться в панели и модальные окна. К ним относятся вкладки, состоящие из блоков, а также формы создания и редактирования сущностей.
-
Опишите элементы меню, отображаемые на вкладках и панелях.
-
-
Опишите интерфейс списка объектов:
-
Укажите ссылки на идентификаторы действий, которые будут выполняться со списком объектов.
Например, массовые действия удаления, импорта и экспорта.
-
Укажите ссылки на виджеты действий, которые будут отображаться в панели действий интерфейса.
Например, кнопки удаления, импорта и экспорта.
-
Сформируйте список атрибутов сущности, которые будут отображаться в табличном отображении.
-
Укажите настройки ширины и видимости столбцов таблицы.
-
Укажите параметры табличного отображения: фильтрация, сортировка, количество показываемых записей, обновление данных, возможность выбора строк.
-
Была ли полезна эта страница?