Атрибуты сущностей

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

Ознакомьтесь с правилами нотации в схеме домена. Это позволит присваивать корректные названия создаваемым элементам схемы. Эти названия будут отображаться в интерфейсе системы.

Общие поля для всех типов атрибутов

Путь в схеме: entities[].attributes[]

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

Описание каждого атрибута включает следующие поля:

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

id

да

Data ID

Уникальный идентификатор атрибута

name

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

строка

Название атрибута

description

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

строка

Описание атрибута. Не выводится в представлениях. Отображается в схеме домена.

dataType

да

перечисление, Data ID Ref или FQID

Тип данных атрибута. Можно указывать как встроенный тип данных, так и идентификатор пользовательского типа данных. Если пользовательский тип данных определен в другом домене, нужно указывать в этом поле FQID пользовательского типа данных.

constraints

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

массив

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

Ознакомьтесь с описанием поля constraints.

readonly

нет (по умолчанию — false)

логическое

Переключатель возможности редактирования атрибута.

Ознакомьтесь с описанием поля readonly.

Схема описания атрибута
attributes:
  # Уникальный идентификатор атрибута.
  - id:
    # Название атрибута.
    name:
    # Описание атрибута.
    description:
    # Тип данных атрибута.
    dataType:
    # Массив описаний валидации атрибута.
    constraints:
      # Первое описание валидации.
      - kind:
      # Второе описание валидации.
      - kind:

Правила атрибута (constraints)

Путь в схеме: entities[].attributes[].constraints[]

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

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

kind

да

Описание валидации. Ознакомьтесь со списком доступных значений.

массив

message

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

Сообщение об ошибке при срабатывании ограничителя на входящих данных.

строка

min

нет (по умолчанию — 0)

Минимальное значение. Поле применимо только для следующих видов ограничителей:

  • range — минимальное значение числа;

  • length — минимальное возможное количество символов в атрибуте.

целое число

max

