Применение REST API¶
Продукты Юнидата используют REST API для обмена данными между модулями внутри системы, а также для взаимодействия между продуктами (например, MDM и DG) и сторонними системами.
REST-сервисы доступны по ссылке http://<хост>:<порт>/unidata-backend/api. Например, http://localhost:8081/unidata-backend/api или http://unidata-service/unidata-backend/api.
REST-сервисы разделены по функциям, и соответствуют модульной архитектуре. Например, сервис v2/draft отвечает за запросы, связанные с черновиками, а v1/license за лицензию.
Принципы работы с REST API¶
REST API повторяет функциональность, доступную в пользовательском интерфейсе.
Сначала в системах Юнидата MDM и DG необходимо создать модель данных, состоящую из нескольких частей. Получить примеры описаний моделей можно, создав тестовые варианты в интерфейсе пользователя и экспортировав их. Состав модели данных:
Модель данных (основная часть, содержит описание реестров и справочников).
Источники данных.
Единицы измерения.
Перечисления.
Модель качества данных.
Модель сопоставления.
Модель бизнес-процесса (только для Enterprise Edition).
Запросы работы с моделями данных размещаются в сервисах unidata-backend/api/v2/meta и unidata-backend/api/v2/data.
Многие запросы к данным в последствии будут опираться на структуру модели данных, модели качества данных и т.д. Например, при создании записи заполнять атрибуты согласно модели данных и учитывать свойства атрибутов, указанных в модели.
Note
Файл model.xml (модель данных) должен импортироваться после файлов перечислений и единиц измерения, но до файлов модели качества данных и модели сопоставления
Описание типов данных¶
Mодель реестров/справочников¶
post {
request.uri.path = "/${AppConfig.REST_API_URL}/v1/meta/model/import"
request.contentType = 'multipart/form-data'
request.headers['Authorization'] = token
request.body = multipart {
part 'file', xmlFile.name.toString(), 'text/xml', xmlFile
part 'override', 'true'
}
request.encoder 'multipart/form-data', OkHttpEncoders.&multipart
}
Tip
Используйте пример файла model.xml
Единицы измерения¶
Одним из специальных типов данных системы является “Численный” тип. Он используется в качестве типа значения простых атрибутов.
Для его использования необходимо сначала создать единицы измерения. Одним из способов создания единиц измерения является импорт их из xml-файла “measurement-units”.
Каждая категория измерения и каждая единица измерения имеют свойства:
name - имя категории или единицы измерения (обязательное; может содержать латинские буквы, цифры, символ ‘_’);
displayName - имя категории или единицы измерения, отображаемое в пользовательском интерфейсе (обязательное; может содержать буквы разных языков, цифры, различные символы, включая пробел).
post {
request.uri.path = "/${AppConfig.REST_API_URL}/v1/meta/measurement/import"
request.contentType = 'multipart/form-data'
request.headers['Authorization'] = token
request.body = multipart {
part 'file', xmlFile.name.toString(), 'text/xml', xmlFile
part 'override', 'true'
}
request.encoder 'multipart/form-data', OkHttpEncoders.&multipart
}
Tip
Используйте пример файла measurement-units.xml
Перечисления¶
Одним из типов данных системы является enumDataType. Одно или несколько перечислений со значениями внутри могут быть прописаны в xml-файле “enumerations”.
Каждое перечисление и каждое значение перечисления имеют свойства:
name - имя перечисления или значения перечисления (обязательное; может содержать латинские буквы, цифры, символ ‘_’);
displayName - имя перечисления или значения перечисления, отображаемое в пользовательском интерфейсе (обязательное; может содержать буквы разных языков, цифры, различные символы, включая пробел).
post {
request.uri.path = "/${AppConfig.REST_API_URL}/v1/meta/enumerations/import"
request.contentType = 'multipart/form-data'
request.headers['Authorization'] = token
request.body = multipart {
part 'file', xmlFile.name.toString(), 'text/xml', xmlFile
part 'override', 'true'
}
request.encoder 'multipart/form-data', OkHttpEncoders.&multipart
}
Tip
Используйте пример файла enumerations.xml
Источники данных¶
Система Unidata может работать с данными из различных источников. Некоторые источники данных могут быть прописаны в xml-файле “source- systems”.
Источник данных “unidata” используется по умолчанию. Все данные, добавляемые на UI, имеют эту систему источников.
Вы можете отказаться от использования xml-файла “source- systems”. В этом случае все данные будут добавляться и обновляться только из источника данных “unidata”. Используя некоторые источники данных, вы можете добавлять записи из разных систем и объединять их в одну.
Свойство weight является важным, поскольку определяет одно из правил слияния. Записи и их атрибуты из источников с большим весом имеют более высокий приоритет.
Каждая система источников имеет свойства:
name - имя источника данных (обязательное; может содержать латинские буквы, цифры, символ ‘_’);
displayName - имя источника данных, отображаемое в пользовательском интерфейсе (обязательное; может содержать буквы разных языков, цифры, различные символы, включая пробел).
post {
request.uri.path = "/${AppConfig.REST_API_URL}/v1/meta/source-systems/import"
request.contentType = 'multipart/form-data'
request.headers['Authorization'] = token
request.body = multipart {
part 'file', xmlFile.name.toString(), 'text/xml', xmlFile
part 'override', 'true'
}
request.encoder 'multipart/form-data', OkHttpEncoders.&multipart
}
Tip
Используйте пример файла source-systems.xml