Конструктор отчетов open source

Обновлено: 19.05.2024


В основе библиотеки лежит простая идея разделения выборки данных и отображения данных в готовый отчет (data layer & presentation layer). Выборка данных описывается разнообразными скриптами, а отображение данных настраивается прямо в документах-шаблонах. При этом, для того, чтобы создать шаблон не требуются специальные средства, достаточно иметь под рукой Open Office или Microsoft Office.

Отчет состоит из так называемых полос. Полоса одновременно является и набором данных и областью в шаблоне, куда эти данные отображаются (связывает data layer и presentation layer).

Рассмотрим для начала пример в стиле Hello World.

Очень простой пример

Представим, что у нас есть фирма и нам нужно вывести список всех сотрудников фирмы, с указанием должности сотрудника.
Мы создаем полосу отчета c именем Staff, в которой указываем, что данные загружаются SQL запросом
Java code


Далее мы создаем xls-шаблон, в котором отмечаем именованный регион Staff и расставляем алиасы в ячейках.

Примеры посложнее рассматриваются ниже.

Немного истории

  1. позволяла создавать отчеты (по крайней мере, шаблоны отчетов) обычным пользователям;
  2. поддерживала загрузку данных из различных источников;
  3. поддерживала различные форматы шаблонов (XLS, DOC, HTML);
  4. поддерживала конвертацию отчетов в PDF;
  5. была расширяемой (позволяла быстрое добавление новых способов загрузки данных и новых форматов шаблонов);
  6. легко встраивалась в различные IoC контейнеры.

Первые шаги

  1. Отсутствует внятный API для работы с таблицами. Например, чтобы скопировать строку таблицы, нужно использовать системный буфер обмена (выделяя строку, копируя и вставляя ее в нужное место).
  2. Для каждой генерации отчета порождается процесс Open Office (и уничтожается после печати). Изначально мы использовали библиотеку bootstrapconnector для порождения процессов, но вскоре убедились, что во многих случаях она оставляет процесс в живых (в зависшем состоянии) или вообще не пытается процесс завершить, что приводило к коллапсу системы через какое-то время. Нам пришлось переписать логику запуска и уничтожения процессов Open Office, воспользовавшись наработками ребят, написавших jodconverter.
  3. UNO Runtime (и сам Open Office сервер) имеет проблемы с потокобезопасностью, из-за чего под нагрузкой сервер может зависнуть или внезапно остановиться из-за внутренней ошибки. Это привело к тому, что пришлось делать механизм повторного запуска отчетов (если отчет не напечатался — попробовать напечатать его еще раз). Это, естественно, сказывается на скорости работы данного вида отчетов.

Docx4j

Долгое время мы использовали только XLS и DOC шаблоны, но затем было решено поддержать также XLSX и DOCX. Выбор пал на библиотеку DOCX4J, которая к тому времени набрала популярность.
Важным достоинством этой библиотеки для нас стало то, что она предоставляет низкоуровневый доступ к структуре документа (фактически оперируя с XML). С одной стороны это несколько усложнило код и логику, а с другой открыло почти безграничные возможности по управлению документом, так как любые операции над ним были теперь возможны.
Еще более серьезным достоинством стала возможность отказаться от запуска Open Office для генерации DOCX-отчетов.

Пример посложнее


Представим, что у нас есть книжный магазин. Давайте попробуем с помощью нашей библиотеки сделать отчет, выводящий в XLS список магазинов и список книг проданных в каждом из магазинов.
Представим также, что мы (владельцы магазина) совсем не знаем язык программирования Java, но на наше счастье наш системный администратор знаком с SQL, и у нас даже есть база данных, содержащая информацию обо всех продажах.
В первую очередь давайте создадим шаблон отчета в формате xls. Сразу отметим полосы отчета с помощью именованных регионов.

Затем опишем загрузку данных с помощью SQL.

Теперь мы должны описать отчет с помощью XML.


Запустив отчет из командной строки, мы получим следующий документ

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

Еще пример

