× О компании Решения Проекты Новости Контакты
Импортозамещение Предприятиям ТЭК Автоматизация ЖКХ Дополнительные решения и сервисы

Архитектура решения

Компоненты архитектуры

Компонент Технология Ответственность

СУБД

PostgreSQL

Хранение данных системы (OLTP, OLAP)

Хранимые процедуры (отчеты)

Модель

XML

Объектная модель данных приложения и правила валидации

Разметка интерфейса приложения. Представления данных

Статусная моделью. Конечный автомат переходов

Настройка прав на объекты модели

Клиентское приложение

React+Redux SPA

Аутентификация пользователей

Отображение интерфейса и данных из модели

Реализация UI бизнес-логики (custom контроллеры)

Асинхронный запуск серверных обработок (Actions)

Шина данных

RabbitMQ+ Python

Интеграция распределенных сервисов и их обработок в единую инфраструктуру

Асинхронное выполнение серверных обработок

Распределение и масштабирование обработчиков (workers)

Сервер исполнения процессов

Camunda (Java)

Автоматизация бизнес-процессов на основе нотации BPMN 2.0

Интеграция с внешними веб-сервисами

Автоматизация документооборота

Сервер отчетов

PowerBI

Создание и исполнение отчетов из разных источников

Сервисы бизнес-логики

Python + Celery

Воркеры исполнения сервисов бизнес-логики

Динамическое управление нагрузкой (увеличение/уменьшение кол-ва воркеров)

Средства логирования и трасировки

Jaeger +

Elasticsearch +

Kibana

Сбор, централизованное хранение и обработка журналов со всех компонентов, входящих в состав системы

Трассировка и профилирование времени выполнения методов, входящих в состав прикладных компонентов системы, а также межкомпонентных вызовов

Кеш-сервер

Reddis+WebDav

Временное хранение результатов выполнения ассинхронных обработок (в т.ч. отчеты, пакеты интеграции и пр.)

СУБД. PostgreSQL

  • Postgres Pro - российская СУБД на основе PostgreSQL (postgrespro.ru)​:
    • переработана для соответствия требованиям корпоративных заказчиков​
    • входит в реестр российского ПО (см reestr.minsvyaz.ru/reestr/65273/)​
    • сертификат ФСТЭК СВТ 5, НДВ 4​
    • версия Enterprise содержит ряд существенных доработок, для работы с БД большого объема, высокой производительности и с повышенными требованиями к надёжности (postgrespro.ru/products/postgrespro/enterprise)​
  • Совместимая с Omni-US схема данных. Jsonb-расширения для доп.полей​
  • Расширенный инструментарий логирования на уровне БД.
  • Откат изменений данных​ Поддержка меток времени с временными зонами. 
  • Возможность работы логики БД в sync/async-режиме​
  • Возможность реализации логики на уровне БД

Модель приложения​

  • Слой метаданных, описывающий вид и поведение UI:​
    • Описание атрибутов и метаданных бизнес-объектов приложения​
    • Определение правил проверки значений реквизитов​
    • Описание состава, внешнего вида и расположения визуальных элементов представлений (View)​
    • Настройка варианта вывода представления (включая одновременное отображение списка и формы)​
    • Настройка условий отображения элементов представлений в зависимости от их значений​
    • Настройка правил безопасности при доступе к данным​
    • Привязка обработчиков событий (action) к разделу приложения​
    • Привязка разделов к пунктам меню
  • Визуальная настройка модели (сущности, формы, списки)​
  • Доступ к модели и данным через REST-интерфейс​

Клиентское приложение​

  • Single Page Application на основе React + Redux + DevExtreme ​
  • Аутентификация и ведение клиентской сессии пользователя​
  • Динамическое отображение представлений модели и данных в них​
    • Динамическая подгрузка представлений с сервера и их визуализация​
    • Реализация базовых CRUID-операций с данными в представлениях​
    • Валидация введенных значений в форме.
    • Обработка ошибок и предупреждений при сохранении данных​
    • Управление состоянием формы.
    • Условное форматирование. ​
    • Отображение операций с в представлениях и обеспечение их вызова​
  • Интеграционная шина для прикладных контроллеров, заданных для представления​
    • Взаимодействие с сервисной шиной​
    • Асинхронный запуск операций на сервисной шине​
    • Publisher событий интерфейса для обработчиков на шине​
    • Subscriber асинхронных нотификаций от сервисной шины​

Сервисная шина​

  • Среда для универсального обмена сообщениями между сервисами.
    • Регистрация сервисов на шине. Маршрутизация до сервиса​
    • Издатель-подписчик (Pub/Sub)​
    • Удаленный вызов процедур (sync/async)​ Получение списка сервисов.
    • Получение списка операций сервиса​
  • Сервисы на шине представляют собой компоненты бизнес-логики​
    • Реализуют общий интерфейс взаимодействия через шину​
    • Не имеют ограничений по технологии реализации​
    • Реализуют операции, список которых регистрируется на шине​
    • Операции сервисов видны в модели приложения и доступны для подключения в интерфейсе​
  • Операции – компоненты сервиса, реализующие функциональность:​
    • Процедуры бизнес-логики (python, sp pgsql)​
    • Пакеты интеграции и отчеты (результаты исполнения в WebDAV)​
    • Кастомные источники данных для интерфейса​
    • BPMN процессы (camunda)

Шина данных. Компоненты реализации​

    ​​
  • RabbitMQ​
    • Брокер сообщений​
    • Маршрутизация сообщений​
    • Pub/Sub​
  • Celery/Flower​
    • удаленный вызов процедур поверх RabbitMQ (async/sync)​
    • Масштабирование загрузки​
    • Управление нодами воркеров​
    • Мониторинг загрузки сети​
  • Сервисы маршрутизации и управления метаинформацией ​ (rest-сервис на python falcon)​
    • Регистрация/список сервисов и их операций​
    • Получение точки запуска операции​

Сервер процессов на основе​ Camunda

    ​​
  • BPMN рабочие процессы
  • DMN таблицы принятия решения
  • Инструментарий создания автоматизированных бизнес процессов
  • Интеграция с блоком документооборота Omnis​
  • АРМ для выполнения задач сотрудниками​
  • Мониторинг​

Логирование и трасировка​

  • Сквозное логирование работы всех компонентов системы в исторической ретроспетиве
    • Параметры и заголовки к REST-сервисам​
    • Запросы к БД (ORM->СУБД)
    • Операции на шине​ Ошибки.​
    • Ветвление внутри операций (mdc)​
  • Сборка логов всех компонентов в централизованное хранилище
  • Полнотекстовый поиск по логам
  • Построение дерева и профиля вызовов​
​​