Обзор
Contents
Обзор#
Global3-FrameWork является мощным и удобным инструментом разработки кроссплатформенных решений.
Архитектура системы#
Тонкий клиент#
Тонкий клиент подключается к серверу приложений в терминальном режиме. Что позволяет работать на как на компьютерах так и на планшетах через канал с низкой пропускной способностью. Это возможно так как в терминальном режиме пользователь получает только минимально необходимый для работы набор данных. К примеру если пользователь открыл список содержащий 10 000 записей. К нему на эран будет отправлена только видимая часть и кэш примерно 100-200 записей (зависит от размеров экрана)
Тонкий клиент может работать как веб приложение в любом браузере
поддерживающим стандарт html 5.0
.
Или поставляться в виде отдельного приложения на базе chromium
В браузер может быть установлено дополнительное расширение, позволяющее тонкому клиенту напрямую работать с файлами, оборудованием и крипто провайдерами. В случае наличия такого расширения, работа в браузере неотличима от работы в нативном приложении.
Мобильный клиент#
Существует линейка мобильных приложений позволяющая использовать полный перечень возможностей мобильного устройства. Для реализации специализированных приложений, GlobalFramework предоставляет возможность написание web сервисов, посредством которых возможно взаимодействие с нативным мобильным приложением. А так же набор библиотек облегчающих написание мобильного приложения.
Балансировщик нагрузки#
Балансировщик нагрузки распределяет пользователей между серверами приложений в кластере.
Кластер серверов приложений#
Нагрузка горизонтально масштабируется между серверами приложений.
Сервера приложений объединяются в кластер для возможности централизованного управления и мониторинга.
Решение#
Набор скомпилированных библиотек устанавливаемых в сервер приложения. Решение предоставляет весь перечень прикладной бизнес логики необходимый для работы сервера приложения.
Кластер баз данных#
Кластеризация базы данных поддерживается штатными средствами postgreSQL
.
В случае синхронной репликации горячей копии, возможно перенаправление на нее
запросов на чтение.
Уровни разработки#
Разделение бизнес логики по уровням позволяет существенно повысить повторное использование кода между пользовательскими интерфейсами и фоновыми сервисами(интеграция, выполнение задач по расписанию и т.д.). Система Global состоит из следующих уровней:
Интерактивная бизнес логика
Отвечает за ввод/вывод информации и обработку действий пользователя.Автономная бизнес логика
Осуществляет основную обработку данных.Хранение данных
Реализован СУБД
Фреймворк предоставляет удобные инструменты для взаимодействие между уровнями.
Принципиальная схема#
где:
Графическое представление
Вид интерфейса определяется по средством декларации пользовательского интерфейса. Реакция на пользовательские действия программируется на уровне интерактивной бизнес логики.Прикладная бизнес логика
Располагается по большей части в слои автономной бизнес логики. Прикладная бизнес логика группируется по модулям, классам и пакетамМетаданные
Объекты автономной и интерактивной бизнес логике регистрируются в базе данных, в слои мета данных, что позволяет выполнять администрирование и кэширования элементов бизнес логики при необходимостиСистема администрирования
Определяет права доступа пользователя к интерактивной и автономной бизнес логикиСистема развертывания
Отвечает за создание и обновление схемы базы данных
Основные понятия#
Класс#
Определяет правила хранения и обработки таблицы базы данных.
Класс позволяет существенно ускорить разработку бизнес логики ориентированную на работу с данными. Программисту достаточно обЪявить перечень атрибутов класса чтобы за счет кода генерации получить набор готовых сервисов:
Интеграцию с
Orm
Pojo объект для хранения данных в кэше
Aro объект интеграции pojo в фреймворк
Каркас автономной логики(
Api
)
scala
класс с постфиксомApi
Каркас интерактивной логики(
Avi
)
scala
класс с постфиксомAvi
Каркас декларации пользовательского интерфейса(
Avm
)
xml
файл с расширениемavm.xml
Прикладные сервисы
Подробнее смотри:
Бизнес объект#
Бизнес-объект (БО) - объединение нескольких классов и их коллекций в группу для более удобного манипулирования ими при работе с кэшем и конфигурировании вспомогательных сервисов.
Бизнес объект позволяет:
Массово загружать данные в транзакционный кэш
Для бизнес объекта можно указать стратегию загрузки данных существенно уменьшающую количество запросов в базу данных. Так как запросы пойдут не по каждому объекту а по каждому классу бизнес объекта.Настраивать права доступа
По бизнес объекту создается административный объект на котором можно массово выдать привилегии для всех классов бизнес объектаУправлять электронной подписью
Можно настроить правила подписи всего бизнес объекта включая не только шапку но и все вложенные коллекции.Настраивать интеграцию и репликацию
Пакет#
Позволяют сгруппировать общую бизнес логику в контексте сессии приложения.
Пакет является scala
классом с постфиксом Pkg
Выборка#
Выборка определяет правило получения, отображение данных и обеспечивает взаимодействие с пользователем. Выборки содержат основную часть интерактивной бизнес логики.
Выборка определяет:
способ получения данных
способ отображения данных пользователю
обработки пользовательских действий
Подробнее смотри:
Модуль#
Неделимая часть решения. Набор модулей определяет доступную функциональность развернутую в сервере приложения.
Модуль может зависеть от других модулей. В таком случаи такие зависимости так же должны быть установлены в решения для обеспечения корректной работы решения.
Приложение#
Приложение является коренной выборкой рабочего сеанса пользователя и задает:
Главное меню
Содержит перечень форм, отчетов и операцийПанель быстрого доступа
Содержит операции быстрого доступа, а так же поля задающие контекст работы рабочего сеанса, например рабочий период
Пользователь при входе в систему выбирает требуемое ему для работы приложение.
Перечень приложений доступных для пользователя задается администратором системы.
Сессия приложения#
Сессия приложения создается на поток прикладной бизнес логики. Сессия приложения предоставляет доступ к сессией базы данных, EclipseLink кэшу, серверу приложения. А так же содержит необходимые инъекции зависимости для работы прикладной бизнес логики.
Сессия приложения создается:
на каждую mdi форму открытую в приложении
на rest запрос к серверу приложения
Примечание
Для ускорение rest запросов возможна настройка пула сессий
Подробнее смотри:
Взаимодействие с данными#
где:
Объектный запрос
Запрос данных черезJQPL
, данные запрошенные на данном языке попадают в транзакционный кэш что позволяет их редактировать.Применяется к примеру в карточке документа.
Реляционный запрос
Запрос в базу данных на языке sql, позволяет использовать аналитические функции, и сложную фильтрацию.Применяется к примеру в списках.
Транзакционный кэш
Перечень запрошенных объектов в текущей сессии.Orm кэш
Кэш разделяемых объектов. На классе можно включить режим кэширование в разделяемом кэше.Применяется на классах типизации, для снижения нагрузки на базу.
Файловый кэш
Повторяемые вычисления можно кэшировать в файловом кэше.
Объектное взаимодействие#
Объектное взаимодействие реализовано на основе библиотеки EclipseLink которая отвечает за низкоуровневое взаимодействие между сервером приложений и базой данный через механизмы Orm.
Объектное взаимодействие позволяет повысить быстродействие системы за счет:
Кэширования данных
Применения ленивых коллекций
Пакетных (Bulk) запросов, которые обеспечивают:
Сбор данных по бизнес-объекту
Обновление\вставку\удаление
За счет работы с объектами через объектный кэш возможно реализация прикладных сервисов, таких как аудит.
Реляционные запросы#
При необходимости возможно взаимодействие с базой данных на прямую по средством язык sql
.