Теперь представим, что наш магазин получил крупный заказ и нам нужно выставить счет заказчику. Попробуем создать отчет, в котором в качестве шаблона используется документ DOCX, а результат конвертируется в PDF. Загрузку данных для разнообразия опишем Groovy-скриптом.

Интеграция и расширение функциональности

Библиотека изначально проектировалась для расширения и интеграции в различные приложения. Примером такой интеграции может служить использование YARG в платформе CUBA. В качестве IoC-фреймворка мы используем Spring. Давайте посмотрим как YARG может встраиваться в Spring.


Основной bean в данном описании — reporting_lib_Reporting. Он предоставляет доступ к основной функциональности библиотеки — созданию отчетов. Для нормального функционирования необходимо определить фабрику форматтеров (работающих с различными типами документов — DOCX, XLSX, DOC и т.д.) и фабрику загрузчиков (загружающих данные). Также, если вы собираетесь использовать DOC отчеты, необходимо задать бин reporting_lib_OfficeIntegration, который отвечает за интеграцию с Open Office (с помощью которого обрабатываются DOC и ODT отчеты).
Следует заметить, что для добавления, например, нового загрузчика не нужно переопределять никаких классов библиотеки, достаточно добавить его в описание свойства dataLoaders в бине reporting_lib_LoaderFactory. Что мы в принципе и сделали, добавив jpql загрузчик данных ().
Для более серьезных изменений можно наследовать библиотечные классы или создавать свои с нуля, реализуя предоставленные интерфейсы. Практически вся функциональность библиотеки связана через интерфейсы и легко расширяется.

Standalone режим

Еще одной особенностью библиотеки YARG является то, что ее можно использовать как standalone приложение для генерации отчетов. Таким образом, имея на компьютере установленную JRE, вы можете генерировать отчеты из командной строки. Например, у вас есть серверное приложение на PHP и вы хотите генерировать XLS-отчеты. Вам достаточно создать XLS-шаблон, XML-описание отчета и после этого вы с помощью простой консольной команды сможете генерировать отчет.
Пример команды:

Заключение

В качестве заключения приведу несколько скриншотов UI, который предоставляет платформа CUBA для создания отчетов на движке YARG:












И пример отчета с графиками:


Шаблон отчета с графиком и диаграммой:


Готовый отчет с графиком и диаграммой


An analysis report acts as an essential helper for decision-makers to make decisions based on sufficient analysis. Click here to…

Careful dashboard design is indispensable in the process of creating an effective dashboard. Read this article to know some practical…

A business report is indispensable in business operation. Read this article to know its definition, 4 types of business reports…

A financial report plays essential role in company operation. Read this guide to learn basic information about financial reports and…


An analytics report uses company data to assess a business strategy or process. Modern business analysis reports consolidate a wealth…


Dashboard metrics dashboards allow you and your team to monitor the performance of various tactics, campaigns, and processes and enable…


Enterprise BI benefits. Click here to learn more about Enterprise Business Intelligence definitions, tools, and solutions.


Scorecards and dashboards are both important parts of business intelligence. Click to check how to choose scorecard vs dashboard.


Performance dashboards best quantify performance and ensure timely and accurate data, and this article describes the definition, types, and how…


An analysis report acts as an essential helper for decision-makers to make decisions based on sufficient analysis. Click here to…

Careful dashboard design is indispensable in the process of creating an effective dashboard. Read this article to know some practical…

A business report is indispensable in business operation. Read this article to know its definition, 4 types of business reports…

A financial report plays essential role in company operation. Read this guide to learn basic information about financial reports and…


An analytics report uses company data to assess a business strategy or process. Modern business analysis reports consolidate a wealth…


Dashboard metrics dashboards allow you and your team to monitor the performance of various tactics, campaigns, and processes and enable…


Enterprise BI benefits. Click here to learn more about Enterprise Business Intelligence definitions, tools, and solutions.


Scorecards and dashboards are both important parts of business intelligence. Click to check how to choose scorecard vs dashboard.


Performance dashboards best quantify performance and ensure timely and accurate data, and this article describes the definition, types, and how…

