![case big bang](/_nuxt/image/acfafb.png)
Jmix Report vs Jasper Reports: два способа
генерации отчетов в Java веб-приложениях
Введение
Генерация отчетов настолько распространена в бизнес-приложениях, что проекты без этой функции встречаются редко. Примеры отчетов включают:
- Счета-фактуры с деталями транзакций, ценами и налогами.
- Накладные, адаптированные к конкретным грузоперевозкам.
- Выписки по займам и ипотеке, включая графики платежей, расчеты процентов и остатки по кредиту.
- Платежные ведомости для сотрудников с детализацией доходов, вычетов и суммой, подлежащей выплате.
- Финансовые отчеты, включая отчеты о прибылях и убытках, балансы и отчеты о движении денежных средств.
В мире Java доступен широкий выбор библиотек для реализации этих функций. К примеру, Jasper Reports специализируется на создании отчетов и предоставляет решение сразу нескольких задач, от консолидации данных до создания готового, отформатированного отчета. Также есть более узкоспециализированные библиотеки, предназначенные для выполнения конкретных задач, таких как преобразование файлов в определенные форматы. Эти инструменты предоставляют Java-разработчикам широкий спектр возможностей для генерации отчетов. Jmix предлагает более комплексный подход к решению подобного класса задач.
В этой статье мы подробно рассмотрим библиотеку Jasper Reports, чтобы понять ее функционал, и исследуем, как Jmix решает аналогичную задачу, увидим разницу между двумя походами. Мы объясним, что такое Jmix и его дополнения, а также поделимся инсайтами о том, как они работают изнутри.
На простом примере мы добавим функцию в приложение HR Onboarding, пройдя через 5 основных шагов для динамической генерации документов и отображения результатов на экране веб-приложения Jmix. Мы не будем углубляться в сложные пошаговые инструкции, а предложим общий обзор опыта разработки и вспомогательных инструментов. Если вам нужны подробности, вы можете клонировать проект на GitHub или посмотреть вебинар для получения более детальной информации.
Jasper Reports: Java-библиотека для создания отчетов с открытым исходным кодом
Выбирая инструменты для генерации отчетов с открытым исходным кодом, вы скорее всего встретите такие решения, как BIRT, Pentaho и Jasper Reports. Каждая из этих систем обладает зрелым набором функций и предлагает как коммерческую, так и бесплатную версию для сообщества. Мы сосредоточимся на бесплатной версии JasperReports Community из-за ее широкого использования и признания.
JasperReports — это библиотека с открытым исходным кодом для создания отчетов, которая позволяет генерировать динамичные и гибко настраиваемые отчеты для Java-приложений. Jasper использует шаблоны в XML, которые заполняются данными из различных источников на стороне сервера, создавая итоговый визуальный отчет.
Что делает библиотека Jasper Reports?
Jasper Reports рендерит предоставленные данные, форматирует их согласно шаблону и возвращает результат для отображения на экране, отправки на принтер или экспортирует в один из офисных форматов.
Разработчики часто используют Report Designer — отдельный визуальный инструмент для создания шаблонов отчетов, определяющий внешний вид итогового документа. Designer имеет широкий спектр функций, включая прямое подключение к источникам данных. Designer возвращает .jxml файл, который затем используется движком Jasper Reports. Движок берет этот шаблон и компилирует его в исполняемый формат. Этот шаг компиляции оптимизирует отчет для эффективной обработки. Используя скомпилированный шаблон и предоставленные данные, движок динамически заполняет содержимое отчета. Наконец, он экспортирует сгенерированные отчеты в различные форматы, такие как PDF, HTML, Excel.
Движок Jasper Reports
Хотя все функции отчетности доступны в одном JAR-файле, JasperReports полагается на другие сторонние библиотеки для вспомогательных функций, таких как парсинг XML, логирование, генерация PDF и XLS.
Поверх библиотеки отчетности Jasper Reports есть HTTP-сервис, который предоставляет функциональность генерации отчетов через REST API.
Какая функциональность не предоставляется?
Jasper Reports и другие библиотеки для генерации отчетов имеют общую цель: они предназначены для выполнения определенной задачи. Они берут шаблон и данные, а затем предоставляют заполненный шаблон для просмотра на экране или экспорта в офисный формат. Коммерческие функции постоянно развиваются, стремясь к полноценным наборам инструментов для Business Intelligence (BI).
В отличие от обычной библиотеки для генерации отчетов, дополнение Jmix Reports идет дальше. Оно не только выполняет основные функции, но и решает другие важные задачи, такие как управление данными, обеспечение безопасности, интеграция с пользовательским интерфейсом и предоставление визуальных экранов для настройки отчетов. Многие из этих функций доступны в режиме реального времени.
Jmix Reports Add-on: библиотека для создания отчетов против функционального модуля
Jmix Reports, в отличие от любой библиотеки для генерации отчетов — это готовый функциональный модуль, который встраивается в Jmix-приложение и предоставляет бизнес-функционал «из коробки».
Jmix предоставляет основу для создания веб-приложений на Java. Jmix Reports Addon — это готовый к использованию функциональный модуль, реализующий конкретную бизнес-функцию и бесшовно интегрирующийся в Jmix Java веб-приложение.
Jmix — это высокопродуктивная платформа разработки с открытым исходным кодом для Java разработчиков, основанная на Spring Boot. Jmix состоит из трех основных частей, работающих вместе:
- Jmix Framework: Набор библиотек с открытым исходным кодом, предоставляющих базовые строительные блоки и инструменты, например, доступ к данным, безопасность, UI, хранение файлов.
- Jmix Studio: Плагин для IntelliJ IDEA Community Edition, содержащий визуальные дизайнеры для работы с моделью данных, разработки макета интерфейса и настройки свойств компонентов UI в стиле WYSIWYG, моделирования диаграмм BPMN 2.0, генерации шаблонного кода и управления конфигурацией проекта.
- Add-ons: Уже реализованные функциональные модули можно загрузить из Jmix Marketplace. Дополнения охватывают широкий спектр функций — от уведомлений до инструментов автоматизации бизнес-процессов.
Что такое Jmix add-on?
В своей основе Jmix Addon — это Java-библиотека. В отличие от стандартной Java библиотеки, такой как Jasper Reports, Jmix Addon следует определенным правилам и использует некоторые основные функции Jmix для бесшовной интеграции предоставляемой функциональности в Jmix приложение. Главное отличие в том, что дополнение Jmix — это полный стек: оно может содержать модель данных, бизнес-логику и пользовательский интерфейс. Добавив дополнение в зависимости build.gradle, вы можете получить новую подсистему в вашем проекте, с данными, хранящимися в вашей базе данных и интерфейсом, интегрированным в главное меню.
Что такое Jmix Reports Add-on?
Jmix Reports Addon состоит из нескольких компонентов. Каждый компонент добавляет определенную функциональность:
![](/_nuxt/image/c1264f.png)
Включает инфраструктуру для хранения отчетов и шаблонов, организации отчетов по группам, пошаговые экранные помощники для конфигурации отчетов в режиме выполнения. Бизнес-пользователи могут настраивать параметры отчетов, определять форматы значений, устанавливать наборы данных, загружать шаблоны для вывода отчетов и устанавливать роли и разрешения для отчетов.
![](/_nuxt/image/6a5121.png)
![](/_nuxt/image/8eda78.png)
5 шагов для добавления Report Addon
в веб-приложение
Рассмотрим на простом примере, как это работает. Возьмем Jmix-приложение для онбординга (адаптации) новых сотрудников. В документации Jmix есть пошаговое руководство по разработке этого приложения. Приложение позволяет создавать план адаптации, назначать задачи пользователю и отслеживать их выполнение.
Добавим в приложение генерацию документов с использованием данных о сотрудниках, хранящихся в приложении. Для каждого сотрудника мы будем создавать и автоматически заполнять документ, а также отображать его на экране.
![](/_nuxt/image/98dfe6.png)
Дополнения Jmix публикуются на Jmix Marketplace. Вы можете просматривать и устанавливать их прямо в Jmix Studio.
![](/_nuxt/image/5fbf69.png)
![](/_nuxt/image/212611.png)
Для создания отчета укажите название, описание, группу. Затем добавьте полосы, именованные области из шаблона, которые будут заполняться данными, указанными на том же экране с помощью SQL, JPQL или Groovy. После настройки полос, параметров и форматов значений загрузите шаблон для заполнения данными. Вы можете использовать Word, Excel, HTML или другие форматы для шаблона. В этом примере мы используем файл .docx с формой проверки сотрудника и загружаем его в систему.
Далее дизайнер предоставляет возможность указать права доступа для отчета через механизм контроля доступа Jmix. Когда отчет готов, вы можете запустить его вручную и проверить.
![](/_nuxt/image/646440.png)
Теперь, когда отчет настроен, ваша цель — добавить в приложение бизнес-логику и автоматизировать процесс генерации отчета, который мы только что запустили вручную.
Система должна автоматически генерировать форму проверки сотрудника для выбранного пользователя по нажатию кнопки на экране.
Внесем изменения в экран с отображением списка пользователей, добавим туда кнопку и сервис для генерации отчета.
Откройте проект Onboarding в IntelliJ IDEA и найдите представление User.List. Представления определяются Java-классами, обычно в паре с соответствующим XML файлом – дескриптором. В дескрипторе определяется макет представления пользователей. Jmix Studio предоставляет дизайнер представлений для разработки макета и настройки свойств компонентов UI в стиле WYSIWYG.
![](/_nuxt/image/a863f8.png)
Добавим кнопку «Подготовить документы» на экран. Для этого нужно перейти к компоненту DataGrid, отображающему список пользователей, и добавить новое действие. Это действие появится на панели кнопок и будет вызывать указанный вами сервис. Дизайнер представлений помогает настроить макет, добавить компоненты и сконфигурировать их.
Теперь нужно реализовать логику создания и заполнения документа. Мы создадим сервис, который в дальнейшем привяжем к кнопке.
Когда HR-менеджер нажимает кнопку «Подготовить документы», мы должны создать экземпляр сущности Document, сгенерировать документ, заполнить его данными о сотруднике и сохранить результат.
![](/_nuxt/image/b17537.png)
- Data Manager: Основной интерфейс для CRUD (создание, чтение, обновление, удаление) операций над сущностями.
- File Storage: Абстракция, позволяющая использовать различные реализации хранения файлов и предоставляющая единый интерфейс для доступа к файлам и ссылок на них из сущностей модели данных.
И специфические для дополнения инструменты:
- ReportRunner: Интерфейс, используемый для запуска отчетов. Все его методы возвращают объект ReportOutputDocument, содержащий результат выполнения отчета.
![](/_nuxt/image/87d422.png)
После того как мы автоматизировали процесс создания и заполнения документа, нам понадобятся экраны для просмотра и редактирования созданных экземпляров сущности Documents.
Jmix View Designer помогает создавать экраны для сущностей автоматически. Мы воспользуемся этим функционалом. В дальнейшем можно дорабатывать сгенерированные экраны с помощью инструментов дизайнера.
Используя роли и разрешения подсистемы безопасности Jmix, вы можете ограничить доступ к сгенерированным документам и отображать в списке только те документы, которые принадлежат текущему пользователю.
![](/_nuxt/image/0d4dcf.png)
Доработаем экран отображения экземпляров сущности Document, добавим возможность просматривать сгенерированный документ.
Jmix предоставляет широкую линейку визуальных компонентов для реализации пользовательского интерфейса. С помощью дизайнера представлений мы выберем компонент для отображения документа и разместим его на экране.
![](/_nuxt/image/71971f.png)
Истории успеха
![case big bang](/_nuxt/image/acfafb.png)
![case big bang](/_nuxt/image/b2824c.png)
![case big bang](/_nuxt/image/806fff.png)