Обзор#

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.