Сущности домена

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

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

Структура блока entities

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

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

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

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

id

нет

Data ID

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

name

нет

строка

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

label

нет (по умолчанию — '{id} ({domainId}/{entityId})')

строка

Название сущности, отображаемое в интерфейсе.

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

description

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

строка

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

kind

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

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

Вид сущности. В текущей реализации системой всегда обрабатываются сущности с видом regular — стандартная сущность.

attributes

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

массив

Описание атрибутов сущности.

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

sorting

нет

массив

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

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

identification

нет

массив

Описание правил идентификации объектов, поступающих в систему.

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

reconciliation

нет

массив

Описание правил реконсиляции объектов, поступающих в систему.

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

projection

нет

массив

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

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

searching

нет

массив

Описание набора атрибутов, по которым будет осуществлен поиск в списке объектов.

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

inherits

нет

Data ID Ref

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

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

icons

нет

Data ID Ref

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

graphView

нет

объект

Настройки отображения иконки на диаграмме связей.

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

scanTargetGroup

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

логическое

Признак группы активов, предназначенной для сканирования.

scanTarget

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

логическое

Признак актива, предназначенного для сканирования.

Пример записи сущности Пользователь
entities:
  # Уникальный идентификатор сущности.
  - id: Person
    # Название сущности.
    name: Пользователь
    # Описание сущности.
    description: Пользователь, сотрудник
    # Перечисление атрибутов для сущности.
    attributes:
      ...

Правила сортировки (sorting)

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

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

Если хотя бы одно правило сортировки не определено в схеме домена, система сортирует экземпляры в таблице по времени поступившей о них информации за секундный интервал и далее сортирует их по идентификатору экземпляра.

Поле sorting представляет собой массив записей, описывающих правила сортировки атрибутов сущности. Каждый элемент массива имеет следующую структуру:

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

id

да

Data ID

Уникальный идентификатор правила сортировки из описания сущности.

name

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

строка

Название правила сортировки.

by

да

массив

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

createIndex

нет

логическое

Переключатель индексирования перечисленных атрибутов.

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

Используйте индексацию, если:

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

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

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

Структура by

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

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

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

attribute

да

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

Data ID Ref

Если в правиле указана ссылка на атрибут с типом данных Reference, система подставляет при сортировке объектов вместо значения самого атрибута значение поля label объекта, на который указывает ссылка.

direction

да

asc

Порядок сортировки

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

Доступные значения:

  • asc — по возрастанию.

  • desc — по убыванию.

Идентификация и реконсиляция

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

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

Правила идентификации (identification)

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

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

  1. Система ищет дубликаты объектов во входящих данных и отфильтровывает их.

  2. После отработки фильтрации дубликатов система сравнивает объекты с объектами, хранящимися в БД.

  3. Если система находит в БД дубликаты объекта, они будут удалены. Остается по одному экземпляру объекта на стороне входящих данных и на стороне БД.

  4. Система записывает данные о полученных объектах в БД.

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

Логика формирования правил идентификации:

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

  2. На одном уровне вложенности можно одновременно использовать разные логические операторы.

  3. Если в блоке задано несколько правил, между ними работает логика OR.

  4. Правила располагаются в порядке убывания приоритета.

При обработке входящих данных можно дополнительно использовать фильтрацию данных с помощью правила на языке преобразования данных VRL (Vector Remap Language). VRL-правило фильтрации описывается в рамках правила идентификации в поле filter.

VRL-правило позволяет выполнить следующие действия:

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

  2. Фильтрация данных, полученных из БД. Данные собираются на основе атрибутов, заданных в правиле, а затем фильтруются с помощью VRL-правила.

Структура поля identification

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

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

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

id

Уникальный идентификатор правила (обязательное поле).

строка

rule

Описание правила.

массив

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

filter

Фильтрация входящих данных с помощью VRL-правила.

массив

Поле содержит команду на языке VRL, возвращающую ответ в булевом формате.

Структура правила идентификации (rule)

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

Поле содержит массив ссылок на атрибуты, по которым происходит идентификация в рамках правила. Можно использовать до трех уровней вложений. Каждый элемент массива имеет следующую структуру:

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

attribute

да

Ссылка на атрибут, по которому происходит идентификация.

строка

and

нет

Логический оператор И.

строка

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

or

нет

Логический оператор ИЛИ.

строка

Поле содержит массив ссылок на атрибуты, которые учитываются в правиле по логике ИЛИ. Может использоваться на разных уровнях в правиле.

Правила реконсиляции (reconciliation)

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

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

Для сущности нельзя определить правило реконсиляции, если не задано правило идентификации.

Логика задания источников в правилах реконсиляции

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

Значение параметра "*" позволяет учитывать в правиле все источники, не указанные в правиле. Они будут иметь одинаково низкий приоритет по сравнению с указанными источниками.

Всегда указывайте значение параметра "*" в правиле в кавычках.

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

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

Логика перезаписи значений атрибутов

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

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

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

  • Если текущее значение не равно null и приоритет входящих данных не ниже приоритета текущих данных, данные перезаписываются.

  • Значение не перезаписывается на null ни при каких условиях.

Структура поля reconciliation

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

Поле reconciliation представляет собой массив правил реконсиляции и содержит:

  • Записи источников для атрибутов.

  • Поле default с источниками для всех атрибутов сущности по умолчанию

Структура attribute

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

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

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

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

sourcePriority

да

Название приоритетного источника для атрибута

массив

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

Поле может принимать значения:

  • название источника;

  • звездочка ("*"). В этом случае все источники, не указанные в списке, также учитываются при реконсиляции, но имеют одинаково низкий приоритет по сравнению с указанными источниками.

Структура default

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

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

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

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

source

да

Название источника

строка

Поле может принимать значения:

  • название источника;

  • звездочка ("*"). В этом случае все источники, не указанные в списке, также учитываются при реконсиляции, но имеют одинаково низкий приоритет по сравнению с указанными источниками.

Проекции (projection)

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

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

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

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

attribute

да

Ссылка на атрибут

Data ID Ref

Правила поиска (searching)

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

Чтобы система производила поиск по связи, необходимо в самой связи в поле searchable установить значение true.
Пример
entities:
 - id:
   name: Device
   # Поле, в котором задается правило поиска.
   searching:
      # Список атрибутов сущности, по которым производится поиск.
      attributes:
         - objectGuid
         - commonName

Отображение иконки сущности на диаграмме связей (graphView)

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

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

  • в поле icons задается ссылка на файл иконки;

  • в поле graphView задаются настройки отображения иконки.

Поле graphView содержит следующее поле:

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

iconColor

да

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

Цвет иконки. Доступные значения перечислены далее.

Доступные цвета иконки:

  • red — красный;

  • pink — розовый;

  • lightpink — светло‑розовый;

  • orange — оранжевый;

  • peach — персиковый;

  • yellow — желтый;

  • green — зеленый;

  • lightgreen — светло‑зеленый;

  • turquoise — бирюзовый;

  • lightblue — голубой;

  • blue — синий;

  • violet — фиолетовый;

  • purple — пурпурный;

  • grey — серый.

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

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