Применение 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

Скачать 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

Скачать 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

Скачать 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

Скачать source-systems.xml