Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

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 die zahlreichen Funktionsrümpfe der Klasse net.sf.jasperreports.engine.JRAbstractScriptlet durch leere Methoden implementiert. Sie können dann diejenigen Methoden, welche keinen Inhalt besitzen sind und mit eigenen Java-Code definiert werden können. Sie können müssen aber nicht benutzt werden. sie wirklich benötigen, mit Ihrem eigenen Inhalt überschreiben. Einen Überblick zu den Funktionen gibt es bei http://www.massapi.com/source/jasperreports-4.0.2 oder http://jasperreports.sourceforge.net/apihier: JRDefaultScriptlet (JasperReports API) (sourceforge.net).

Eine schrittweise Anleitung zur Anfertigung eines Scriptlets und Verwendung im iReport in Jaspersoft Studio kann im Jasperreport ultmade JasperReports Ultimate Guide wunderbar nachvollzogen werden.

Daher werden hier nur die Eckpunkte und Besonderheiten in Bezug auf Nuclos erleuterterläutert.

Ablauf

  • Scriptletclass erstellen und als Jar packen
  • Scriptlet in iReport Jaspersoft Studio testen
  • Einen Ordner Extensions anlegen
  • Installer ausführen
  • Parameter setzen im Nuclos setzen

 

  • Scriptlet in Nuclos als Extension einbinden


Scriptlet-Class erstellen

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

Scriptlet in

...

Jaspersoft Studio testen

Das Scriptlet sollte erst in Nuclos eingebunden werden, wenn es sicher funktioniert! Über die Preview im iReport in Jaspersoft Studio kann die zukünftige Verwendung getestet werden. Dafür müssen zunächst die Klassen/ Klasse(n) dem Classpath von iReport Jaspersoft Studio 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 Libraries hinzugefügt werden, auch die jasperreports-37.516.30.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 Je nachdem, 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 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

Info

In Jaspersoft Studio 6.17.0 ist ein Bug, welcher bewirkt, dass Reporte mit Scriptlets nicht korrekt kompilieren. Wenn sie Reporte mit Jaspersoft Studio testen wollen, müssen sie daher entweder ein Version zurück gehen oder prüfen, ob es mittlerweile eine neuere Version ohne dieses Problem gibt.


Scriptlet in Nuclos einbinden

Damit Reporte, welche das Scriptlet verwenden, unter Nuclos funktionieren, müssen die Scriptlets als serverseitige Extensions eingebunden werden. Wie dies genau funktioniert, ist im Kapitel Jasper Extensions in Nuclos beschriebenNachdem 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.