12 лучших инструментов для создания отчетов с открытым исходным кодом

Я узнал, бродя по dzone- ‘Лучший инструмент отчетности с открытым исходным кодом «Эта статья, нажмите на нее и увидите, что в ней есть« JavaEye Reporting Tool-JERT », я сначала подумал.JavaEye «Не этот JavaEye, это одно и то же имя. Но я все равно искал с любопытством, и результаты меня немного удивили, немного обрадовали. Может, меня нет, но теперь я знаю, прости меня

Но сначала давайте познакомимся с этими отличными инструментами отчетности:

Отчет BIRT - очень популярный инструмент для разработки отчетов с открытым исходным кодом. Используя тот же рабочий интерфейс, что и Dreamweaver, вы можете рисовать отчеты, генерировать изображения, экспортировать Excel и разбивать на страницы HTML как таблицу.Стиль и настройки скрипта просты.


2. Pentaho

Pentaho Report Designer - это инструмент для создания отчетов с открытым исходным кодом WYSIWYG. При разработке отчета пользователи могут перетаскивать и устанавливать различные элементы управления по желанию, а также могут быстро и легко установить источник данных для отчета. В процессе разработки отчета пользователи могут в любое время просмотреть результаты отчета.


3. OpenRPT

OpenRPT поддерживает создание отчетов SQL с оптимизированным графическим интерфейсом для PostgreSQL на различных платформах.


4. OpenReports

OpenReports предоставляет гибкое веб-решение для отчетов, поддерживает форматы отчетов PDF, HTML и XLS, разработан на основе WebWork, Hibernate и Velocity, а также обеспечивает загрузку файла OpenReports-Tomcat, который интегрирует Tomcat. Используйте Java для разработки, JasperReports в качестве механизма отчетов.


5. FreeReportBuilder

FreeReportBuilder - это инструмент отчетности Java, который может нормально работать с любой базой данных, требуется только драйвер JDBC. Чтобы


6. JMagallanes

JMagallanes - это приложение Olap и динамических отчетов с открытым исходным кодом, разработанное с использованием Java / J2EE. JMagallanes объединяет статические отчеты (на основе JasperReports), сводные таблицы Swing (для анализа OLAP) и диаграммы (на основе JFreeChart). Он может считывать данные из различных источников данных (таких как: SQL, Excel, XML и др.) И может генерировать различные выходные данные, такие как: PDF, XML, специальные файлы приложений для просмотра будущих отчетов в автономном режиме.


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


8. DataVision

DataVision - это инструмент отчетности, похожий на Crystal Reports, написанный на Java. Он поддерживает несколько источников данных (JDBC, текстовые файлы), а форматы вывода - HTML, XML, PDF, LaTeX, файлы данных, разделенные запятыми или табуляциями, и DocBook. Он позволяет создавать отчеты с помощью графического интерфейса пользователя, который поддерживает операции перетаскивания, а описание отчета сохраняется в виде XML. Чтобы


9. The Wabit – Open Source Reporting Tool

Wabit - это кроссплатформенный инструмент отчетности с открытым исходным кодом, который предоставляет программу с графическим интерфейсом и встроенный интерфейс.


10. Rlib

RLIB - это механизм отчетов на основе XML, который может создавать PDF, HTML, CSV и текстовые форматы.


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


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

wavegraph

In this article, I review some of the top open source business intelligence (BI) and reporting tools. In economies where the role of big data and open data are ever-increasing, where do we turn in order to have our data analysed and presented in a precise and readable format? This list covers tools which help to solve this problem. Two years ago I wrote about the top three. In this article, I will expand that list with a few more tools that were suggested by our readers.

Note that this list is not exhaustive, and it is a mix of both business intelligence and reporting tools.

BIRT originated from the open source Eclipse project, and was first released in 2004. BIRT is an open source technology platform used to create data visualizations and reports. Project sponsors include OpenText, IBM, and Innovent Solutions.

