# Структура системы **Category:** [Структура системы](https://community.tezis-doc.ru/c/struktura-sistemy/80) **Created:** 2024-07-04 07:53 UTC **Views:** 411 **Replies:** 0 **URL:** https://community.tezis-doc.ru/t/struktura-sistemy/321 --- ## Post #1 by @d.slepnev # Архитектура системы Система электронного документооборота ТЕЗИС является тиражируемым продуктом, созданным на основе платформы для разработки бизнес-приложений [CUBA](https://www.cuba-platform.com/). Поэтому основные характеристики, описываемые в данной статье, определяются возможностями платформы. На самом высоком уровне компоненты системы представлены следующей схемой: ![image|690x397](upload://eMSfJErvSHFryrk0SyWsNYMrhNu.png) Здесь: 1. Middleware — слой бизнес-логики, является ядром системы; 2. Web client — клиентский слой, обеспечивающий взаимодействие с пользователями через веб-браузер; 3. Web portal — клиентский слой, обеспечивающий взаимодействие со сторонними приложениями; 4. Desktop client — пользовательский интерфейс в виде десктопного приложения (для системы ТЕЗИС не реализован). Рассмотрим основные компоненты системы более подробно. # СУБД В качестве сервера базы данных используется свободно распространяемая СУБД PostgreSQL >= 9.6 <= 10 и MSSQL >= 2008 R2 <= 2016. Однако, платформа CUBA и СЭД ТЕЗИС в стандартной конфигурации практически не зависят от особенностей конкретной СУБД, поэтому могут быть портированы практически на любую промышленную РСУБД, например, Oracle и пр. Решение о портировании может быть принято на основе требований конкретных клиентских проектов. # Middleware Средний слой, содержащий основную бизнес-логику приложения и выполняющий обращения к базе данных. Представляет собой отдельное веб-приложение под управлением стандартного контейнера Java EE Web Profile. В стандартной конфигурации в качестве сервера используется Apache Tomcat версии 8. Middleware имеет четкую границу для взаимодействия с клиентами — слой сервисных интерфейсов, что позволяет инкапсулировать бизнес-логику и обеспечить надежную проверку прав доступа к данным. # Web client Основной блок клиентского уровня создан на основе фреймворка Vaadin. Принцип работы веб-слоя следующий: * на стороне сервера в JVM формируется объектное представление пользовательского интерфейса — дерево визуальных компонентов; * информация о текущем состоянии UI передается в браузер пользователя в формате JSON; * в браузере JavaScript-engine фреймворка создает DOM текущей страницы на основе JSON, полученного с сервера; * в качестве библиотеки визуальных компонентов на стороне браузера используется Google Web Toolkit; * события UI из браузера (нажатия кнопок и т.д.) передаются в формате JSON обратно на сервер и влияют на серверное представление UI. В результате мы получаем веб-интерфейс с богатыми возможностями взаимодействия с пользователем, при этом избегая необходимости прямого применения HTML+CSS+JavaScript в прикладном коде. Следует отметить, что платформа CUBA предоставляет дополнительный уровень абстракции для создания пользовательского интерфейса: слой GenericUI, который позволяет описывать визуальное представление экранов с помощью XML и создавать Java-классы (контроллеры), выполняющие инициализацию экранов и обработку событий. Данный подход позволяет: * хорошо структурировать код, отделяя описание визуального представления от логики обработки событий; * упростить разработку UI, избавляя от необходимости оперировать тонкостями сторонних фреймворков и разнородных технологий; * создавать единый код для отображения в web и desktop клиентах. # Desktop client Данный компонент платформы CUBA не используется в системе ТЕЗИС, однако при возникновении специфических требований со стороны клиентских проектов (как например, более удобная работа с клавиатуры, повышенные требования к отказоустойчивости) некоторые экраны системы могут быть реализованы в десктопном приложении. # Web portal Дополнительный блок клиентского уровня. Содержит интерфейс для внешних пользователей и средства интеграции с мобильными устройствами и сторонними приложениями. Представляет собой отдельное веб-приложение под управлением стандартного контейнера Java EE Web Profile. Реализация пользовательского интерфейса основана на фреймворке Spring MVC. Основные возможности сервисов: * получение информации о модели данных (сущности и атрибуты); * загрузка графов сущностей по идентификатору или по запросу на языке JPQL; * сохранение графов сущностей; * вызов методов сервисов middleware; * передача данных в форматах XML или JSON, в зависимости от параметра запроса; * контроль доступа к данным на основе профиля пользователя, от имени которого производится работа с веб-сервисом. --- **Canonical:** https://community.tezis-doc.ru/t/struktura-sistemy/321 **Original content:** https://community.tezis-doc.ru/t/struktura-sistemy/321