нет (по умолчанию:

  • 231-1 для числа символов;

  • 4 МБ для размера файла.

Максимальное значение. Поле применимо только для следующих видов ограничителей:

  • range — максимальное значение числа;

  • length — максимальное возможное количество символов в атрибуте;

  • size — максимальный размер файла.

целое число

regexp

нет

Регулярное выражение. Поле применимо только для ограничителя regexp.

строка

mimeTypes

нет

Допустимые типы файлов. Поле применимо только для ограничителя mime_types и представляет собой массив полей application.

массив

Виды валидации (kind)

Путь в схеме: entities[].attributes[].constraints[].kind

Доступны следующие типы валидации:

  • required — обязательный атрибут, то есть значение атрибута не должно быть пустым.

  • range — ограничения числового значения (используется только для числовых типов данных: Integer, Decimal, Float).

  • length — ограничение количества символов в атрибуте. Необходимо указать максимальное и/или минимальное количество символов в полях max и min.

  • regexp — задание текстового шаблона в формате регулярного выражения. Необходимо задать выражение в поле regexp.

  • size — ограничение размера файла. Необходимо указать минимальный и/или максимальный объем файла в полях min и max.

  • mime_types — ограничение типов для загрузки файлов в это поле. Необходимо указать допустимые типы файлов в поле mimeTypes.

  • unique — ограничение на уникальность значения атрибута. Применимо только для следующих типов данных:

    • строка;

    • целое число;

    • UUID;

    • ссылка;

    • массив;

    • таблица.

Возможность редактирования атрибута (readonly)

Путь в схеме: entities[].attributes[].readonly

Значение поля readonly определяет возможность редактирования атрибута:

  • true — значение атрибута задается при его создании и не может быть обновлено.

    Пример: идентификатор из внешней системы, который задается при синхронизации и больше не обновляется.
  • false — значение атрибута можно обновлять.

Атрибут типа Массив (Array)

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

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

Описание атрибута типа Array дополнительно включает поля:

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

item

нет

объект

Параметры элемента массива. Ознакомьтесь с описанием поля item.

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

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

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

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

Параметры элемента массива (item)

Путь в схеме: entities[].attributes[].item

В схеме определяются параметры для элемента массива. Поле имеет следующую структуру:

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

dataType

да

Тип данных атрибута.
Для пользовательских типов данных используется следующий формат: Data ID Ref, FQID.
Для прочих типов данных используется формат enum.

перечисление, Data ID Ref или FQID

constraints

нет

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

массив

Примеры задания атрибута типа Массив

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

Пример задания атрибута типа Файл

Пример задания обязательного атрибута, позволяющего загрузить файл формата PDF размером не более 100 КБ.
- id: manual
  # Тип данных прикрепленного файла
  dataType: Attachment
  # Задание ограничений для атрибута
  constraints:
    # Обязательность заполнения атрибута
    - kind: required
    # Описание валидации по максимальному размеру файла
    - kind: size
      max: 100 KB
     # Описание валидации по допустимым типам файлов
    - kind: mime_types
      mimeTypes:
         - application/pdf

Атрибут типа Calculation

Описание атрибута типа Array дополнительно включает поля:

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

calculation

да

объект

Ссылка на расчет, результат которого будет являться значением атрибута.

Ознакомьтесь с описанием поля calculation.

Ссылка на расчет (calculation)

Путь в схеме: entities[].attributes[].calculation

В поле calculation указывается ссылка на расчет, результат которого будет являться значением атрибута.

Поле calculation позволяет выводить только числовые результаты расчетов. Чтобы выводить результаты расчетов всех типов, как числовые, так и нечисловые, рекомендуется использовать поле target расчета в схеме автоматизации.

Поле имеет следующую структуру:

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

schemaId

да

Идентификатор схемы, в которой определен требуемый расчет

строка

id

да

Идентификатор расчета

строка

Пример задания атрибута типа Calculation

Пример описания поля calculation для сущности Требование (requirement)
entities:
  - id: Requirement
    attributes:
      - id: assessmentIndex
        name: Результат расчета индекса соответствия
        dataType: Calculation
        calculation:
          schemaId: evo.compliance.audit.calculations
          id: audit_assessment_compliance_index

Атрибут типа Счетчик (Counter)

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

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

  • Счетчики с лимитом ведут отсчет времени, оставшегося до времени срабатывания. После достижения лимита записывается соответствующее событие аудита.

Счетчик можно создать следующими способами:

  • Объявить для сущности в схеме домена атрибут с типом Counter. В этом случае счетчик создается для каждого экземпляра сущности.

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

Запускать и останавливать счетчики можно с помощью API.

Настройка цветовой схемы для атрибута типа Счетчик (counterColorPattern)

Путь в схеме: counterColorPattern

Поле counterColorPattern используется для настройки цветовой схемы счетчика. В нем указывается значение параметра, при достижении которого счетчик изменяет цвет. Доступные опции:

  • время, прошедшее с начала отсчета;

  • количество процентов времени, прошедшего с начала отсчета.

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

Каждый элемент массива имеет следующую структуру:

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

id

да

Уникальный идентификатор правила изменения цветовой индикации

объект

В рамках схемы домена можно создавать более одного правила.

red

да

Значение параметра, при котором цвет счетчика меняется на красный.

строка

Значение в этом поле должно быть больше значения в поле yellow. Ознакомьтесь с примером.

yellow

да

Значение параметра, при котором цвет счетчика меняется на желтый.

строка

Значение в этом поле должно быть меньше значения в поле red. Ознакомьтесь с примером.

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

…​ # Поле, содержащее правила настроек цветовой схемы счетчиков. counterColorPattern: # Идентификатор правила с указанием времени, прошедшего с начала отсчета. - id: counterColorTime red: 1w2d3h5m yellow: 2d # Идентификатор правила с указанием количества процентов времени, прошедшего с начала отсчета. - id: counterColorPercentage red: 60% yellow: 40% …​

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

Пример ссылки на заданную цветовую схему счетчика в настройках виджета в интерфейсе объекта
views:
  - id: deviceView
    widgets:
      # Описание виджета счетчика.
      - id: CounterTime
        type: attribute
        attribute: counter
        # Ссылка на идентификатор цветовой схемы счетчика.
        counterColorPattern: counterColorTime
        label: Счетчик времени
        description: Счетчик времени
Пример ссылки на заданную цветовую схему счетчика в настройках табличного отображения
views:
  - id: listsDevices
    table:
      columns:
        - id: counterPercentage
          attribute: counter
 	  counterColorPattern: counterColorPercentage
          label: Счетчик времени
          layout:
            width:
              default: 200
              min: 50
              max: 450

Атрибут типа Идентификатор (Identifier)

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

Поддерживаются следующие типы идентификаторов:

  • несегментированный — идентификаторы этого типа используют единую последовательность чисел для создания уникальных значений.

  • сегментированный — идентификаторы этого типа представляют собой совокупность отдельных сегментов и используют разные последовательности чисел для создания уникальных значений.

Описание атрибута типа Array дополнительно включает поля:

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

sequence

нет

FQID

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

template

нет

строка

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

segment

нет

массив

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

defaultPrefix

нет

строка

Префикс идентификатора по умолчанию. Используется, если ни одно правило подстановки префикса не сработало.

prefixRules

нет

массив

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

Ознакомьтесь с описанием поля prefixRules.

incrementTemplate

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

строка

Общее количество цифр в шаблоне идентификатора. Определяет отступ из нулей в числовой последовательности. Может содержать от 2 до 10 нулей.

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

Несегментированный идентификатор задается с помощью последовательностей.

Примеры несегментированных идентификаторов
  • 3

  • 25

  • 107

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

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

  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

Последовательности (sequences)

Путь в схеме: sequences[]

Последовательность сохраняет текущее состояние счетчика и позволяет переиспользовать счетчик в атрибутах сущности типа Identifier. Последовательность описывается в массиве sequences на первом уровне схемы домена.

Если вы сослались в описании атрибута на последовательность в поле sequence , этот атрибут можно использовать только для настройки несегментированного идентификатора.

Каждый элемент массива имеет следующую структуру:

Поле Описание Тип данных Комментарии

id

Идентификатор типа данных

DataID

startFrom

Начальное число в последовательности

число

По умолчанию устанавливается значение 1.

description

Описание типа данных

строка

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

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

  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)

