Архитектура решения
Компоненты архитектуры
Компонент | Технология | Назначение |
---|---|---|
PostgresPro |
Хранение данных системы (OLTP, OLAP) Хранимые процедуры (отчеты) |
|
React+Redux SPA |
Аутентификация пользователей Отображение интерфейса и данных из модели Реализация UI бизнес-логики (custom контроллеры) Асинхронный запуск серверных обработок (Actions) |
|
RabbitMQ+ Python |
Интеграция распределенных сервисов и их обработок в единую инфраструктуру Асинхронное выполнение серверных обработок Распределение и масштабирование обработчиков (workers) |
|
Camunda (Java) |
Автоматизация бизнес-процессов на основе нотации BPMN 2.0 Интеграция с внешними веб-сервисами Автоматизация документооборота |
|
Сервисы бизнес-логики |
Python + Celery |
Воркеры исполнения сервисов бизнес-логики Динамическое управление нагрузкой (увеличение/уменьшение кол-ва воркеров) |
Jaeger + OpenSearch |
Сбор, централизованное хранение и обработка журналов со всех компонентов, входящих в состав системы Трассировка и профилирование времени выполнения методов, входящих в состав прикладных компонентов системы, а также межкомпонентных вызовов |
|
Сервер отчетов |
FastReport Online Designer |
Создание и исполнение отчетов из разных источников |
Безопасность |
ORY Hydra + ORY Oathkeeper |
Система аутентификации |
Контейнеризатор приложений |
Docker |
Автоматизация создания приложений, доставки и управления |
Сервис доступа к данным |
DevExpress eXpress Persistent Objects (XPO) |
ORM |
Сервер приложений |
.NET Core | Фреймворк для разработки кросс-платформенных приложений |
СУБД Postgres Pro
- Postgres Pro - российская СУБД на основе PostgreSQL (postgrespro.ru):
- переработана для соответствия требованиям корпоративных заказчиков
- входит в реестр российского ПО
- сертификат ФСТЭК СВТ 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)
- Сборка логов всех компонентов в централизованное хранилище
- Полнотекстовый поиск по логам
- Построение дерева и профиля вызовов