Схема работы платформы MyBPM
(Далее номера в круглых скобках обозначают индексы на картинке выше)
Основной алгоритм внесения изменений на платформе
Если нужно изменить данные на платформе, то срабатывает следующая последовательность:
Платформа делает изменение в MongoDB.
Если это удалось,
То записывается данное изменение в Kafka.
Дальше срабатывают все Kafka-Consumer-ы, которые отслеживают это изменение, и синхронизируют другие компоненты системы.
Желательно Kafka-Consumer-ы выносить на отдельные сервера, как показано на рисунке под пунктом (7).
Описание работы платформы MyBPM
Пользователь (1) открывает браузер (2) и указывает адрес Web-компонента (3) платформы MyBPM. Браузер загружает HTML и JS с Web-компонента и запускает работу клиентской программы на языке JavaScript, который собран с помощью библиотеки Angular от корпорации Google.
Web-компонент (3) не содержит в себе никакого состояния (Stateless) и поэтому можно запустить несколько его инстанций на случай если одна не будет справляться с нагрузкой.
Пользователь (1) видит интерфейс в браузере (2) и начинает работать с системой. Чтобы система смогла получить данные, клиентская часть (3) вызывает Rest-запросы к компоненту API (4) по Web API, который предоставляет компонент API как показано на рисунке выше.
Компонент API (4) - это приложение на языке Java с использованием библиотеки Spring Boot, которое предоставляет различные сервисы для окружающих компонентов (от сюда название API).
Компонент API (4) не содержит в себе никакого состояния (Stateless) поэтому можно запустить несколько его инстанций, на случай если одна не справляется с нагрузкой.
Так как компонент API (4) не содержит в себе состояние, то ему необходимы базы данных, где это состояние будет храниться. К компоненту API (4) необходимо подключить пять типов баз данных: MongoDB, Kafka, ElasticSearch, Zookeeper, PostgreSQL.
С платформой работают внешние сторонние системы (6) для этого на платформе предусмотрен внешний API (5).