PITSS Tech Blog
News zu Java, PL/SQL, Entwicklung & TechnologiewechselJasperReports Review: Stärken, Schwächen und Features des Reporting-Tools
Jasper Reports darf wohl als das populärste Reporting-Werkzeug in der Open-Source-Gemeinde angesehen werden. Seit mehr als zehn Jahren bestimmt das Produkt den Markt mit effizienter Dokumenterstellung, funktionalem Reporting und Business-Intelligence-Lösungen.
Nach der Abkündigung von Oracle Reports kommt aktuell Bewegung in den Markt und viele sind gefordert, sich nach Alternativen umzuschauen. Mit Jasper Reports finden sie mehr als nur eine gleichwertige Lösung. Was den Reiz dieser Lösung besonders ausmacht, ist die Möglichkeit, das Reporting für sich und seine Geschäftsprozesse neu zu entdecken.
In dem folgenden Review möchten wir den ersten Eindruck von Jasper Reports wiedergeben und Stärken und Schwächen des Tools aufzeigen.
Inhaltsverzeichnis
1. Der erste Eindruck zählt
2. Verwendung eines Repository
3. Breite Unterstützung von Wizards
4. Layout-Konzept
5. Einheitlichkeit durch Styles
6. Subreports für steigende Komplexität
7. Programmieren mit Java, Groovy oder JavaScript
8. Deployment-Alternativen
9. Stärken
10. Schwächen
11. Fazit
Der erste Eindruck zählt
Die kostenlose Community Edition von Jasper Reports steht jedem Interessierten zum Herunterladen zur Verfügung. Das Bundle besteht aus:
- JasperReports Library: Einer Sammlung von Jar-Files, die das Herzstück des Tools darstellen
- JasperReports Server: Eine Webapplikation zur Administration der Reports-Engine
- Jaspersoft Studio: Einer auf Eclipse basierenden IDE zur Erstellung der Reports. Diese IDE löste mit der Version 5.5, veröffentlicht in 2014, den zuvor genutzten iReport Designer ab.
Für einen ersten Eindruck reicht der Start in das Jaspersoft Studio, da die Entwicklungsumgebung alle Komponenten enthält, um Berichte erstellen und auch testen zu können.
Java-Entwickler werden sich in der IDE sofort wiederfinden, da sie komplett auf den Eclipse-Varianten ab Version 4.4 und folgenden aufbaut. Das Jaspersoft Studio kann entweder als Standalone-Software oder als Eclipse-Plugin, falls bereits andere Entwicklungsprojekte mit Eclipse betreut werden, genutzt werden. Durch die Nähe zu Eclipse ist sichergestellt, dass Integrationen in Versionsverwaltungen, wie z. B. Subversion oder GIT direkt enthalten sind. Ebenfalls sind die Konzepte von Project Explorer, Outlines, Toolbars, Properties, verschiedenen Views, Logs und Elementen an die üblichen Muster bei einer IDE angelehnt, so dass die Lernkurve sich auf die JasperReports-spezifischen Konzepte beschränkt.
Verwendung eines Repository
Eines der grundlegenden Konzepte ist die Verwendung des Repository innerhalb von Jasper Reports. In der Entwicklungsumgebung wird das Repository genutzt, um die verschiedenen Datenquellen für die Berichte zu registrieren. Die Auswahl der verfügbaren Technologien für die Datenquellen lässt dabei keine Wünsche übrig. Bereits mit der Installation sind 18 verschiedene Data-Adapter, wie z. B. JDBC-Connection, EJBs, JSON aber auch CSV und XML verfügbar. Sollte ein Wunsch offen bleiben, kann das mitgelieferte Interface JRDataSource mit Java an jede beliebige Datenquelle angepasst werden.
Das Konzept des Repository ist auch für den Server bindend, d. h. in der Produktivumgebung wird gleichfalls ein Repository genutzt, um alle Berichte und damit verbundene Dateien wie in einem Filesystem zu speichern. Bei der Installation des Servers wird standardmäßig eine Postgres-Datenbank mit für dieses Repository angelegt. Es können aber auch andere, bereits vorhandene Datenbanken dafür genutzt werden.
In der Entwicklungsumgebung liegen die Berichte im lokalen Filesystem und werden über die IDE im Projekt Explorer verwaltet. Bei größeren Projekten bietet es sich an, hier von Anfang an in sinnvollen Verzeichnisstrukturen und Namensräumen zu strukturieren. Ein einzelner Bericht beinhaltet dann in einer XML-Struktur (Dateiendung .jrxml) alle Informationen, von den benutzten Queries des Datenmodells über die Angabe von Parametern und Variablen, die Verwendung von Scriplets für die Programmierung bis hin zur Darstellung des Layouts.
Breite Unterstützung von Wizards
Für die Erstellung eines Berichtes bietet das Jaspersoft Studio eine Vielzahl von Wizards an, die einen ersten Einstieg immens vereinfachen. Nach der Auswahl eines geeigneten Templates und der Wahl des passenden Data-Adapters, kann mit wenigen Klicks die Grundlage für einen neuen Bericht erstellt werden.
Das Datenmodell wird innerhalb des Berichts über einen eigenen “Dataset and Query”-Designer modelliert. Je nach Vorliebe des Entwicklers kann das Select-Statement handgeschrieben eingetragen oder durch eine Vielzahl von Hilfsmitteln zusammengestellt werden. Wertvoll ist dabei, dass sowohl Berichts- als auch Systemparameter über eine Palette angeboten werden. Je nach Wahl des Data-Adapters werden für den Wizard in der passenden “Sprache” (JSON, SQL, XPath etc.) die sinnvollen Hilfsmittel zur Erstellung eines Datasets angeboten. Der integrierte Data-Previewer stellt sicher, dass am Ende auch die richtigen Daten für den Bericht selektiert werden.
Mögliche Gruppierungen und Sortierungen der Daten werden im Anschluss durch die Struktur des Berichtes mit der Angabe von Feldern oder Variablen für die Gruppierung und Sortierung angegeben. Dabei kann natürlich auf Felder der Datenquelle, aber auch auf Parameter und selbst erstellte Funktionen, auf die wir später noch eingehen werden, zurückgegriffen werden.
Layout-Konzept
Das Layout eines JasperReports ist horizontal in die Bereiche ‚Titel‘, ‚Kopfzeile‘, ‚Spaltenüberschriften‘ und ‚Spaltenunterschriften‘ (jeweils bei einem mehrspaltigen Bericht) sowie Fußzeile und Zusammenfassung gegliedert. Sollte der Bericht Gruppierungen beinhalten, steht für jede Gruppe noch einen Kopf- und Fußbereich zur Verfügung.
Mit dieser Gliederung lassen sich in der Regel alle Anforderungen eines modernen Berichtslayouts erfüllen. Im Jaspersoft Studio ermöglicht der Berichtsdesigner sowohl ein Design-View, in dem Elemente innerhalb der einzelnen, sogenannten Bändern, positioniert werden, wie ein Source-View, in dem direkt das XML-Dokument bearbeitet werden kann. Es bleibt den Vorlieben des Entwicklers überlassen, ob er seine Änderungen im Design-View, in der XML-Datei oder der Vielzahl der Assistenten durchführen möchte. Die IDE hält alle Ansichten synchron und speichert die Anpassungen im JRXML-File.
Analog zum Daten-Designer unterstützt die IDE auch im Layouten mit einer einfachen und performanten Voransicht, damit der Entwickler direkt ein Feedback zu seinen durchgeführten Änderungen bekommt.
Aus der verfügbaren Palette können weitere Berichtselemente recht einfach per Drag and Drop in die passenden Bereiche (Bänder) des Reports gezogen werden. Neben grafischen Elementen stehen dabei auch bereits vorkonfigurierte Objekte, wie z. B. Seitennummerierungen, Druckdatum, Prozentberechnungen etc. zur Verfügung.
Jedes Objekt kann anschließend über eine Vielzahl von individuellen Eigenschaften weiter angepasst werden.
Einheitlichkeit durch Styles
Für eine einheitliche Gestaltung der Reports bietet Jasper die durchgängige Verwendung von Styles an. Styles können mit dem Verfahren von CSS verglichen werden und fassen alle darstellungsrelevanten Attribute eines Objektes, wie z. B. Farbe, Font, Strichstärken, Abstände etc. zusammen. Diese können in einem Bericht definiert und an alle Elemente vergeben werden. Für ein unternehmensweites Design können Styles auch zentral erstellt und referenziert werden.
Spätestens bei dem Wunsch von datengetriebenen Formatierungen der Elemente ist die Verwendung der Styles notwendig, da Jasper Reports bedingte Formatierungen ausschließlich über Templates erlaubt. Das hat gegenüber anderen Reporting-Werkzeugen den Vorteil, dass die Formatierung hier nicht im Quellcode des Triggers verschwindet, sondern wartbar und zentral sichtbar bleibt.
Damit auch ganze Berichte übergreifend einen einheitlichen Eindruck hinterlassen, können Logos, struktureller Aufbau, wiederkehrende Elemente und die Styles in Berichtstemplates zusammengefasst werden. Damit wird die umfangreiche Erstellung neuer Berichte deutlich beschleunigt.
Soll ein Bericht über Diagramme Daten verdichten und ansprechender darstellen, findet der Entwickler im Jaspersoft Studio mit dem Chart Wizard die Möglichkeit, aus über 20 verschiedenen, weiter konfigurierbaren Diagrammtypen die passende Darstellungsform für seinen Use Case auszuwählen. Der Wizard hilft dabei, alle notwendigen Daten für die Datenreihen, Beschriftungen, Achsen etc. auszuwählen. Damit können in der Regel die wichtigsten Anforderungen an eine Datenvisualisierung erfüllt werden. Weitergehende Ansprüche in Richtung von komplexen Business-Intelligence-Lösungen sind dann mit den kostenpflichtigen Varianten von Jasper (siehe dazu später mehr) möglich.
Subreports für steigende Komplexität
Sollen in einem Bericht Daten aus unterschiedlichen Datenquellen oder mehreren Datasets (z. B. voneinander unabhängige Select-Statements) zusammengefasst werden, bietet Jasper Reports dazu das Verfahren von Subreports an.
Dazu werden die einzelnen Bestandteile zunächst in jeweils eigenen Reports, die in der Regel einfacher sind, d. h. ohne Kopf- und Fußzeilen, ohne Titel und Zusammenfassung, erstellt. Diese Subreports können so modular designet werden, dass sie für mehrere Berichte genutzt werden können. Bei der Integration können aus dem Hauptreport eigene Parameter an den Subreport übergeben werden, sowie Ergebnisse, die in dem Subreport ermittelt werden, an eigene Variablen aus dem Hauptreport zurückgeführt werden.
Gerade bei der Aufgabenstellung, in einem Bericht Daten aus unterschiedlichen Datenquellen zusammenzuführen, sind Subreports die präferierte Wahl.
Durch die Nähe zu Java ist es nicht verwunderlich, dass auch die Mehrsprachigkeit von Jasper Reports nach dem gleichen Verfahren (i18N) umgesetzt wird. Die Übersetzung basiert auf Property-Bundlen, die zu einem Textschlüssel in den geforderten Sprachen den jeweiligen Text liefern. Dafür ist es notwendig, dass kein statischer Text mehr im Report verbleibt, sondern durch Felder ersetzt wird, die dann über eine sehr einfache Variablenreferenz die Internationalisierung sicherstellen.
Programmieren mit Java, Groovy oder JavaScript
Generell können im Layout auch Felder platziert werden, die nicht direkt an das Datenmodell gebunden sind. Diese werden dann über Variablen, Parameter, Ausdrücke oder eigene Funktionen befüllt. Der Wizard für das Erstellen der Ausdrücke bietet eine vollständige Liste aller verfügbaren Objekte inkl. vorhandenen Built-in-Funktionen und der Syntax der verwendeten Methoden an.
In der Regel ist die Programmiersprache für diese Ausdrücke Java, allerdings kann am Report auch konfiguriert werden, dass Groovy oder JavaScript verwendet werden soll. In diesen Fällen passt sich der Wizard entsprechend der verwendeten Syntax an.
Die hierarchische Reihenfolge der Ausdrücke im Outline des Berichtes bestimmt auch die Reihenfolge der Berechnung dieser Ausdrücke, was gerade bei abhängigen Berechnungen zu beachten ist. Darüber hinaus kann jeder Berechnung der Ausführungszeitpunkt (einmal am Anfang des Berichtes, nach jedem Seitenwechsel, nach jedem Band etc.) mitgegeben werden.
Reichen die Standard-Funktionen von Java, JavaScript oder Groovy nicht aus, und sind eigene Methoden für das Ermitteln der Ausdrücke oder Variablen notwendig, können in sogenannten Scriptlets eigene Implementierungen in Java erfolgen.
Scriptlets fungieren als Interface zwischen dem Report und der Jasper Reports-Engine und basieren auf einer der beiden gegebenen Java-Klassen JRAbstractScriptlet oder JRDefaultScriptlet. Die Klassen bieten die Möglichkeit, Eventtrigger zu nutzen, wie z. B. den beforeReportInit()-Trigger für das Initialisieren von Tabellen, bevor der Bericht gestartet wird. In dieser Java-Klasse kann aber auch jede beliebige Methode implementiert werden, die dann im Anschluss, nach der Registrierung des Scriptlets im Report zur Verfügung steht. Die so erstellten Scriptlets müssen beim Deployment als eigene JAR-Files dem JasperReports-Server zur Verfügung gestellt werden.
Deployment-Alternativen
Das Deployment von Berichten in das Repository des Jasper Reports-Servers kann grundsätzlich auf drei verschiedenen Wegen erfolgen. Zum einen kann der Server im Jasperstudio ebenfalls eingebunden werden, so dass die Berichte direkt aus der Entwicklungsumgebung bereitgestellt werden können. Das bietet sich für einen Testserver an, auf dem der Entwickler dedizierten Zugriff besitzt.
Für eine Bereitstellung der Sourcen auf einem Produktionsserver kann die Weboberfläche, die für die Administration des Jasper-Servers vorgesehen ist, genutzt werden. Sollen gleichzeitig mehrere Server mit dem “Patch” der neuen Reports versorgt werden, kann ein Deployment auch mit einer dafür bereitgestellt Java API erfolgen. In allen Fällen ist nicht nur die Berichtsdatei, sondern auch die Ordnerstruktur, Datenquellen, Bilder, Grafiken und ggf. die erstellten Java-Klassen auf den Server zu kopieren.
Neben der Community Edition bietet Jasper Reports auch verschiedene kommerzielle Varianten des Tools an. Eine anschauliche Übersicht finden Sie auf der Webseite des Anbieters.
Neben der Ausprägung des Supports entfällt bei der Community Edition alles, was in Richtung Business-Intelligence-Funktionalitäten des Werkzeuges geht, d. h. das Speichern von Änderungen an interaktiven Berichten, Datenvisualisierungen über JavaScript (Visualize.js), webbasierter Berichtsdesigner etc.
Für die Aufgaben des klassischen Reporting ist die Community Edition allerdings bestens gerüstet.
Stärken (+)
Durch die Nähe des Jaspersoft Studio zu Eclipse fühlt sich jeder Java-Entwickler sofort wohl bei Jasper Reports und die Lernkurve ist sehr schnell genommen, zumal das Konzept sehr intuitiv ist.
Berichte können mit der Vielzahl der Assistenten schnell und einfach erstellt und direkt im Jaspersoft Studio getestet werden, was die Zeit für das Debuggen enorm reduziert.
Die Verwendung von Templates in der Berichtserstellung erlaubt gerade bei der Erstellung vieler neuer Berichte ein einheitliches Look and Feel und spart zusätzlich wertvolle Arbeitsschritte.
Zur Laufzeit besticht der Server gerade bei hohem Druckaufkommen mit sehr langen Berichten durch seine Performance.
Schwächen (–)
Verwunderlich mag erscheinen, dass es keine Stelle im Reports-Server gibt, an der Druckserver, Drucker oder andere Printing-Services konfiguriert werden können. Es ist schlichtweg nicht vorgesehen, vom Server aus direkt zu drucken. Hier muss sich der Entwickler über den Umweg der PDF-Datei und eigenen Scripts behelfen.
Das Konzept, eine Datenquelle direkt mit einem Bericht zu verbinden, führt zum einen dazu, dass umfangreiche Berichte nur noch durch Subreports zu lösen sind, was die Komplexität deutlich erhöht. Auf der anderen Seite erschwert es die Aufgabe, zwischen Datensets und Layout zu modularisieren, wenn z. B. in einem ERP-System kundenspezifische Alternativen unterstützt werden sollen.
Fazit
Die Möglichkeit, Jasper Reports auch über Webservices und URL-Calls zu integrieren, macht das Tool auch außerhalb einer reinen Java-Anwendungsentwicklung interessant. Pixel-Perfect-Printing erlaubt auch bei klassischen Aufgaben der Dokumentenerstellung, wie Labels, Barcodes und Formulare, eine sichere Verwendung. Das Tool ist eindeutig für die Software-Entwickler ausgerichtet, die, wenn es der erste Schritt in die Java-Welt sein sollte, die Lernkurve nicht unterschätzen dürfen.
0 Kommentare