[ELMA3] Техническое описание архитектуры ELMA
Система ELMA структурно на верхнем уровне состоит из веб-сервера с одной стороны и приложений, которые с ним взаимодействуют.
Общая схема архитектуры представлена во вложении.
Веб-серверов может быть несколько, и они могут объединяться в кластер для повышения отказоустойчивости системы. В этом случае схема будет выглядеть следующим образом (Рис. 1):
Рис. 1. Схема развертывания ELMA BPM
Сам веб-сервер состоит из множества слоев:
- слой доступа к данным;
- слой бизнес-логики;
- слой кэширования;
- платформа;
- слой работы модулей.
Общее описание архитектуры ELMA
Если структурировать дальше, ELMA состоит из большого числа модулей. Модули могут ссылаться друг на друга и реализовать определенную часть логики. Ключевой характеристикой такой архитектуры является ее расширяемость. По всей системе существует большое количество точек расширения, реализуя которые можно добавлять модели, новую бизнес-логику, менять внешний вид форм и добавлять на них новые элементы.
Изменения, которые были сделаны над Платформой, являются изменениями уровня конфигурации. Они достаточно легко мигрируют между разными версиями Платформы.
За счет модульной архитектуры пользователи системы могут легко написать свой модуль в ELMA, используя весь доступный инструментарий внутри Платформы и системных модулей.
Одним из ключевых понятий внутри системы является Компонент. Компонентная модель лежит в основе всей расширяемости системы ELMA (Рис. 2).
Рис. 2. Схема расширяемости ELMA
Расширяемый модуль — это модуль системы, который использует определенный набор точек расширения. У модуля есть доступ ко всем компонентам Платформы: к слою доступа к данным, к системам оповещений, диагностики, к планировщику, к системе привилегий, конструктору форм и другим.
Точка расширения — это произвольный интерфейс с набором свойств/методов, который помечен атрибутом EleWise.ELMA.ComponentModel.ExtensionPointAttribute.
Компонент — это экземпляр класса, реализующего точку расширения (интерфейс), и помеченный атрибутом ComponentAttribute. Для одной точки расширения может быть несколько реализаций (компонентов).
Многие системные модули предоставляют свой набор точек расширения для реализации. Пользовательские модули могут предоставлять свой набор точек расширения, которые могут реализоваться в других пользовательских модулях. Такая система позволяет гибко адаптировать систему под конфигурацию конкретного заказчика, а также разделять доработки уровня Платформы и уровня конкретной конфигурации.
Объектная модель системы полностью расширяема. В модулях можно как создавать новые объекты бизнес-логики, так и изменять существующие системные объекты с помощью настройки метаданных. При запуске система анализирует все модули, объединяет все изменения в метаданных и динамически генерирует модели, которыми уже будет пользоваться конечный пользователь. Эти модели уже учитывают все изменения, которые были сделаны в модулях.
Внешние приложения могут взаимодействовать с ELMA через специальный API. API является полностью расширяемым через пользовательские модули. Документация по внешнему API генерируется в автоматическом режиме при подключении такого модуля.