Обзор архитектуры

В данном разделе представлены несколько диаграмм, которые показывают общую картину ландшафта Jmix.

Область Jmix

В простейшем случае информационная система, созданная с использованием Jmix, состоит из веб-приложения на Java и реляционной базы данных.

architecture scope 1
Figure 1. Простое Jmix-приложение

Веб-приложение основано на Spring Boot и может быть написано на Java или Kotlin. Реляционная база данных используется для хранения данных подсистем Jmix (например, конфигурации безопасности) и в качестве основного хранилища данных приложений.

Приложение Jmix может подключаться к любому количеству дополнительных хранилищ данных и использовать отдельное файловое хранилище в файловой системе или в облаке. Кроме того, Jmix предлагает интеграцию с сервером OIDC или LDAP для внешней аутентификации и единого входа, и с OpenSearch или Elasticsearch для полнотекстового поиска по данным приложения.

architecture scope 2
Figure 2. Jmix-приложение с дополнительными сервисами

Приложение Jmix предоставляет пользователям веб-интерфейс. Он создается на Java/Kotlin и XML с использованием подсистемы пользовательского интерфейса Jmix.

Вы также можете создать отдельное фронтенд-приложение и подключить его к бэкенду Jmix через Jmix REST API или путем создания собственного API. Обратите внимание, что фронтенд-приложения выходят за рамки Jmix, и вы можете создавать их с помощью любой технологии по вашему выбору.

architecture scope 3
Figure 3. Jmix-приложение с дополнительным фронтендом

Jmix-приложение можно горизонтально масштабировать, используя кластер серверов и балансировщик нагрузки.

architecture scope 4
Figure 4. Масштабирование Jmix-приложения

Компоненты Jmix

Давайте подробнее рассмотрим приложение Jmix и его компоненты.

architecture components 1
Figure 5. Компоненты Jmix-приложения

Приложение Jmix всегда содержит зависимости от Spring Boot и ряда подсистем Jmix. Существует две категории подсистем Jmix:

  • Основные подсистемы (Core subsystems) обеспечивают функциональность системного уровня и включены в большинство проектов.

  • Дополнения (Add-ons) – это дополнительные подсистемы, которые могут быть включены в проект по требованию. Они публикуются на маркетплейсе Jmix.

Технически, как основные подсистемы, так и дополнения организованы одинаково. Подсистема содержит один или несколько функциональных модулей и соответствующие стартеры Spring Boot, упакованные в JAR-файлы. Подсистема может зависеть от других подсистем: например, многие дополнения содержат экраны, которые требуют зависимости от основной подсистемы пользовательского интерфейса.