Seite wählen

NETWAYS Blog

Jasper Reporting – Gruppierung von Daten

Jasper-ReportingDa endlose Listen von Informationen mit Host- und Service die evtl. notwendigen Schlussfolgerungen aus einem Report erschweren ist sowohl die optische Aufbereitung als auch Gruppierung der Daten sehr wichtig. Der oberste Grundsatz bei der Erstellung von Reports sollte immer Qualität vor Quantität sein. Wer auf den ersten Seiten keine nützlichen Informationen finden kann wird sich den Rest nicht antun, außer er hat keine andere Wahl. Mir ist zwar bewusst, dass gerade die ersten Beispielreports dieser Serie genau dieses Problem haben, aber wir müssen ja erstmal den Einstieg finden.
Die Gruppierung der Hostelemente aus der Datenbank starten wir mit einer Anpassung des Select-Statements:
[code lang=“sql“]
select c.alias,
a.host_object_id,
a.display_name,
a.address
from nagios_hosts a,
nagios_hostgroup_members b,
nagios_hostgroups c
where a.host_object_id = b.host_object_id
and b.hostgroup_id = c.hostgroup_id
and a.instance_id = 1
and b.instance_id = 1
and c.instance_id = 1
and display_name like $P{p_hostgroup}
[/code]
Anschließend müssen wir den vorhandenen Report-Parameter noch umbenennen, damit er zum verwendeten SQL-Parameter passt und das neue Feld c.alias in den Report einfügen.


Im Report Inspector ist dann im Menü „Add Report Group“ eine neue Gruppe zum Bericht hinzuzufügen. Der Name kann willkürlich vergeben werden, sollte aber den fachlichen Inhalt der Gruppe beschreiben, da er auch Grundlage für die daraus entstehenden Detailbänder ist. Als Group Expression verwenden wir c.alias, da dies das entsprechende Unterscheidungskriterium für den Gruppenwechsel darstellt.
Nach Anlage der Gruppe, kann dann in den neu entstandenen Detailbereichen noch die Positionierung von Überschriften, Beschreibungen oder Anzeige der neuen Gruppe erfolgen. Der ganze Report sieht dann so aus und kann wie immer auf dem Demo-System live gestestet werden. Auf netways.org gibt es wieder die Vorlage für die eigene Weiterentwicklung.
Natürlich kommt kein guter Bericht ohne Tortengrafik aus. Um das optische Feintuning fortzuführen, fügen wir im nächsten Post dieser Serie eine Torte hinzu. Hmmm lecker.

Bernd Erk
Bernd Erk
CEO

Bernd ist Geschäftsführer der NETWAYS Gruppe und verantwortet die Strategie und das Tagesgeschäft. Bei NETWAYS kümmert er sich eigentlich um alles, was andere nicht machen wollen oder können (meistens eher wollen). Darüber hinaus startete er früher das wöchentliche Lexware-Backup, welches er nun endlich automatisiert hat. So investiert er seine ganze Energie in den Rest der Truppe und versucht für kollektives Glück zu sorgen. In seiner Freizeit macht er mit sinnlosen Ideen seine Frau verrückt und verbündet sich dafür mit seinen beiden Söhnen und seiner Tochter.

Jasper Reporting – Parameter

Jasper-ReportingDie Erzeugung des Reports erfolgt meist ja für mehrere Rechner, Kunden, Abteilungen oder im Falle von Nagios für diverse Host- und Servicegruppen. Um entsprechende Parameter verarbeiten zu können, müssen diese erst im Report definiert und natürlich auch bei der Ermittlung der Daten im SQL-Statement berücksichtigt werden.
Wir starten mit der Anpassung des Select-Statements um die Daten auf den in diesem Beispiel verwendeten Host einzuschränken.
[code lang=“sql“]
select
host_object_id,
display_name,
address
from nagios_hosts
where instance_id = 1
and display_name like $P{p_host_name}
[/code]
Parameter werden immer in geschweifte Klammern mit einem $P gefasst. Eine Übersicht über die entsprechenden Typbezeichner gibt es im entsprechenden Property-Editor.
post6_screen1
Der Paramter muss natürlich im Report „bekannt“ gemacht werden, was über das Parameterfeld im Reports-Inspector erfolgt. Der Defaultwert für den Parameter sollte in unserem Beispiel „%“ sein, um bei fehlender Parametrisierung alle Hosts zu ermitteln.
post6_screen2
Damit der Benutzer bei der Ausführung des Reports zur Eingabe eines Hostnames aufgefordert wird, muss dieser auch auf dem Server erzeugt werden, was unterhalb der aktuellen Report-Unit im Folder Input controls via Kontextmenü erfolgen kann.
post6_screen4Im Eigenschaftsbereich des Webinterfaces wiederum kann der Anwender noch die Verwendung aktivieren bzw. deaktivieren und das Layout des Parameteraufrufs beeinflussen.
Das Parameterübergabe kann in der Live-Demo als Nagios_Host_3 getestet werden. Die verwendeten Daten basieren auf unserem Nagios-Demo-System, wodurch die vorhandenen Hosts dort eingesehen werden können.

