Sie zeigen eine alte Version dieser Seite an. Zeigen Sie die aktuelle Version an.

Unterschiede anzeigen Seitenhistorie anzeigen

« Vorherige Version anzeigen Version 19 Nächste Version anzeigen »

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
  • Keysignen aller benötigten Jar's
  • 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())

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.

Keysignen aller benötigten Jar's

Nuclos überprüft, ob alle in dem Extensions-Ordner enthaltenen Jar's einer selben Quelle entstammen. Dies ist eine Sicherheitsroutine die in den Kernfunktionalitäten enthalten ist. Daraus ergibt sich, dass die Scriptlet.jar und die Abhängigkeiten den ein und dem selben Key enthalten müssen.

Falls noch keine Extensions im Nuclos vorhanden sind und noch kein Key erstellt wurde, öffnet man ein Terminal und führt folgende Zeile aus:
/<Java-Installation-JDK>/bin/keytool -genkeypair -dname "cn=Firstname Lastname, ou=Unit, o=Novabit, c=DE" -alias scriptletkey -keypass nuclos -keystore /tmp/keystore -storepass nuclos -validity 360 (fett gedruckt = eigene Werte)

danach kann jede Jar mit diesem Key gesigned werden:
/<Java-Installation-JDK>/bin/jarsigner -keystore /tmp/keystore  Scriptlet.jar scriptletkey
/<Java-Installation-JDK>/bin/jarsigner -keystore /tmp/keystore  Abhängikeiten.jar scriptletkey

Installer ausführen

Nachdem die Extensions-Struktur angelegt und alle Jar's den selben Key besitzen, 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.

Parameter setzen im Nuclos setzen

Damit die im Nuclos enthaltene Jasperreports-3.5.3 - Intallation den Ort der auszuführenden Scriptlets findet, müssen der Pfad und die Klassen bekannt gemacht werden. Das geschieht über die Definition von Parametern.
Unter Administration -> Parameter wird eine neue Maske geöffnet.

Als Wert wird die Scriptletclass angegeben, sowie, Leerzeichen separiert, alle Klassen die aus den Abhängigkeiten verwendet werden

  1. nuclos.jasper.reports.compile.classpath.jars.byclasses
  2. Jars to add to the Jasperreports compile classpath
  3. comm.myself.Scriptletclass ....... ........ ........ ......

 

 

  • Keine Stichwörter