1. Общее описание
СМЭВ QL Сервер — приложение для конфигурирования и запуска типового API извлечения данных из хранилищ под управлением типового ПО «Витрина данных» от Минцифры (Ядро Prostore 6.1+).
1.1. Реализованные функции СМЭВ QL Сервера
СМЭВ QL Сервер является компонентом Типового ПО Витрина данных, создающим типовое API витрины согласно спецификации СМЭВ QL.
Поддержка множественных источников данных:
Витрины под управлением Prostore;
Другие СМЭВ QL Сервера;
Выбор источника по условиям запроса;
Защищаемые атрибуты модели данных;
На извлечение по предоставлению «защитников»;
На поиск;
Автоматический параллелизм запросов к источникам;
Ответ — готовый к использованию иерархический JSON-объект;
Документная модель данных с генератором из текущей логической модели Prostore;
Связи между ресурсами модели;
Сжатие ответов с данными (gzip);
Рекомендации индексов в БД;
Постраничные запросы и ответы;
Поддержка СМЭВ QL запросов компонентами витрины:
Сервис печатных форм;
СМЭВ3 адаптер;
Стейт-машина для СМЭВ QL объектов (бронирования, блокировки, разрешения).
Примечание
Заливка данных через через модуль RESt-Uploader и DATA-Uploader не предусматривают параллельную заливку в датамарты вместе с другими инструментами. Параллельная заливка данных в те же датамарты вручную или средствами ETL приведет к конфликту в работе с дельтами и к ошибкам соответственно.
2. Быстрый старт
2.1. Создание и конфигурация
Создать новое приложение СМЭВ QL Сервера командой:
java -jar smevql-server-all.jar new <new-app-name>
Данная команда создаст структуру папок сервера внутри <new-app-name> и исполняемый файл smevql.
2.2. Запуск и управление
Запуск СМЭВ QL Сервера осуществляется командой:
./smevql start -e <environment>
Где environment - это указание окружения. Без указания окружения сервер будет запущен в development.
Остановка СМЭВ QL Сервера осуществляется командой:
./smevql stop
Перезапуск СМЭВ QL Сервера осуществляется командой:
./smevql restart
2.3. Работа с сервером
2.3.1. Генераторы
Генераторы создают папки и файлы-шаблоны с начальными значениями. Для запуска генератора можно использовать полную команду
./smevql generate или короткий алиас ./smevql g.
Новый пустой источник генерируется командой:
./smevql g source <source-name>
Пример источника на основе Prostore:
prostore_source:
type: rest
version: '1.0'
adapter: prostore
protocol: http
host: smevql-dtm-prostore01.ru-central1.internal
port: 9090
path: api/v1/datamarts/query?format=json
headers:
- content-type: application/json
threads-count: 4
connection-timeout: 30
Новая модель генерируется командой:
./smevql g model <model-name>
Пример модели:
resources:
- mo: *base_model
name: Медицинская организация
description: Логическая таблица "Медицинская организация"
fields:
<<: *default_fields
parent_id:
<<: *ds
name: parent_id
update_ts:
<<: *dts
name: update_ts
address:
<<: *ds
name: address
address_fias_guid:
<<: *ds
name: address_fias_guid
enabled:
<<: *ds
name: enabled
name:
<<: *ds
name: name
region_okato:
<<: *ds
name: region_okato
create_ts:
<<: *dts
name: create_ts
id:
<<: *pks
name: id
rmis_id:
<<: *ds
name: rmis_id
phone:
<<: *ds
name: phone
connections:
has_many: []
belongs_to:
- attachment:
primary_key: [ mo_id ]
foreign_key: [ id ]
- resource:
primary_key: [ mo_id ]
foreign_key: [ id ]
extract:
source:
- name: prostore
table: misdm02.mo
- profilecode_resource: *base_model
- resource: *base_model
- observation: *base_model
- book: *base_model
- slot: *base_model
- monitoring: *base_model
- referral: *base_model
- attachment: *base_model
- patient: *base_model
- service: *base_model
- unaccessible_period: *base_model
Из существующего Prostore модель генерируется командой:
./smevql schema-gen test -h localhost -p 9090 -d demo_view
test- имя директории, куда будет выгружена модель;-d demo_view- это витрина (схема);-h localhost -p 9090- это хост и порт Prostore.
2.4. Стейт-машина СМЭВ QL
СМЭВ QL содержит встроенную машину состояний для изменения объектов модели внутри витрин данных. Одновременно с этим Стейт машина может, в качестве подтверждения перехода состояния, использовать внешний источник (например ИС Электронной очереди).
Карта состояний и переходов описывается в виде YAML-файла state.yaml располагаемого в папке states/<имя-модели>/<х.х версия модели> инстанса СМЭВ QL Сервера.
При наличии заполненных состояний машины СМЭВ QL Сервер генерирует API c набором HTTP-методов, отвечающих за изменение и просмотр состояний объектов:
GET /states— получить карту переходовGET /states/<model-name>— получить карту переходов конкретной моделиPOST /states/<model-name>/<event-name>— выполнить переход состояний для модели
2.5. Сборка проекта
Собрать проект можно с помощью gradle:
./gradlew clean build
3. Метрики
Для обеспечения возможности сбора информации о работе СМЭВ QL Сервера реализован набор метрик, обеспечивающий формирование показателей:
время исполнения входящих запросов;
количество успешных / не успешных выполнений входящих запросов;
время исполнения исходящих запросов или обращений к СПО;
количество успешных / не успешных выполнений исходящих запросов или обращений к СПО.