Bernd Erk
Bernd Erk
CEO

Bernd ist Geschäftsführer der NETWAYS Gruppe und verantwortet die Strategie und das Tagesgeschäft. Bei NETWAYS kümmert er sich eigentlich um alles, was andere nicht machen wollen oder können (meistens eher wollen). Darüber hinaus startete er früher das wöchentliche Lexware-Backup, welches er nun endlich automatisiert hat. So investiert er seine ganze Energie in den Rest der Truppe und versucht für kollektives Glück zu sorgen. In seiner Freizeit macht er mit sinnlosen Ideen seine Frau verrückt und verbündet sich dafür mit seinen beiden Söhnen und seiner Tochter.

Jasper Reporting – Design Tips

Jasper-ReportingBereits im letzten Post haben wir den Report auf den Server geladen, jedoch sieht dieser aktuell noch etwas spartanisch aus. Es lohnt sich meistens am Ende noch etwas Zeit in die optische Aufbereitung der Reports zu investieren. Schon alleine um die Akzeptanz beim Empfänger zu verbessern. Über Schrift, Farben und Formen hinweg bietet iReport im Palettenbereich eine Vielzahl an Möglichkeiten.
Wir starten mit dem Einfügen eines Logos. Dieses kann entweder via URL von einem Webserver geladen oder in das Jasper-Repository kopiert werden.post5_screen1 Der Upload via iReport erfolgt wie auch beim Bericht via Kontextmenü durch Anlage einer neuen Ressource. Wichtig ist, das als Typ Image verwendet wird, um Probleme bei der Einbindung auszuschliessen.
post5_screen2Anschließend kann über die Palette ein Bildobjekt im Report platziert werden. Falls das Bild auf dem Server bereits verfügbar ist, kann die Auswahl hier abgebrochen werden und als Expression folgendes eingetragen werden.
[code lang=“shell“]
"repo:/reports/Images/Banner
[/code]
Der Name muss hier mit dem entsprechenden Repositorynamen übereinstimmen und da wir uns in der Welt von Java bewegen ist die Unterscheidung zwischen Groß- und Kleinschreibung wichtig.
Oberhalb des Arbeitsbereiches oder bei den entsprechenden Objekten im Eigenschaftsbereich können nach Belieben Schriftart und -größe eingestellt werden.
Reports mit vielen Zeilen wirken schnell unübersichtlich. Daher empfielt es sich solche Textwüsten wenigstens mit abwechselnd dunklen und hellem Hintergrund zu unterlegen. Dies ist mit einem kleinem Kniff auch mit iReport möglich. Nach Einbindung eines farbigen Rechtecks im Detailband kann dieser abwechselnd zur Zeilennummer angezeigt werden. Hierfür muss man in die Eigenschaft „Print When Expression“ folgendes einfügen:
[code lang=“java“]
new Boolean( $V{PAGE_COUNT}.intValue() % 2 ==0 )
[/code]
post5_screen5Über das Palettenobjekt „Page X of Y“ kann noch schnell ein Seitenzähler integriert werden und fertig! Hier wieder das Ergebnis als PDF und den Report als Download bei netways.org.
Im nächsten Post widmen wir uns der Übergabe von externen Parametern.

Bernd Erk
Bernd Erk
CEO

Bernd ist Geschäftsführer der NETWAYS Gruppe und verantwortet die Strategie und das Tagesgeschäft. Bei NETWAYS kümmert er sich eigentlich um alles, was andere nicht machen wollen oder können (meistens eher wollen). Darüber hinaus startete er früher das wöchentliche Lexware-Backup, welches er nun endlich automatisiert hat. So investiert er seine ganze Energie in den Rest der Truppe und versucht für kollektives Glück zu sorgen. In seiner Freizeit macht er mit sinnlosen Ideen seine Frau verrückt und verbündet sich dafür mit seinen beiden Söhnen und seiner Tochter.

Jasper Reporting – Upload des Reports

