EGL-JasperReport-Handler

Mithilfe der Standardfunktionen der quelloffenen JasperReports-Berichtsbibliothek können Sie bereits recht komplexe Ausgaben erstellen. Wenn Sie ausgefeiltere Berichte benötigen, können Sie einen EGL-JasperReport-Handler erstellen.

Für die JasperReports-Engine ist der Berichtshandler als 'scriptletClass' sichtbar. Für Personen, die mit Java™ nicht vertraut sind, bedeutet dies, dass die JasperReports-Engine Methoden (die Funktionen ähnlich sind) des JasperReport-Handlers aufrufen kann.

In der folgenden Liste sind häufige Verwendungszwecke für einen JasperReport-Handler aufgeführt:

Eine vollständige Liste der Ereignisse, auf die der JasperReport-Handler antworten kann, finden Sie im Abschnitt "Vordefinierte EGL-JasperReport-Handler-Funktionen". Informationen zu den generierten Ausgaben aus dem JasperReport-Handler finden Sie im EGL-Generierungshandbuch.

Auf Ereignisse antworten

EGL besitzt eine Reihe vordefinierter Funktionsnamen, die Ereignissen entsprechen, die auftreten können, wenn JasperReports einen Bericht füllt. Solche Ereignisse sind zum Beispiel der Eintritt in eine Seite oder das Verlassen einer Seite, das Beginnen oder Beenden einer Zeile usw. Wenn eines dieser Ereignisse auftritt, prüft die JasperReports-Engine, ob der Berichtshandler eine Funktion enthält, die diesem Ereignis entspricht. Ist dies der Fall, ruft die JasperReports-Engine diese Funktion automatisch auf.

Eines der Ereignisse, die von EGL erkannt werden, ist die Initialisierung einer benutzerdefinierten Gruppe. Sie können den Tag <group> in der XML-Designquellendatei verwenden, um einen Ausdruck anzugeben, der eine Gruppe definiert. Sie könnten zum Beispiel Kunden mit den Nummern von 2000 bis 2999 zusammen gruppieren. Sie können Zwischensummen für die Gruppe mithilfe der Standardtags der XML-Designquelle drucken oder Sie können komplexere Operationen mithilfe des JasperReport-Handlers ausführen.

Explizit aufgerufene Funktionen erstellen

Sie können keine komplexe (mehrzeilige) Java-Codierung in der JasperReports-XML-Quellendatei selbst ausführen. Sie können jedoch EGL-Code im JasperReport-Handler schreiben, um Funktionen zu erstellen, auf die die JasperReports-Engine während der Ausführung zugreifen kann. Sie müssen diese Funktionen nicht an ein bestimmtes Ereignis binden oder in einer der vordefinierten ereignisbezogenen Funktionen aufrufen. Sie könnten zum Beispiel eine Funktion erstellen, die eine SQL-Variable vom Typ DATE sucht und das Datum in einer formatierten Zeichenfolge zurückgibt. Sie können diese Funktion direkt in der XML-Quelle aufrufen, die die Details für eine Transaktion druckt.

Die Operation funktioniert, weil EGL eine Scriptletklasse ('scriptletClass') aus der Quellendatei des Berichtshandlers generiert. Die Scriptletklasse ist eine Java-Klasse, auf die die JasperReports-Engine zugreifen kann, und während des Berichtsfüllprozesses kann die Engine die Methoden dieser Klasse aufrufen. Diese Methoden sind die Funktionen, die Sie erstellt haben.

Der JasperReport-Handler hat uneingeschränkten Zugriff auf weitere EGL-Ressourcen, wie Berichtsabschnitte, Systemfunktionen und Bibliotheken.

Daten speichern und abrufen

Führen Sie die folgenden Aktionen aus, um Daten an einen Unterbericht zu übergeben:
  1. Verwenden Sie die integrierte Handlerfunktion addReportData(), um Daten zur späteren Verwendung durch einen Unterbericht zu speichern.
  2. Definieren Sie innerhalb des Tags <subreport> der Designdatei einen Tag <dataSourceExpression>. Rufen Sie im Tag <dataSourceExpression> die integrierte Berichtshandlerfunktion getDataSource() auf. Diese Funktion gibt die Daten in einem internen Format zurück. Sie müssen den Rückgabewert in den Typ 'JRDataSource' umsetzen, damit die Daten im Unterbericht verwendet werden können.
Der Unterbericht kann anschließend die abgerufenen Daten nutzen, um Details für jedes Zeilenelement bereitzustellen.

Weitere Informationen und Beispiele finden Sie im EGL-Programmiererhandbuch.


Feedback