Структура схемы домена

Этот раздел описывает общую структуру схемы домена.

Обзор структуры

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

Общая структура схемы
# Метаданные.
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:

Структура метаданных

Запись метаданных включает следующие поля:

Поле Обязательность и значение по умолчанию Тип данных Описание

id

да

FQDN

Уникальный идентификатор схемы. Полное имя (FQDN) домена, который описывается схемой.

type

да

перечисление

Тип элемента экспертизы. Всегда устанавливается значение domain.

version

да

строка

Версия схемы домена в формате Semantic Versioning.

name

да

строка

Название схемы домена. Допустимы строчные и прописные буквы латинского и кириллического алфавитов (a—​z, A—​Z, а—​я, А—​Я), цифры (0—​9), точки (.), подчеркивания (_) и дефис (-) без пробелов.

tags

нет (по умолчанию: пустой массив)

массив строк

Теги для классификации и поиска схемы в системе.

description

нет (по умолчанию: пустая строка)

строка

Описание схемы домена.

author

нет (по умолчанию: пустая строка)

строка

Имя и контактные данные автора.

Сущности (entities) и атрибуты

Блок entities представляет собой массив записей сущностей, входящих в состав домена. В запись сущности необходимо включить блок attributes, содержащий описание массива атрибутов сущности.

Для настройки атрибутов используются также другие поля на первом уровне схемы:

  • Поле sequences используется для задания последовательностей, используемых в атрибутах-идентификаторах.

  • Поле counterColorPattern используется для настройки цветовой схемы атрибута-счетчика.

Пользовательские типы данных для атрибутов (dataTypes)

В блоке dataTypes определяются пользовательские типы данных для атрибутов — перечисления, рабочие процессы и таблицы.

Связи (linkages) и деревья (trees)

В блоке linkages описываются линейные и древовидные связи между сущностями.

В поле trees описывается глубина и иерархия древовидных связей.

В поле transitiveLinkages описываются деревья транзитивных связей.

Примеси (mixins)

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

Правила данных (dataRules)

В блоке dataRules схемы домена задаются правила данных — выражения, которые при выполнении определенных условий:

  • ограничивают возможные операции с атрибутами сущностей;

  • контролируют допустимые значения атрибутов.

Действия (actions)

В блоке actions описываются действия с экземплярами сущностей.

Описание интерфейса (views)

В блоке views описываются различные представления — интерфейсы объектов и их списков.

В блоке 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.

common.domain.tld

Сущности (Data ID)

Все слова пишутся с заглавной буквы. Разделителей между составными частями нет.

Допустимы строчные и прописные буквы латинского алфавита (a—​z, A—​Z), цифры (0—​9).

Длина не более 30 символов.

  • Asset

  • DeviceConfiguration

Атрибуты (Data ID)

Первое слово пишется со строчной буквы, следующие — с заглавной буквы. Разделителей между составными частями нет (кроме атрибута типа Reference).

Допустимы строчные и прописные буквы латинского алфавита (a—​z, A—​Z), цифры (0—​9).

Длина не более 30 символов.

  • os

  • updatedAt

Типы данных (Data ID)

Все слова пишутся с заглавной буквы. Разделителей между составными частями нет.

Допустимы строчные и прописные буквы латинского алфавита (a—​z, A—​Z), цифры (0—​9).

Длина не более 63 символов.

  • String

  • Uuid

  • MyTable

Представления, действия, виджеты, группы виджетов (View ID)

Первое слово пишется со строчной буквы, следующие — с заглавной буквы. Разделителей между составными частями нет. Можно добавлять произвольный префикс для обозначения группы (например, buttons, btns, actions, act, widgets, forms).

Допустимы строчные и прописные буквы латинского алфавита (a—​z, A—​Z), цифры (0—​9) и подчеркивание (_).

Длина не более 63 символов.

  • deviceView (вариант: lists_device);

  • deviceCreateButton (вариант: buttons_createDevice);

  • deviceCreateAction (вариант: actions_createDevice).

Перечисления константных значений (type, kind)

Слова разделяются символами подчеркивания.

Допустимы строчные и прописные буквы латинского алфавита (a—​z, A—​Z), цифры (0—​9).

Длина не более 63 символов.

  • abstract

  • open_modal

Пути в меню и группах меню

Стандартный путь к местоположению ресурса URL.

  • /assets;

  • /assets/main-devices.

