Используемые технологии

Веб-панель состоит из двух компонентов – Back-End (код на сервере) и Front-End (код, исполняемый в браузере).

Для сборки проекта и управления зависимостями используется Apache Maven.

Back-End

Back-end реализован на Java (8 или выше) с использованием Spring Framework. В качестве базы данных используется PostgreSQL (9.6 или выше).

В проекте используются следующие библиотеки:

Управление миграцией базы данных
Liquibase
Внедрение зависимостей
Guice
Брокер Push-уведомлений
ActiveMQ Embedded
Клиент Push-уведомлений
Eclipse Paho

Front-End

Front-end реализован на JavaScript с использованием AngularJS.

Управление зависимостями осуществляется с помощью менеджера пакетов Bower, включенного в проект в виде frontend-maven-plugin.

Front-end реализован с помощью Dependency Injection (встроенный в AngularJS).

Модули

Веб-панель состоит из следующих модулей (являющихся подмодулями основного Maven-проекта):

common
Модуль, содержащий код, общий для ядра панели управления и его плагинов: авторизация, модели данных, утилиты
jwt
Авторизация с помощью токенов (для использования API сторонними приложениями)
notification
Модуль, управляющий Push-уведомлениями
plugins
Базовая директория для плагинов (каждый плагин – это отдельный Maven-модуль)
server
Модуль, содержащий ядро системы (в частности, здесь находится код веб-ресурсов ядра)
swagger
Swagger UI (веб-документация по API)

Директория install содержит скрипты инсталлятора (для Ubuntu Linux).

Структура кода

Структура кода верхнего уровня

Все модули имеют приблизительно следующую структуру директорий:

Структура кода верхнего уровня Headwind MDM

conf — конфигурация (только для веб-приложения server). Конфигурация генерируется при сборке из файла build.properties.

src/main/java – код Back-End.

src/main/resources – ресурсы (как правило, инструкция для миграции базы данных Liquibase).

src/main/webapp – код Front-End.

target – директория, где размещается результат сборки.

webtarget – конфигурация Bower для front-end, здесь также размещаются загруженные JavaScript-библиотеки.

Back-End

Код Back-End (src/main/java) состоит из следующих компонентов:

guice – код инициализации модулей Guice (инициализация БД, привязка переменных конфигурации к полям классов, и т.д.)

persistence – код моделей и работы с БД, в том числе:

persistence/domain – классы-модели, как для БД, так и для JSON (отправки и получения REST запросов).

persistence/mapper – код привязки операций с моделями к SQL.

Файлы *DAO – это слой Data Access Objects, реализующий высокоуровневую логику работы с моделями.

rest – код реализации веб-сервисов, в том числе:

rest/json – код JSON представлений запросов и ответов, в том случае, если они отличаются от persistence моделей.

rest/resource – код реализации веб-сервисов с привязкой к URL.

Front-End – структура верхнего уровня

Код Front-End (/src/main/webapp) имеет следующую структуру:

Структура кода Front-End Headwind MDM

app – JavaScript-код приложения, разбитый на компоненты. Код общих сервисов выделен в отдельную директорию shared.

app/app.js – это основной модуль приложения, в котором в том числе хранятся общие константы.

css, images – статические веб-ресурсы (CSS, изображения).

lib – сторонние JavaScript-библиотеки (автоматически генерируемые сборщиком).

localization – код для локализации ядра платформы.

index.html – основной файл, содержащий ссылки на все JavaScript-файлы приложения.

Front-End – структура компонента

Структура кода Front-End Headwind MDM

Код компонентов (в том числе плагинов) разделяется на контроллеры, сервисы и представления (в понимании AngularJS).

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

Сервисы включают в себя как REST-сервисы, так и вспомогательные JavaScript-сервисы.

Среди представлений выделяются представления модальных всплывающих окон (они находятся в поддиректории view/modal и имеют расширение .modal.html.

Часть 2: Сборка системы >>