Работа с атрибутами различных типов
Раздел содержит описание работы с атрибутами следующих типов:
Работа с атрибутом типа Array
Массив представляет собой таблицу с одним столбцом. Все элементы массива должны принадлежать одному и тому же базовому типу данных. Свойства элемента массива описываются в поле item.
В массивах можно использовать атрибуты типа Enum (перечисление), Workflow (рабочий процесс) и Reference (связанный объект).
Ограничения по количеству элементов массива
Для атрибута можно задавать следующие ограничения:
-
минимальная длина — задается минимальное количество элементов, которое нужно заполнить при работе с массивом.
-
максимальная длина — задается максимальное количество элементов массива.
Фильтрация массива
Данные массива можно отфильтровать по его элементам или по элементам массива в связанной сущности.
Фильтрация по данным массива
Чтобы отфильтровать данные массива:
-
Нажмите на поле Поле для отображения раскрывающегося списка.
-
Из списка атрибутов сущности выберите массив.
-
Выберите в списке оператор в соответствии с типом данных массива.
-
Введите значение для фильтрации.
Фильтрация по данным массива в связанной сущности
Чтобы отфильтровать данные массива в связанной сущности:
-
Нажмите на поле Поле для отображения раскрывающегося списка.
-
Выберите связанную сущность.
-
Нажмите на значок плюса, чтобы раскрыть список атрибутов связанной сущности.
-
Выберите массив.
-
Выберите в списке оператор в соответствии с типом данных массива.
-
Введите значение для фильтрации.
Примеры задания атрибута типа Array в схеме домена
Пример с обязательным атрибутом, позволяющим хранить список данных
attributes:
- id: array
name: Массив данных
# Тип данных атрибута массива
dataType: Array
# Ограничения атрибута массива
constraints:
# Описание валидации по обязательности наличия атрибута
- kind: required
# Описание элемента массива
item:
# Тип данных элемента массива
dataType: String
# Ограничения элемента массива
constraints:
# Описание валидации по обязательности наличия элемента
- kind: required
Пример с обязательным атрибутом, позволяющим хранить прикрепленные файлы форматов JSON, PDF, ZIP, PNG и выдающим предупреждение, если размер файла будет меньше 1 КБ.
attributes:
- id: array
name: Массив прикрепленных файлов
# Тип данных атрибута массива
dataType: Array
# Ограничения атрибута массива
constraints:
# Описание валидации по обязательности
- kind: required
# Описание элемента массива
item:
# Тип данных элемента массива
dataType: Attachment
# Ограничения элемента массива
constraints:
# Описание валидации по допустимым типам файлов
- kind: mime_types
mimeTypes:
- application/json
- application/pdf
- application/zip
- image/png
# Описание валидации по минимальному размеру файла
- kind: size
min: 1kB
# Текст сообщения, которое отображается, если размер файла меньше допустимого
message: Размер файла не может быть меньше 1 КБ.
Работа с атрибутом типа Attachment
Ограничения
Для атрибута существуют следующие ограничения:
-
По размеру. Размер файла не может превышать 4 МБ.
-
По MIME-типу. Необходимо указать значение MIME-типа при описании атрибута.
В схеме домена можно перечислить любые расширения файлов, которые система отобразит в диалоге выбора формата при загрузке файла. Все загруженные текстовые файлы с расширениями TXT, JSON, MD, XML, YAML сохраняются в хранилище с этими расширениями. Все загруженные текстовые файлы с другими расширениями по умолчанию сохраняются в формате TXT.
| Если элемент имеет формат TXT, но система определит его как бинарный, элемент будет сохранен в формате, определенном системой. |
Пример задания атрибута типа Attachment в схеме домена
Пример задания обязательного атрибута, позволяющего загрузить файл формата PDF размером не более 100 КБ.
- id: manual
# Тип данных прикрепленного файла
dataType: Attachment
# Задание ограничений для атрибута
constraints:
# Обязательность заполнения атрибута
- kind: required
# Описание валидации по максимальному размеру файла
- kind: size
max: 100 KB
# Описание валидации по допустимым типам файлов
- kind: mime_types
mimeTypes:
- application/pdf
Работа с атрибутом типа Configuration
Добавление конфигурации
Отображается таблица формы добавления конфигурации со списком включенных конфигураций, позволяющая добавить новую запись. В таблице доступны столбцы:
-
Название — название конфигурации.
-
Описание — описание конфигурации.
-
Версия схемы — номер версии схемы конфигурации.
При нажатии кнопки Добавить система добавляет новую конфигурацию в систему.
Редактирование виджета атрибута с конфигурацией
Если атрибут типа Configuration определен в схеме домена, в форме сущности по умолчанию отображается виджет в виде поля с иконкой.
Если конфигурация выбрана, название поля соответствует ее названию в схеме домена. Если конфигурация не выбрана, в поле отображается плейсхолдер Выберите значение.
При нажатии на поле отображается окно, в котором можно добавить включенную конфигурацию.
Работа с атрибутом типа Identifier
В схеме домена можно задавать человекочитаемые идентификаторы, которые помогают быстро находить необходимые объекты. Идентификаторы описываются с помощью атрибутов типа данных Identifier.
Поддерживаются следующие типы идентификаторов:
-
несегментированный — идентификаторы этого типа используют единую последовательность чисел для создания уникальных значений.
-
сегментированный — идентификаторы этого типа представляют собой совокупность отдельных сегментов и используют разные последовательности чисел для создания уникальных значений.
Несегментированный идентификатор
Несегментированный идентификатор задается с помощью последовательностей.
Примеры несегментированных идентификаторов
-
3 -
25 -
107
Последовательность
Последовательность сохраняет текущее состояние счетчика и позволяет переиспользовать счетчик в атрибутах сущности типа Identifier.
Последовательность описывается в поле sequences на первом уровне схемы домена.
Если вы сослались в описании атрибута на последовательность в поле sequence , этот атрибут можно использовать только для настройки несегментированного идентификатора.
|
Правила создания несегментированных идентификаторов
Чтобы описать несегментированный идентификатор для сущности в схеме домена:
-
Задайте последовательность в поле
sequences. -
Сошлитесь на последовательность в поле sequence в описании атрибута типа
Identifierэтой сущности. -
Если нужно отобразить в идентификаторе определенное количество ведущих нулей, укажите в поле
incrementTemplateатрибута общее количество цифр в шаблоне идентификатора.
Пример описания несегментированного идентификатора в схеме домена
# домен сущности
it.domain.ru
# массив записей последовательностей
sequences:
# запись массива
- id: SequenceId
# начальное значение последовательности
startFrom: 1
# описание последовательности
description: последовательность с начальным значением 1
entities:
- id: Incident
attributes:
# атрибут типа Identifier, в описании которого указывается FQID последовательности
- id: incidentId
# тип атрибута Identifier
dataType: Identifier
# ссылка на FQID последовательности, используемой в атрибуте
sequence: it.domain.ru/SequenceId
Сегментированный идентификатор
В доменной схеме можно задавать сегментированные идентификаторы разных типов. Они различаются набором сегментов, из которых состоит идентификатор.
-
По дате — содержит сегменты даты и порядкового номера.
Примеры идентификаторов по дате
-
25-04-15-1 -
25-04-16-2.
-
-
По префиксу — содержит сегменты префикса и порядкового номера.
Примеры идентификаторов по префиксу
-
REQ-1 -
REQ-2
-
-
По дате и префиксу — содержит сегменты даты, префикса и порядкового номера.
Примеры идентификаторов по дате и префиксу
-
INC-25-03-10-1 -
INC-25-03-10-2
-
Правила создания сегментированных идентификаторов
Чтобы описать сегментированный идентификатор для сущности в схеме домена:
-
Определите требуемый тип идентификатора.
-
Задайте его шаблон в поле
templateв свойствах атрибута типаIdentifierэтой сущности. -
Для идентификатора типов По префиксу и По дате и префиксу:
-
задайте префикс по умолчанию в поле
defaultPrefixв свойствах атрибута; -
при необходимости задайте правила подстановки префикса в идентификатор в поле
prefixRulesв свойствах атрибута; -
если изменение префикса в идентификаторе не должно приводить к сбросу инкремента, укажите соответствующие сегменты шаблона в поле
segmentв свойствах атрибута; -
если нужно отобразить в идентификаторе определенное количество ведущих нулей, задайте в поле
incrementTemplateв свойствах атрибута общее количество цифр в шаблоне.
-
Шаблон идентификатора
Шаблон задает состав сегментов идентификатора и определяет порядок их отображения.
Он задается в поле template в свойствах атрибута типа Identifier и состоит из системных литералов. Сегменты идентификатора формируются в соответствии с логикой, заданной системными литералами.
Примеры шаблонов, состоящих из системных литералов
-
"{@MM}-{@DD}-{@inc}" -
"{@prefix}-{@MM}-{@DD}-{@inc}".
Системные литералы
Литералы задаются в описании атрибута типа Identifier в поле template, заключаются в фигурные скобки и содержат символ @ после открывающей скобки.
Пример литерала
-
{@DD}
Литерал {@inc} является обязательным и всегда должен указываться в составе шаблона.
|
В системе доступны следующие системные литералы:
| Литерал | Описание |
|---|---|
|
Литерал даты. Подставляется текущий год. |
|
Литерал даты. Подставляется текущий месяц |
|
Литерал даты. Подставляется текущая дата. |
|
Литерал инкремента. Определяет порядковый номер идентификатора. |
|
Литерал префикса. Определяет настраиваемый префикс в составе идентификатора. |
Допустимые разделители в литералах:
-
тире;
-
подчеркивание;
-
слэш;
-
обратный слэш.
Литерал {@inc} является обязательным и всегда должен указываться в составе шаблона.
|
Типы идентификаторов: По дате
Шаблон должен содержать литералы даты и литерал инкремента {@inc}. Литералы даты не могут повторяться в шаблоне.
Примеры шаблонов с идентификатором "По дате"
-
{@YYYY}-{@MM}-{@DD}-{@inc}" -
"{@YYYY-{@MM}-{@inc}" -
"{@YY}-{@MM}-{@inc}" -
"{@MM}-{@inc}" -
"{@MM}-{@DD}-{@inc}"
Типы идентификаторов: По префиксу
Шаблон должен содержать литерал инкремента {@inc} и литерал префикса {@prefix}. Система подставляет в литерал префикса одно из следующих значений:
-
префикс по умолчанию. Является обязательным и задается в поле
defaultPrefix. Используется, если ни одно правило подстановки префикса не сработало. -
префикс, найденный в соответствии с правилами подстановки префикса, заданными в массиве
prefixRules. Правила подстановки задавать не обязательно.
Примеры шаблонов с идентификатором "По префиксу"
-
"{@prefix}-{@inc}" -
"{@inc}-{@prefix}"
Тип сегментированных идентификаторов: По дате и префиксу
Правила создания шаблона:
-
Шаблон должен содержать литерал префикса
{@prefix}. В его значение подставляется:-
префикс по умолчанию. Он является обязательным и задается в поле
defaultPrefix. Префикс подставляется, если ни одно правило подстановки префикса не сработало. -
префикс, найденный по правилам подстановки префикса, заданным в массиве
prefixRules. Правила подстановки задавать не обязательно.
-
-
Шаблон должен содержать литералы даты. Эти литералы не могут повторяться в рамках шаблона.
-
Шаблон должен содержать литерал инкремента
{@inc}.
Примеры шаблонов с идентификатором "По дате и префиксу"
-
"{@prefix}-{@YYYY}-{@MM}-{@DD}-{@inc}" -
"{@prefix}-{@YYYY}-{@MM}-{@inc}" -
"{@prefix}-{@MM}-{@DD}-{@inc}"
Правила подстановки префиксов
В схеме домена описывается шаблон идентификатора текущей сущности. Правила подстановки префиксов позволяют автоматически использовать в качестве префикса идентификатора значение атрибута другой сущности. Другая сущность выступает в роли справочника.
Правило сопоставляет значение атрибута текущей сущности со значением атрибута сущности-справочника. В правиле нужно задать:
-
атрибут текущей сущности;
-
атрибут сущности-справочника, который будет сравниваться с атрибутом текущей сущности;
-
атрибут сущности-справочника, который будет подставляться в идентификатор, если атрибут текущей сущности и сравниваемый атрибут сущности-справочника идентичны, то есть, если правило выполняется.
Алгоритм подстановки префиксов системой:
-
Система ищет первое удовлетворяющее запросу правила из массива правил подстановки префикса.
-
Система подставляет в идентификатор значение атрибута, указанного в этом правиле.
-
Если не удается найти удовлетворяющее запросу правило подстановки, система подставляет в идентификатор префикс по умолчанию. Он описывается в поле
defaultPrefixатрибута типаIdentifier.
Правила подстановки префикса задаются в поле prefixRules атрибута типа Identifier.
Пример использования правила подстановки
В домене имеются сущности Инцидент и Организация. В схеме домена нужно настроить формирование идентификаторов для текущей сущности Инцидент.
Что делает правило: отображает в идентификаторе инцидента префикс, указывающий на организацию, из которой получен инцидент.
Сущность Организация выступает как справочник. Система будет использовать значения ее атрибутов в префиксах идентификаторов инцидентов согласно заданному правилу.
При создании правила подстановки нужно указать данные в полях настройки правила.
Поля правила описываются в атрибуте типа Identifier текущей сущности Инцидент.
Алгоритм работы правила в примере:
-
Запоминается атрибут, указанный в поле
attributeтекущей сущности Инцидент.Пример: атрибут
inc_organizationсо значением NorthCompany. -
Запоминается атрибут, указанный в поле
keyсущности-справочника Организация.Пример: атрибут
organization_nameсо значением NorthCompany. -
Сравниваются значения атрибутов:
-
Если значения совпадают, правило использует значение атрибута сущности-справочника, указанного в поле
value, для подстановки в префикс идентификатора.В примере — атрибут
short_nameсо значением NC.
-
-
Если значения не совпадают, запускается следующее описанное в схеме правило подстановки.
-
Если ни одно правило не сработало, используется префикс по умолчанию, указанный в поле
defaultPrefix.
В результате идентификатор объекта будет содержать префикс NC.
Фрагмент схемы домена:
entities:
- id: Incident
attributes:
# Уникальный идентификатор атрибута
- id: incidentId
# Название атрибута
name: ИД инцидента
# Тип данных атрибута (обязательно указывается identifier)
dataType: Identifier
# Описание шаблона идентификатора (тип: по префиксу)
template: "{@prefix}-{@inc}"
# Префикс, используемый по умолчанию
defaultPrefix: INC
# Массив правил подстановки
prefixRules:
# ИД правила 1
- id: Rule_1
# Атрибут текущей сущности, значение которого используется для сравнения
attribute: inc_organization
source:
# Сущность-справочник
entity: organization
# Атрибут сущности-справочника, значение которого используется для сравнения
key: organization_name
# Атрибут сущности-справочника, значение которого используется как префикс, если значения атрибутов в полях attribute и key совпадают
value: short_name
Переопределение конфигурации сегментированного идентификатора
Схема домена позволяет переопределить структуру сегментов идентификатора из шаблона, описанного в поле template. Это позволяет не учитывать изменение префикса в идентификаторе как триггер сброса инкремента.
Для настройки переопределения необходимо перечислить в поле segment литералы конфигурации для включения в идентификатор.
Литералы всегда перечисляются в поле segment в следующем порядке:
| Порядковый номер | Литерал |
|---|---|
1 |
|
2 |
|
3 |
|
4 |
|
Пример переопределения конфигурации
Изначально в описание шаблона в поле template включены следующие литералы: префикс, год, месяц, день, инкремент. Литерал инкремента всегда включается в идентификатор и не участвует в переопределении.
template: "{@prefix}-{@YY}-{@MM}-{@DD}-{@inc}"
Идентификаторы, созданные на основе этого шаблона, могут выглядеть следующим образом:
-
INC-25-04-15-1 -
INC-25-04-15-2 -
INC-25-04-15-3 -
REQ-25-04-15-1 -
REQ-25-04-15-2
При появлении нового префикса REQ инкремент сбрасывается до начального значения.
|
Можно переопределить шаблон, перечислив в поле segment литералы дня, месяца и года. В идентификаторах, созданных на основе этого шаблона, изменение литерала префикса будет игнорироваться инкрементом.
entities:
# Сущность "Инцидент"
- id: Incident
attributes:
# Уникальный идентификатор атрибута
- id: IncidentId
# Название атрибута
name: ИД инцидента
# Тип данных атрибута (обязательно указывается identifier)
dataType: Identifier
# Описание шаблона идентификатора (тип: по дате и префиксу)
template: "{@prefix}-{@YY}-{@MM}-{@DD}-{@inc}"
# Перечисление литералов сегментов для включения в переопределенный шаблон идентификатора
segment:
- YYYY
- MM
- DD
Идентификаторы, созданные на основе переопределенного шаблона, будут иметь следующий вид:
-
INC-25-04-15-1 -
INC-25-04-15-2 -
INC-25-04-15-3 -
REQ-25-04-15-4 -
REQ-25-04-15-5
После переопределения при появлении префикса REQ инкремент не сбрасывается.
|
Настройки инкремента
Несегментированные и сегментированные идентификаторы могут дополняться ведущими нулями. Для этого в поле incrementTemplate нужно задать общее количество цифр в шаблоне.
Количество ведущих нулей вычисляется как значение поля incrementTemplate минус текущее значение литерала {@inc}.
Пример настройки инкремента
incrementTemplate = 0000000000 (содержит 10 цифр).
Литерал {@inc} для идентификатора принимает значение 111 (содержит 3 цифры).
С учетом настройки поля incrementTemplate литерал {@inc} в идентификаторе принимает значение 0000000111.
Здесь количество ведущих нулей равно 7. Это результат выражения: 10 — 3.
Фрагмент схемы домена:
entities:
# Сущность "Инцидент"
- id: Incident
attributes:
# Уникальный идентификатор атрибута
- id: IncidentId
# Название атрибута
name: ИД инцидента
# Тип данных атрибута (обязательно указывается identifier)
dataType: Identifier
# Описание шаблона идентификатора (тип: по дате)
template: "{@prefix}-{@YY}-{@MM}-{@DD}-{@inc}"
# Общее количество цифр в шаблоне
incrementTemplate: "0000000000"
Система создает идентификаторы вида:
-
"2025-04-0000000001"
-
"2025-04-0000000002"
-
"2025-04-0000000009"
-
"2025-04-0000000010"
|
Рекомендуется задавать достаточное количество цифр в поле |
Пример переполнения значений
incrementTemplate = 0000. Содержит 4 цифры.
С учетом настройки поля incrementTemplate литерал {@inc} в идентификаторе принимает значение 8356. Содержит 4 цифры.
Количество ведущих нулей равно 0. Это результат выражения: 4 — 4.
Работа с атрибутом типа Reference
Атрибут типа Reference используется при работе с компактным представлением объекта. Он позволяет выбрать из раскрывающегося списка объектов другой сущности
объект или объекты и добавить их в качестве значения поля в компактном представлении. При просмотре компактного представления эти связанные объекты отображаются как теги.
Нажав на тег, можно просмотреть поля связанного объекта в окне, а затем вернуться к компактному представлению объекта. При этом в рабочей области экрана по-прежнему
отображается списочное представление объекта.
Пример использования атрибута типа Reference
Пользователь работает с сущностями Администратор и Оборудование. При выборе определенного администратора в списочном представлении можно выполнить следующие действия в его компактном представлении:
-
Отобразить раскрывающийся список имеющегося оборудования в поле Отвечает за оборудование в виде значения атрибута или набора атрибутов сущности. В примере используется следующая комбинация атрибутов: название + номер + отдел. Например, принтер "356TGH Бухгалтерия".
-
Выбрать объект оборудования в качестве значения этого поля.
-
При нажатии на объект оборудования в компактном представлении администратора отобразить карточку этого объекта, а затем по нажатии кнопки Назад в карточке вернуться к просмотру компактного представления администратора.
Описание сущности Администратор:
entities:
# Уникальный идентификатор сущности
- id: Administrator
# Название сущности
name: Администратор
# Описание сущности
description: Администратор
# Перечисление элементов массива атрибутов для сущности
attributes:
- id: label_name
name: Имя
dataType: string
- id: RefDevice
name: Отвечает за оборудование
# Для атрибута задается тип Reference
dataType: Reference
# В описании атрибута указывается сущность Оборудование, на которую ссылается атрибут
entity: Device
Описание сущности Оборудование:
entities:
# Уникальный идентификатор сущности
- id: Device
# Название сущности
name: Оборудование
# Описание сущности
description: Оборудование
# Настройка отображения комбинации атрибутов сущности
label: " {device_name} {device_number} {device_facility} "
# Перечисление элементов массива атрибутов для сущности
attributes:
- id: device_name
name: Название оборудования
dataType: string
- id: device_number
name: Номер оборудования
dataType: string
- id: device_facility
name: Отдел, за которым закреплено оборудование
dataType: string
Фильтрация по атрибутам связанного объекта невозможна, если связь установлена через атрибут типа Reference.
|
Работа с атрибутом типа Variable
Добавление переменной в конфигурацию
Отображается таблица формы добавления переменной, позволяющая добавить переменную в конфигурацию. Переменные в таблице соответствуют типу данных запрашиваемой переменной. В таблице доступны столбцы:
-
Название — название переменной.
-
Описание — описание переменной.
-
Секрет — указывает, является ли переменная секретом.
При нажатии кнопки Добавить система добавляет переменную в параметры конфигурации и отображает панель аргумента с набором полей, соответствующим созданной переменной.
Редактирование и удаление виджета атрибута с переменной
Если атрибут типа Variable и его виджет определены в схеме домена, в форме сущности отображается виджет в виде поля с иконкой.
Если переменная выбрана, название поля соответствует ее названию в схеме домена.
Если поле находится в режиме редактирования:
-
при нажатии на иконку в поле отображается модальное окно выбора переменной;
-
при нажатии на крестик текущее значение переменной можно удалить.
Была ли полезна эта страница?