Медиаресурсы (иконки, изображения)

Первое слово пишется со строчной буквы, следующие — с заглавной буквы. Разделителей между составными частями нет. Можно добавлять префикс для обозначения группы (icons, images).

Допустимы строчные и прописные буквы латинского алфавита (a—​z, A—​Z), цифры (0—​9).

Длина не более 63 символов.

  • iconsassets;

  • iconsdevice.

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

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

uuid

text

text

Identifier

uuid

text

text

Timestamp

timestamp

timestamp

timestamp

text

text

Date

date

date

date

text

text

Time

time

time

time

text

text

TimestampRange

timestamp_range

timestamp_range

text

text

String

text, text_area

text, text_area

text, text_area

text, text_area

text

MAC

mac

mac

mac

text

text

Integer

integer, integer_slider

integer

integer, integer_slider

text

text

Decimal

decimal, decimal_slider

decimal

decimal, decimal_slider

text

text

Float

float, float_slider

float

float, float_slider

text

text

Bool

switch, checkbox

switch, checkbox

switch, checkbox, bool_text

switch, checkbox, bool_text

Enum

select, radio

select

select, radio

tag, level

text, level

IpAddress

ip

ip

ip

text

text

CIDR

cidr

cidr

cidr

text

text

Attachment

file, drag_drop_area

file, drag_drop_area

file

file, text

file, text

Reference

select, tag

link, tag

link, tag

link, tag

Workflow

select

select

select

select, level

text, level

URL

link

link

link

link

link

Описание некоторых редакторов
Название Комментарии

checkbox

флажок

tag

тег

ip

поле для ввода IP-адреса

level

поле для выбора уровня

link

ссылка

radio

радиокнопка

slider

ползунок

Типы ползунка:

  • float_slider — в качестве чисел шкалы используются числа с плавающей точкой;

  • integer_slider — используются целые числа;

  • decimal_slider — используются числа с заданной точностью.

select

выпадающий список

switch

переключатель

text_area

поле для ввода текста

file

кнопка для выбора прикрепленного файла

drag_drop_area

область для перетаскивания файла

Составление схемы домена

Для создания схемы домена:

  1. Укажите в метаданных схемы информацию, необходимую для создания домена.

  2. Опишите сущности, которые будут отображаться в домене на основе схемы.

    Например, домен Активы с сущностями Оборудование и Пользователи.

  3. Для сущностей опишите атрибуты, которыми характеризуется сущность.

    Например, у сущности Оборудование могут быть атрибуты Имя, IP-адрес, Домен.

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

  5. Опишите параметры сортировки данных при работе с описанием интерфейса списка объектов.

  6. Если необходимо автоматически подбирать дополнительные данные для хранимых ссылок на определенные объекты, опишите проекции для этих сущностей.

  7. Задайте связи для сущностей, которые будут отображаться в домене на основе схемы.

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

  9. Опишите действия, которые будут выполняться над объектами.

  10. Опишите иконки для виджетов представлений и элементов меню, используя медиаресурсы из библиотеки.

  11. Опишите структуру меню для раздела домена и его сущностей, отображаемого в главном меню системы — название пунктов меню и параметры их отображения, группировку элементов меню и ссылки на используемые иконки.

  12. Опишите интерфейс объекта:

    1. Опишите виджеты, которые будут отображаться в представлениях.

    2. Опишите панели и модальные окна, которые будут отображаться для экземпляров сущности.

      Опишите визуальные элементы, которые будут включаться в панели и модальные окна. К ним относятся вкладки, состоящие из блоков, а также формы создания и редактирования сущностей.

    3. Опишите элементы меню, отображаемые на вкладках и панелях.

  13. Опишите интерфейс списка объектов:

    1. Укажите ссылки на идентификаторы действий, которые будут выполняться со списком объектов.

      Например, массовые действия удаления, импорта и экспорта.

    2. Укажите ссылки на виджеты действий, которые будут отображаться в панели действий интерфейса.

      Например, кнопки удаления, импорта и экспорта.

    3. Сформируйте список атрибутов сущности, которые будут отображаться в табличном отображении.

    4. Укажите настройки ширины и видимости столбцов таблицы.

    5. Укажите параметры табличного отображения: фильтрация, сортировка, количество показываемых записей, обновление данных, возможность выбора строк.

Была ли полезна эта страница?

Обратная связь