продвинутые механизмы для создания АРМ со сложной бизнес-логикой






техническая информация

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

Упрощенная интеграция с js-библиотеками - позволяет легко интегрировать весь накопленный пласт интерфейсных решений на Js и управлять ими напрямую из Java;

Бесшовная интеграция HTML-форм и серверных java-механизмов – на уровне приложений для локального компьютера

ниша применения

корпоративные приложения

  • закрытая интранет сеть

    Приложение работает в закрытой интранет сети предприятия. Зачастую, приложение собирается службами заказчика, в изолированной сети, использование публичных сервисов - как, например, репозиториев исходного кода, CDN-сайтов, или даже сервисов как Yandex-карты - невозможно.

  • сложные запросы

    Сложная модель поведения формы, запутанная логика операций даже при небольшом числе запросов создают высокую вычислительную нагрузку на систему

  • немного пользователей

    Сравнительно небольшой круг пользователей (сотрудников предприятия) создают высокую нагрузку на сервер, генерируют тяжелые запросы (выборка, анализ, обработка данных), которые нельзя (или затруднительно) обработать в stateless-механизмах.

Где нужно применять HRUD ? Разработка АРМ, личных кабинетов, и др. приложений с web-интерфейсом, для которых необходима поддержка сложной логики поведения или взаимодействия с клиентом, поддержка «сложного состояния клиента».
Это «statefull технология», которая выгодна при организации сложных бизнес-процессов, быстрой разработки промышленных АРМ.

выгоды

HRUD для разработчиков

Позволяет не проектировать детали взаимодействия веб-интерфейса и сервера : экранная html-форма и серверный bean работают как одно целое - все механизмы обмена сигналами, пересылки сообщений и событий пересылка сообщений и событий реализована на уровне ядра;


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

При этом сохраняется возможность использовать все типовые механизмы J2EE, в том числе создавать rest-механизмы для сторонних сервисов, использовать все библиотеки и наработки Java, организовывать фоновые процессы и механизмами взаимодействия с другими подсистемами предприятия.

HRUD для архитекторов и руководителей команд

Оптимизация бюджета проекта
Не требует привлечения выделенных JavaScript-разработчиков для создания динамических веб-интерфейсов и позволяет вести разработку силами java-разработчиков, обладающих минимумом навыков в JavaScript/HTML/CSS.

Экономия сил при проектировании
Бесшовная интеграция экранной формы и сервера позволяет отказаться от необходимости в сервлетах и rest-функциях и не тратить время аналитиков на разработку и согласование API между "фронтом" и "бэком" : механизмы транспорта стандартизированы и "упакованы" внутрь ядра системы.

Безопасность доступа к данным - в концепции
Клиенту всегда отсылается только готовая информация для отображения (html-формы) - на клиенте нет ни бизнес-логики, ни лишних неотображаемых данных – сама идеология подталкивает разработчика к этому.

Модульность приложения
HRUD подталкивает к разбиению функциональности на виджеты-компоненты. Это позволяет быстро расширять приложение модулями из других hrud-приложений. Виджеты HRUD, являющиеся "единицами функциональности", легко переносятся из одной системы в другую, как программы для настольного компьютера

HRUD для операторов АРМ и сотрудников техподдержки

Обеспечивает возможность переноса сессии на другой компьютер или теневой трансляции экрана на компьютер техподдержки - как в RDP (сервисы удаленного рабочего стола ОС Windows) или X-Windows (графическая подсистема ОС Linux);

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

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

Поддерживает многооконный MDI-интерфейс оператора, обеспечивающий удобство работы при решении ситуационных разовых задач (ad-hoc) в привычных механизмах работы с desktop-приложениями.

техническая информация

Принципы работы

HRUD создает websocket соединение между клиентом и сервером, и после этого транслирует клиенту HTML-элементы которые составляют web-интерфейс приложения.

HRUD работает с dom-узлами клиента как с записями в БД - по принципу CRUD - Create, Read, Update, Delete

Решаемые задачи

С точки зрения ключевых задач которые решает HRUD – то их всего «3 +1»

(1) Асинхронное управление структурой html через веб-сокеты по командам с сервера

(2) Доставка событий с веб-интерфейса на сервер, их обработка, обмен данными, удаленный вызов процедур.

(3) Организация серверного интерфейсного приложения. Фреймворк обеспечивает ЖЦ серверных java-bean для виджетов и экранов;

(*) Шаблонизация для server-side генерации html (Apache Velocity) Шаблонизатор обеспечивает прогнозируемость того, что вы увидите на экране, и дает возможность применять типовые для html рецепты верстки и встраивания js+css

Ограничения

Преимущества фреймворка напрямую определяют как особенности его применения, так и его огранчиения.

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

Перенос бизнес логики на сервер, тяжеловесность statefull-механизмов, жесткий контроль за правами - также накладывает свои особенности.

Чем не является HRUD

HRUD это не визуальный js-фреймворк
Hrud не предоставляет никаких собственных визуальных js-компонент или css-решений.
Используйте любые визуальные js-фреймворки и css-стили, которые вам нравятся или подходят заказчику.

HRUD не для публичных сайтов
Hrud не предназначен для создания публичных массовых систем.
Для массовых систем в открытой сети - используйте типичные для вебсайтов механизмы построения систем.
HRUD - это асинхронные промышленные интерфейсы корпоративных АРМ в закрытой сети.

Сравнение c JSF

HRUD по организации внутренних механизмов несколько похож на JSF - например, есть аналогичное понятие «серверного bean» для экранной формы.

Однако, в HRUD решены многие проблемы и неудобства присущие технологии JSF.

Если вы использовали JSF, возможно вам следует обратить внимание на преимущества HRUD

преимущества HRUD

Типовые механизмы верстки
Использует стандартные механизмы разметки (html+js вместо xml).

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

Упрощена интеграция с JS|CSS
Встраивание готовых js-компонент - это целевая функция фреймворка.

Допускается генерация интерфейса в «runtime»
Можно создавать автогенерируемые по метаданным формы просмотра и редактирования, работать с html-структурами, не существующими в compile-time.