JSON-схемы
JSON-схемы описывают различные типы объектов системы: типы сущностей модели DWH (типы источников и получателей), типы правил ККД, схемы документов, параметры и описание отчетов, схемы уведомлений. При добавлении и настройке объектов системы JSON-конструктор на основе JSON-схемы предлагает формы для ввода данных для построения json.
Создание JSON-схемы
В обычном режиме работы добавление новых JSON-схем не требуется. Но в случае необходимости их можно добавить через форму управления JSON-схемами. Для перехода на форму необходимо выбрать подпункт «JSON- схемы» пункта «Администрирование» левого меню.

1.Для добавления новой схемы, необходимо нажать на кнопку «Создать».
2.На открывшейся форме, заполнить поля:

- Наименование: задать наименование схемы, поле является обязательным
- Код: задать код схемы, уникальный идентификатор
- Ссылка: в случае необходимости, можно указать ссылку на схему (не поддерживается)
- Расположение: в случае необходимости, для схемы можно указать расположение
- Провайдер: оставить пустым, при работе с моделями и правилами ККД заполняется автоматически.
- Статус: выбрать из списка значение «Активна»
- Схема: редактор json, позволяет добавлять json схему, автоматически валидирует и позволяет менять представление ( в виде строки или дерева)
4.И нажать кнопку «Создать»
Новая схема появится в спиcке JSON-схем

Дополнения к схеме для использования в конструкторе
В большинстве случаев для построени объектов в json используется конструктор в режиме "Мастер".
Для визуального отображения объекта в конструкторе доступны задания в схеме дополнительных параметров для отображения:
Скрытие
Задается на уровне описания ключа, испольуется для скрытия элементов в Карточке объектов конструктора.
Описание:
"hints": {
"hidden": true
}
Пример:
"label": {
"hints": {
"hidden": true
},
"title": "Наименование",
"type": "string"
}
Получение атрибута объектов
Объект системы описывается под отдельным ключом swatch
Пример описания источника атрибута (swatch):
"swatch": {
"sources": {
"providers": {
"attribute": "code",// указывает какой атрибут объекта необходимо получить
"objectType": "PROVIDER",// указывает на тип объекта
"title": "Провайдеры"
}
}
}
Пример описания в схеме:
"code": {
"hints": {
"source": {
"path": "#/swatch/sources/providers"
}
},
"title": "Код",
"type": "string"
}
Окрашивание карточки объекта
Для карточек объектов (имеют "type": "object" в схеме) доступно окрашивание.
Настройка задается в "hints" объекта следующим образом
"hints": {
"style": {
"background-color": "#6e3b1a"// нужный вам цвет
}
}
Табличное представление списков
Для списка объектов, которые могут принимать только одно значение.
Доступен для "type": "array"
Пример описания в схеме:
"table": {
"title": "Таблица",
"type": "array",
"unevaluatedItems": false,
"hints": {
"role": "TABLE"// указывает, что объекты списка отображаются как строки таблицы
},
"items": {
"properties": {
"name": {
"title": "Атрибут",
"type": "string"
},
"label": {
"title": "Наименование",
"type": "string"
},
"type": {
"default": "text",
"title": "Тип",
"type": "string"
}
},
"required": [
"name"
],
"title": "Строка таблицы",
"type": "object",
"unevaluatedProperties": false,
"additionalProperties": false
}
}
Представление DAG
Описывается также через ключ role, дополнитель в swatch описывается тип связи.
Доступен для "type": "array"
Описание в схеме:
"nodes": {
"hints": {
"relations": "units",// указывает какой тип связи использовать
"role": "DAG" // указывает тип представления
},
"items": {
"oneOf": [
{
"properties": {
"id": {
"title": "Наименование",
"type": "string"
},
"name": {
"title": "Наименование",
"type": "string"
},
"parentKeys": {
"items": {
"type": "string"
},
"title": "Связи",
"type": "array",
"unevaluatedItems": false
},
"type": {
"const": "pipeline",
"title": "Пайплайн",
"type": "string"
}
},
"title": "Пайплайн"
}
],
"required": [
"type",
"id"
],
"title": "Узел",
"type": "object",
"unevaluatedProperties": false
},
"logicalKeys": [
"/type"
],
"title": "Узлы",
"type": "array",
"unevaluatedItems": false,
"uniqueKeys": [
"/id"
]
}
Описание swatch
"swatch": {
"relations": {
"units": {
"foreign": "parentKeys", //определяет где храниться связь
"primary": "name",// ключ по которому осцществялется связь, значение должно быть уникальным
"type": "hierarchy" // тип связи
}
}
}
CDG представление
Описывается также через ключ role, дополнитель в swatch описывается тип связи.
Доступен для "type": "array"
Используется в моделях для описания ER-диаграмм
Описание в схеме
"hints": {
"relations": "entities",
"role": "CDG"
}
"relationships": [
{
"$type": "SingleKeyRelationship",
"fromAttribute": {
"entityName": "r_equipproducer_{{ AF_USER_VARIABLE }}",
"attributeName": "id"
},
"toAttribute": {
"entityName": "r_equipmodel_{{ AF_USER_VARIABLE }}",
"attributeName": "id"
}
}
]
Описание swatch
"relations": {
"entities": {
"type": "entity2entity", // тип связи
"primary": {
"anchor": "/attributes",// откуда получаем список атрибутов
"entity": "/name", // какой атрибут записывается в связь
"attribute": {
"key": "/attributes::?[attributesFilter]::}/name", // Путь к ключу name с заданным фильтром
"attributesFilter": "/annotations::[annotationsFilter]", // фильтрация для атрибутов с применением фильтра для массива annotations
"annotationsFilter": "/name=primaryKey&&/value=true||/name=role&&/value=id||/name=role&&/value=code" // фильтр или, что атрибут является первичным ключом, поведение атрибута как id или поведение атрибута как код
}
},
"foreign": {
"anchor": "/attributes",
"entity": "/name",
"attribute": {
"key": "/attributes::?[attributesFilter]::}/name",
"attributesFilter": "/annotations::[annotationsFilter]",
"annotationsFilter": "/name=foreignKey&&/value=true||/name=role&&/value=fk"
}
},
"link": {
"list": "#/relationships",// указывает в каой объект записывается связь
"item": {
"filter": ":::/$type=SingleKeyRelationship", // указывает какие типы связей доступны
"const": {
"$type": "SingleKeyRelationship"
},
"title": "/name",
"primary": { // указывает как заполнять объект списка relationships
"key": "/toAttribute",
"attributes": {
"entity": "/entityName",
"attribute": "/attributeName"
}
},
"foreign": {
"key": "/fromAttribute",
"attributes": {
"entity": "/entityName",
"attribute": "/attributeName"
}
}
}
}
}
}