BIRT consists of several components. The main components include a report designer and the BIRT runtime, but BIRT also provides three extra components: a chart engine, chart designer, and viewer. With these components, you should be able to develop and publish reports as a standalone solution.

BIRT is written in Java, and is licensed under the Eclipse Public License. Its latest release, which runs on Windows, Linux, and Mac, can be downloaded here. Current development activities are shared through the project's most recent project plan.

JasperReport

JasperReport is one of the most popular and widely used open source reporting tools. It is used in hundreds of thousands production environments, and features both community and commercially-supported versions.

JasperReport consists of several components including the JasperReport Library, JasperReport Studio, and JasperReport Server. The library includes all of the core Java classes and APIs powering JasperReport. The ETL, OLAP, and server components provide JasperReport with important tools for enterprise environments, making it easier to integrate with the existing IT architecture of organizations. For a full overview and description of the components, visit the homepage of the JasperReport community.

JasperReport is supported by excellent documentation, a wiki, and additional resources. Written in Java, JasperReport runs on Windows, Linux, and Mac, and is available for download. Its latest release is from December 2015, and is licensed under AGPL.

Pentaho

Pentaho is a complete business intelligence suite, covering a gamut of use cases from reporting to data mining. The Pentaho BI suite encompasses several open source projects, of which Pentaho Reporting is one of them. Like the other tools, Pentaho Reporting has a rich feature set, ready for use in enterprise organizations.

The Pentaho BI suite also contains the Pentaho BI Server. This is a J2EE application which provides an infrastructure to run and view reports through a web-based user interface. Other components from the suite are out of scope for this article.

Pentaho is supported through many community resources such as documentation, wiki, and more. The tool runs on Java Enterprise Edition and can be used on Windows, Linux, and Mac. Its latest release is version 6.1 from April 2016, and is licensed under GPL. You can find downloads here.

SpagoBI

SpagoBI is another full business intelligence suite. Tools included in the suite are, for example: reporting, charts, cockpits, data-mining, ETL, and many more. The company behind it offers professional services such as user support, maintenance, consultancy, and training.

SpagoBI can integrate with many other tools, such as KeyRock identity manager, Orion Context Broker, and CKAN, the popular and widely used open data portal. It is certified for environments including Wildfly 8, 10 and JBoss EAP 7.

SpagoBI 5.2 was released in March 2016. Like some of the other tools, it is written in Java, and it is licensed under the Mozilla Public License version 2.0. Downloads are available here.

KNIME

KNIME is an open source analytics platform, with its origins in pharmaceutical research. Its use has expanded to industries such as banks, publishers, car manufacturers, telcos, and others.

KNIME provides a range of features, including collaboration extensions and a web portal. Machine learning is also integrated, including Weka support.

KNIME is written in Java, compatible with Linux, OS X, and Windows, and is licensed under the GPL. Its latest version was released December 2016, and can be downloaded here.

ReportServer

ReportServer is another open source business intelligence platform, with a commercial edition available as well. ReportServer allows for reporting, ad-hoc analyses, Excel and Word reporting, and multidimensional OLAP analytics.

ReportServer is based on Java and runs on Apache Tomcat, Wildfly, or other Java application server. Cloud and virtual images for Linux, OSX and Windows are provided by means of the Bitnami ReportServer Stack, and a native installer is availabel as well. The latest version, ReportServer 3.0, was released in March 2016, and is licensed under the AGPL. Installer packages, and virtual disk images are available as download.

Seal Report

Seal Report is an open source framework for producing reports and dashboard from any open database. Seal Report is fully open source, with Ariacom providing professional services such as consulting and training around the project.

Summary

All of these open source business intelligence and reporting tools provide a rich feature set ready for enterprise use. End users should do a thorough comparison and select the tool that best meets their needs. Some of the tools distinguishes themselves by specific features such as integration with machine learning, or availability of virtual machine and cloud images. Pick what works for you.

Have you used any of these tools? What was your experience? Or, have you used similar tool not listed here that you would like to share?

Are you interested in reading more articles like this? Sign up for our weekly email newsletter.

Читайте также: