Работа с атрибутами различных типов

Работа с атрибутом типа Array

Массив представляет собой таблицу с одним столбцом. Все элементы массива должны принадлежать одному и тому же базовому типу данных. Свойства элемента массива описываются в поле item.

В массивах можно использовать атрибуты типа Enum (перечисление), Workflow (рабочий процесс) и Reference (связанный объект).

Ограничения по количеству элементов массива

Для атрибута можно задавать следующие ограничения:

  • минимальная длина — задается минимальное количество элементов, которое нужно заполнить при работе с массивом.

  • максимальная длина — задается максимальное количество элементов массива.

Фильтрация массива

Данные массива можно отфильтровать по его элементам или по элементам массива в связанной сущности.

Фильтрация по данным массива

Чтобы отфильтровать данные массива:

  1. Нажмите на поле Поле для отображения раскрывающегося списка.

  2. Из списка атрибутов сущности выберите массив.

  3. Выберите в списке оператор в соответствии с типом данных массива.

  4. Введите значение для фильтрации.

Фильтрация по данным массива в связанной сущности

Чтобы отфильтровать данные массива в связанной сущности:

  1. Нажмите на поле Поле для отображения раскрывающегося списка.

  2. Выберите связанную сущность.

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

  4. Выберите массив.

  5. Выберите в списке оператор в соответствии с типом данных массива.

  6. Введите значение для фильтрации.

Примеры задания атрибута типа 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 , этот атрибут можно использовать только для настройки несегментированного идентификатора.

Правила создания несегментированных идентификаторов

Чтобы описать несегментированный идентификатор для сущности в схеме домена:

  1. Задайте последовательность в поле sequences.

  2. Сошлитесь на последовательность в поле sequence в описании атрибута типа Identifier этой сущности.

  3. Если нужно отобразить в идентификаторе определенное количество ведущих нулей, укажите в поле 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

Сегментированный идентификатор

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

  1. По дате — содержит сегменты даты и порядкового номера.

    Примеры идентификаторов по дате
    • 25-04-15-1

    • 25-04-16-2.

  2. По префиксу — содержит сегменты префикса и порядкового номера.

    Примеры идентификаторов по префиксу
    • REQ-1

    • REQ-2

  3. По дате и префиксу — содержит сегменты даты, префикса и порядкового номера.

    Примеры идентификаторов по дате и префиксу
    • INC-25-03-10-1

    • INC-25-03-10-2

Правила создания сегментированных идентификаторов

Чтобы описать сегментированный идентификатор для сущности в схеме домена:

  1. Определите требуемый тип идентификатора.

  2. Задайте его шаблон в поле template в свойствах атрибута типа Identifier этой сущности.

  3. Для идентификатора типов По префиксу и По дате и префиксу:

    1. задайте префикс по умолчанию в поле defaultPrefix в свойствах атрибута;

    2. при необходимости задайте правила подстановки префикса в идентификатор в поле prefixRules в свойствах атрибута;

    3. если изменение префикса в идентификаторе не должно приводить к сбросу инкремента, укажите соответствующие сегменты шаблона в поле segment в свойствах атрибута;

    4. если нужно отобразить в идентификаторе определенное количество ведущих нулей, задайте в поле incrementTemplate в свойствах атрибута общее количество цифр в шаблоне.

Шаблон идентификатора

Шаблон задает состав сегментов идентификатора и определяет порядок их отображения. Он задается в поле template в свойствах атрибута типа Identifier и состоит из системных литералов. Сегменты идентификатора формируются в соответствии с логикой, заданной системными литералами.

Примеры шаблонов, состоящих из системных литералов
  • "{@MM}-{@DD}-{@inc}"

  • "{@prefix}-{@MM}-{@DD}-{@inc}".

Системные литералы

Литералы задаются в описании атрибута типа Identifier в поле template, заключаются в фигурные скобки и содержат символ @ после открывающей скобки.

Пример литерала
  • {@DD}

Литерал {@inc} является обязательным и всегда должен указываться в составе шаблона.

В системе доступны следующие системные литералы:

Литерал Описание

{@YYYY} или {@YY}

Литерал даты. Подставляется текущий год.

{@MM}

Литерал даты. Подставляется текущий месяц

{@DD}

Литерал даты. Подставляется текущая дата.

{@inc}

Литерал инкремента. Определяет порядковый номер идентификатора.

{@prefix}

Литерал префикса. Определяет настраиваемый префикс в составе идентификатора.

Допустимые разделители в литералах:

  • тире;

  • подчеркивание;

  • слэш;

  • обратный слэш.

Литерал {@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}"

Правила подстановки префиксов

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

Правило сопоставляет значение атрибута текущей сущности со значением атрибута сущности-справочника. В правиле нужно задать:

  • атрибут текущей сущности;

  • атрибут сущности-справочника, который будет сравниваться с атрибутом текущей сущности;

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

Алгоритм подстановки префиксов системой:

  1. Система ищет первое удовлетворяющее запросу правила из массива правил подстановки префикса.

  2. Система подставляет в идентификатор значение атрибута, указанного в этом правиле.

  3. Если не удается найти удовлетворяющее запросу правило подстановки, система подставляет в идентификатор префикс по умолчанию. Он описывается в поле defaultPrefix атрибута типа Identifier.

Правила подстановки префикса задаются в поле prefixRules атрибута типа Identifier.

Пример использования правила подстановки

В домене имеются сущности Инцидент и Организация. В схеме домена нужно настроить формирование идентификаторов для текущей сущности Инцидент.

Что делает правило: отображает в идентификаторе инцидента префикс, указывающий на организацию, из которой получен инцидент.

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

При создании правила подстановки нужно указать данные в полях настройки правила. Поля правила описываются в атрибуте типа Identifier текущей сущности Инцидент.

Алгоритм работы правила в примере:

  1. Запоминается атрибут, указанный в поле attribute текущей сущности Инцидент.

    Пример: атрибут inc_organization со значением NorthCompany.

  2. Запоминается атрибут, указанный в поле key сущности-справочника Организация.

    Пример: атрибут organization_name со значением NorthCompany.

  3. Сравниваются значения атрибутов:

    1. Если значения совпадают, правило использует значение атрибута сущности-справочника, указанного в поле value, для подстановки в префикс идентификатора.

      В примере — атрибут short_name со значением NC.

  4. Если значения не совпадают, запускается следующее описанное в схеме правило подстановки.

  5. Если ни одно правило не сработало, используется префикс по умолчанию, указанный в поле 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

{@prefix}

2

{@YYYY} или {@YY}

3

{MM}

4

{DD}

Пример переопределения конфигурации

Изначально в описание шаблона в поле 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, так как при переполнении значений, заданных в шаблоне, ведущие нули добавляться к идентификатору не будут.

Пример переполнения значений

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 и его виджет определены в схеме домена, в форме сущности отображается виджет в виде поля с иконкой. Если переменная выбрана, название поля соответствует ее названию в схеме домена.

Если поле находится в режиме редактирования:

  • при нажатии на иконку в поле отображается модальное окно выбора переменной;

  • при нажатии на крестик текущее значение переменной можно удалить.

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

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