Zum Ende der Metadaten springen
Zum Anfang der Metadaten

Scriptlets bieten ein mächtiges Werkzeug, durch selbst angefertigte Java Klassen Einfluss auf die Ausführung eines Reports/Formular zu nehmen. Zur Erstellung eines einfachen Scriptlets genügt es von net.sf.jasperreports.engine.JRDefaultScriptlet abzuleiten. In dieser Klasse sind Funktionsrümpfe implementiert, welche keinen Inhalt besitzen sind und mit eigenen Java-Code definiert werden können. Sie können müssen aber nicht benutzt werden. Einen Überblick zu den Funktionen gibt es bei http://www.massapi.com/source/jasperreports-4.0.2 oder http://jasperreports.sourceforge.net/api.

Eine schrittweise Anleitung zur Anfertigung eines Scriptlets und Verwendung im iReport kann im Jasperreport ultmade Guide wunderbar nachvollzogen werden.

Daher werden hier nur die Eckpunkte und Besonderheiten in Bezug auf Nuclos erleutert.

Ablauf

  • Scriptletclass erstellen
  • Scriptlet in iReport testen
  • Einen Ordner Extensions anlegen
  • Installer ausführen
  • Parameter setzen im Nuclos setzen

 

Scriptlet-Class erstellen

  • Ein Java-Library-Projekt erstellen
  • Alle selbst erstellten Klassen sollten sich in einem Package befinden.
  • aktuelles JDK verwenden
  • Jasperreport-3.5.3.jar als abhängige Library hinzufügen
  • andere Abhängikeiten hinzufügen

Scriptlet in iReport testen

Das Scriptlet sollte erst in Nuclos eingebunden werden wenn es sicher funktioniert! Über die Preview im iReport kann die zukünftige Verwendung getestet werden. Dafür müssen zunächst die Klassen/Klasse dem Classpath von iReport bekannt gemacht werden. Unter Extras -> Optionen - > Tab: Classpath fügt man mit add Jar das Archiv seines Scriptlets hinzu (xyz.jar). Zusätzlich sollte hier das Häkchen für reloadable gesetzt werden damit auch jegliche Änderungen wirksam werden. An dieser Stelle müssen auch die abhängigen Librarys hinzugefügt werden, auch die jasperreports-3.5.3.jar.

Wenn es sich um nur ein Scriptlet handelt, wird lediglich der Klassenname (vollständiger: com.package.klasse) unter den Eigenschaften des Dokumentes beim Property "Scriptlet Class" eingetragen. Nach dem Speichern findet sich der Klassenname an allen wichtigen Stellen.( Scriptlet -> Report, $P{REPORT_SCRIPTLET}).

Jenachdem was das Scriptlet ausführen soll bzw. mittels ihre definierten Funktion zurückgibt, wird die entsprechende Komponente aus der Palette ausgewählt.( Image, TextField). im Image/Text Expression unter den Eigenschaften wird die Methode über den Parameter aufgerufen.($P{REPORT_SCRIPTLET}.methodexy())

 

Parameter setzen im Nuclos setzen

Damit die zusätzlichen Klasse der Jasperreports-3.5.3 - engine zugänglich gemacht werden. Ist im Nuclos ein spezieller Parameter anzulegen oder falls schon vorhanden in den Werten zu erweitern.
Siehe hier: Nuclos Parameter für den Jasperreports - Classpath oder Systemparameter

Einen Ordner extensions anlegen

Ist das Scriptlet erstellt und im iReport ausreichend getestet worden, kann der Prozess des Einbindens im Nuclos beginnen. Eine wesentliche Eigenschaft von Nuclos ist die Erweiterbarkeit der Funktionalitäten. In diesem Fall bietet Nuclos die Möglichkeit die die erstellten Scriptlet-Jars über ein Update zur Verfügung zu stellen. Dazu zu muss im Vorfeld im Installationspfad von Nuclos ein Ordner "extensions" angelegt werden. In Abhängigkeit der darin enthaltenen Funktionalität enthält der Ordner seine eigene Struktur(Unterordner) client für clientseitig, server für serverseitig, common für beides.

Die Scriptlet.jar, sowie die abhängigen Jar's werden nach ~/<Installationspfad-Nuclos>/extensions/server/ geschoben. Das Einbinden der Jasperreport-3.5.3.jar ist nicht notwendig, da dieses Archiv in Nuclos bereits verwendet wird.

 

Installer ausführen

Nachdem die Extensions-Struktur angelegt ist, muss auf die bestehende Installation ein Update ausgeführt werden, indem der Installer einfach noch einmal ausgeführt wird. Im Log der Installation kann verfolgt werden, ob die neue Ordnerstruktur bzw. die Jar's mit installiert werden.

  • Keine Stichwörter

Kommentar

  1. Die Links zu Jasperreports haben sich geändert, habe sie angepasst.