Jasper-ReportingUm den im letzten Post erstellten Bericht auch anderen Anwendern zur Verfügung zu stellen, muss dieser auf den Server geladen werden. Der Upload kann entweder über das Webinterface oder was aus meiner Sicht komfortabler ist, über iReport erfolgen. Der Upload erfolgt via HTTP und ist somit auch gut über Firewallgrenzen hinweg durchführbar.
Wir starten mit der Anlage einer neuen Serververbindungpost4_screen1. Hierfür wird lediglich die URL des Servers sowie Username und Passwort des berechtigten Benutzers benötigt. Default-User des JasperServers ist jasperadmin mit gleichlautendem Passwort.
Nach Speicherung kann sofort auf die Ordner des Servers zugegriffen und entsprechende Aktionen via Kontextmenü ausgeführt werden.
post4_screen2
So erfolgt dann auch gleich die Anlage der neuen Report-Unit, was den logischen Container des Reports mit Bildern, Datenbankverbindung und möglichen Parametern beschreibt.
Zur Angabe des Report Namens und einer möglichen Beschreibung muss noch die entsprechende Datenbankverbindung konfiguriert werden. Hier besteht die Möglichkeit eine bereits im Repository definierte Verbindung auszuwählen oder entsprechend anzulegen. Für den Test empfiehlt sich die Anlage einer eigenen Verbindung durch Kopie der lokalen Einstellungen.
post4_screen3
Nach Speicherung des Reports ist dieser sofort im Webinterface sichtbar und kann dort via Klick gestartet werden. Hier kann das Ergebnis als PDF heruntergeladen werden.
Der nächste Post widmet sich der optischen Verschönerung des Reports um ihn auch für die Weitergabe an Dritte fit zu machen.

Bernd Erk
Bernd Erk
CEO

Bernd ist Geschäftsführer der NETWAYS Gruppe und verantwortet die Strategie und das Tagesgeschäft. Bei NETWAYS kümmert er sich eigentlich um alles, was andere nicht machen wollen oder können (meistens eher wollen). Darüber hinaus startete er früher das wöchentliche Lexware-Backup, welches er nun endlich automatisiert hat. So investiert er seine ganze Energie in den Rest der Truppe und versucht für kollektives Glück zu sorgen. In seiner Freizeit macht er mit sinnlosen Ideen seine Frau verrückt und verbündet sich dafür mit seinen beiden Söhnen und seiner Tochter.

Jasper Reporting – iReport

Jasper-ReportingIm letzten Post bin ich ja bereits detailliert auf die Installation des JasperServer eingegangen, welcher für die Aufbereitung und Versendung der Berichte zuständig ist. Da die aktuelle Community Version noch nicht über den Ad Hoc-Report Builder der Professional Version verfügt, was jedoch für Anfang nächstes Jahr geplant sein soll, ist noch ein entsprechendes Werkzeug zur Erzeugung der Reports notwendig. Hier kommt das Werkzeug iReport zum Einsatz.
iReport kann, wie auch die Server-Komponente, bei JasperForge.org heruntergeladen werden und ist, da generisch, für alle gängigen Plattformen verfügbar. Nach Entpacken des Archives muss lediglich die ausführbare Datei gestartet werden und schon kann es losgehen.
Nach Erstellung eines neuen Reports im Hauptmenü, erhält entsteht eine Übersicht des neuen Reports und seiner Attribute. Klar zu erkennen ist im Editor bereits die Unterteilung in verschiedene Bereiche, den so genannten Bändern, welche für die spätere Anzeige und Wiederholung von Informationen bei der Ausführung verantwortlich sind.
Die Anbindung an ein Datenbanksystem setzt die Erzeugung einer entsprechende Datasource voraus, was mit Hilfe des Container-Buttonspost3_screen3 erfolgen kann. Der Zugriff kann auf verschiedene Datenquellen erfolgen, jedoch beschränken wir uns in den nachfolgenden Beispielen auf den Datenbankzugriff via SQL.
Nach erfolgreichem Test der Datenbankanbindung kann mit Hilfe des Statement-Buttons neben dem Preview Bereich das entsprechende Statement mit dem Query-Builder erzeugt oder einfach eingegeben werden.
[code lang=“sql“]
select
host_object_id,
display_name,
address
from nagios_hosts
where instance_id = 1
[/code]
Unser Beispielstatement ermittelt lediglich die Hostinformationen aus der NDO-Datenbank.
post3_screen6
Nach Validierung und Speicherung des Statements stehen die selektierten Felder im Bereich des Report Inspectors zur Verfügung und können via Drag&Drop in den entsprechenden Report Bändern platziert werden. Mit Hilfe von Formen und Labels aus der Palette kann der Report noch um statische Elemente ergänzt werden.
post3_screen7
Via Preview kann das Ergebnis sofort geprüft werden und beschleunigt so den Entwicklungsprozess erheblich.
Der Beispielreport findet sich auch in unserem Demo-System und auf netways.org.
Der nächste Post beschreibt den Upload des Berichts auf den Server.

Bernd Erk
Bernd Erk
CEO

Bernd ist Geschäftsführer der NETWAYS Gruppe und verantwortet die Strategie und das Tagesgeschäft. Bei NETWAYS kümmert er sich eigentlich um alles, was andere nicht machen wollen oder können (meistens eher wollen). Darüber hinaus startete er früher das wöchentliche Lexware-Backup, welches er nun endlich automatisiert hat. So investiert er seine ganze Energie in den Rest der Truppe und versucht für kollektives Glück zu sorgen. In seiner Freizeit macht er mit sinnlosen Ideen seine Frau verrückt und verbündet sich dafür mit seinen beiden Söhnen und seiner Tochter.