Путь в схеме: entities[].attributes[].template

Шаблон задает состав сегментов идентификатора и определяет порядок их отображения. Он задается в поле 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}"

Правила подстановки префиксов (`prefixRules)

Путь в схеме: entities[].attributes[].prefixRules[]

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

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

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

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

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

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

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

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

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

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

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

id

да

Уникальный идентификатор правила

Data ID

attribute

да

Атрибут

Data ID Ref

Атрибут текущей сущности. Правило сопоставляет его значение со значением атрибута в сущности-справочнике.

Тип атрибута в этом поле должен совпадать с типом атрибута в поле key, описанном в поле source.

source

да

Источник

объект

Ознакомьтесь с описанием поля source.

Структура source

В поле source задаются ссылки на источники данных для правил подстановки. Это идентификаторы сущности и атрибутов, используемые в правилах. Источники описываются следующими полями:

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

entity

да

Ссылка на сущность, которая является справочником.

Entity ID Ref

key

да

Ссылка на атрибут сущности-справочника для сопоставления со значением атрибута текущей сущности.

Data ID Ref

Тип атрибута в этом поле должен совпадать с типом атрибута в поле attribute правила подстановки.

value

да

Ссылка на атрибут сущности-справочника для подстановки значения в префикс идентификатора при выполнении правила.

Data ID Ref

Тип атрибута в этом поле всегда должен быть string.

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

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

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

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

При создании правила подстановки нужно указать данные в полях настройки правила. Поля правила описываются в атрибуте типа 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)

Путь в схеме: entities[].attributes[].incrementTemplate

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

Описание атрибута типа Array дополнительно включает поля:

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

entity

да

Data ID Ref или FQID

Ссылка на сущность. Поле доступно только для типа данных 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

Системные атрибуты

Система автоматически создает набор системных атрибутов для каждого объекта и связи, заполняя их значения. В отличие от обычных, несистемных атрибутов, системные атрибуты не требуется задавать в схеме домена.

Значения системных атрибутов, кроме organizationId, автоматически обновляются системой.

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

Каждый системный атрибут имеет неизменяемое название на русском языке, которое указано в таблице. Это название будет отображаться в виджете атрибута в пользовательском интерфейсе.

При использовании системного атрибута в списочном представлении можно изменить название столбца, где отображается атрибут. Название системного атрибута в виджете изменить нельзя.

В таблице представлены существующие системные атрибуты объектов:

Название системного атрибута объекта Тип данных Описание Отображаемое название атрибута

id

Uuid

Идентификатор объекта в текущем экземпляре домена

Идентификатор объекта

organizationId

Reference (Organization)

Отображаемое название организации, присвоенное объекту. Ознакомьтесь с описанием атрибута.

Организация

domainId

String (FQDN)

Идентификатор домена из схемы домена

Идентификатор домена

entityId

String (Definition ID)

Идентификатор сущности из схемы домена

Идентификатор сущности

entityName

String

Название сущности из поля name

Название сущности

createdAt

Timestamp

Дата и время создания объекта с точностью до секунд

Дата создания

createdBy

Reference (User)

Отображаемое имя пользователя, который создал объект.

Создал

updatedAt

Timestamp

Последние дата и время обновления объекта с точностью до секунд

Дата изменения

updatedBy

Reference (User)

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

Изменил

tenantId

Reference (Tenant)

Отображаемое название тенанта, который является владельцем объекта.

Идентификатор тенанта

label

String

Неуникальный человекочитаемый идентификатор объекта, предназначенный для пользователя

Лейбл

version

Integer

Версия объекта

Версия объекта

Привязка к организации через атрибут organizationId

Привязка объекта к организации осуществляется через значение атрибута organizationId. Пользователь может выбрать значение organizationId при создании объекта. Отредактировать значение organizationId можно с помощью плейбука.

В схеме домена определяется необходимость отображения виджета атрибута в модальном окне создания объекта:

  • Если виджет отображается, пользователь может выбрать доступную организацию.

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

По умолчанию атрибут organizationId заполнять необязательно. Обязательность можно задать с помощью эффекта required в правилах данных.

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

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