Общее описание ^^^^^^^^^^^^^^ СМЭВ QL Сервер — приложение для конфигурирования и запуска типового API извлечения данных из хранилищ под управлением типового ПО «Витрина данных» от Минцифры (Ядро Prostore 6.1+). Реализованные функции СМЭВ QL Сервера ####################################### - СМЭВ QL Сервер является компонентом Типового ПО Витрина данных, создающим типовое API витрины согласно спецификации СМЭВ QL. - Поддержка множественных источников данных: - Витрины под управлением Prostore; - Другие СМЭВ QL Сервера; - Выбор источника по условиям запроса; - Защищаемые атрибуты модели данных; - На извлечение по предоставлению «защитников»; - На поиск; - Автоматический параллелизм запросов к источникам; - Ответ — готовый к использованию иерархический JSON-объект; - Документная модель данных с генератором из текущей логической модели Prostore; - Связи между ресурсами модели; - Сжатие ответов с данными (gzip); - Рекомендации индексов в БД; - Постраничные запросы и ответы; - Поддержка СМЭВ QL запросов компонентами витрины: - Сервис печатных форм; - СМЭВ3 адаптер; - Стейт-машина для СМЭВ QL объектов (бронирования, блокировки, разрешения). .. note:: Заливка данных через через модуль RESt-Uploader и DATA-Uploader не предусматривают параллельную заливку в датамарты вместе с другими инструментами. Параллельная заливка данных в те же датамарты вручную или средствами ETL приведет к конфликту в работе с дельтами и к ошибкам соответственно. Быстрый старт ^^^^^^^^^^^^^ Создание и конфигурация ######################## Создать новое приложение СМЭВ QL Сервера командой: .. code-block:: bash java -jar smevql-server-all.jar new Данная команда создаст структуру папок сервера внутри ```` и исполняемый файл ``smevql``. Запуск и управление ################### Запуск СМЭВ QL Сервера осуществляется командой: .. code-block:: bash ./smevql start -e Где ``environment`` - это указание окружения. Без указания окружения сервер будет запущен в ``development``. Остановка СМЭВ QL Сервера осуществляется командой: .. code-block:: bash ./smevql stop Перезапуск СМЭВ QL Сервера осуществляется командой: .. code-block:: bash ./smevql restart Работа с сервером ################## Генераторы """"""""""""" Генераторы создают папки и файлы-шаблоны с начальными значениями. Для запуска генератора можно использовать полную команду ``./smevql generate`` или короткий алиас ``./smevql g``. Новый пустой источник генерируется командой: .. code-block:: bash ./smevql g source Пример источника на основе Prostore: .. code-block:: yaml 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 Новая модель генерируется командой: .. code-block:: bash ./smevql g model Пример модели: .. code-block:: yaml 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 модель генерируется командой: .. code-block:: bash ./smevql schema-gen test -h localhost -p 9090 -d demo_view - ``test`` - имя директории, куда будет выгружена модель; - ``-d demo_view`` - это витрина (схема); - ``-h localhost -p 9090`` - это хост и порт Prostore. Стейт-машина СМЭВ QL ##################### СМЭВ QL содержит встроенную машину состояний для изменения объектов модели внутри витрин данных. Одновременно с этим Стейт машина может, в качестве подтверждения перехода состояния, использовать внешний источник (например ИС Электронной очереди). Карта состояний и переходов описывается в виде YAML-файла state.yaml располагаемого в папке states/<имя-модели>/<х.х версия модели> инстанса СМЭВ QL Сервера. При наличии заполненных состояний машины СМЭВ QL Сервер генерирует API c набором HTTP-методов, отвечающих за изменение и просмотр состояний объектов: 1. ``GET /states`` — получить карту переходов 2. ``GET /states/`` — получить карту переходов конкретной модели 3. ``POST /states//`` — выполнить переход состояний для модели Сборка проекта ############### Собрать проект можно с помощью gradle: .. code-block:: bash ./gradlew clean build Метрики ^^^^^^^^ Для обеспечения возможности сбора информации о работе СМЭВ QL Сервера реализован набор метрик, обеспечивающий формирование показателей: - время исполнения входящих запросов; - количество успешных / не успешных выполнений входящих запросов; - время исполнения исходящих запросов или обращений к СПО; - количество успешных / не успешных выполнений исходящих запросов или обращений к СПО. `Пример по подключению журналирования. `_ `Пример по подключению мониторинга. `_