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.
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.
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.
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.
Weitere Informationen und Beispiele finden Sie im EGL-Programmiererhandbuch.