BIRT (Business Intelligence and Reporting Tools) ist ein OpenSource Projekt, das von der Firma Actuate Corporation vorgeschlagen wurde und über die Eclipse Foundation vorangetrieben wird. Es ist mittlerweile ein Top-Level-Softwareprojekt innerhalb der Eclipse Foundation.
BIRT besteht aus zwei Hauptkomponenten: Einem graphischen Berichte-Editor innerhalb der Eclipse IDE, um BIRT-Berichte zu designen, und einer Laufzeitkomponente für die Erzeugung von Berichten, die in jeder Java-Umgebung eingesetzt werden kann.
BIRT wird dazu eingesetzt, einen großen Bereich des Berichtwesens in typischen Applikationen in Unternehmen abzudecken.
Mit BIRT kann der Report im Eclipse Report Designer generiert werden. Es ist aber auch möglich, mithilfe des Web Based Report Designer einen Report zu erstellen. Die dritte Möglichkeit ist wohl die vielseitigste und interessanteste: der Custom Report Designer. Dazu werden dem Entwickler die einzelnen Klassen der Engine, beziehungsweise diese als Ganzes (API), zur Verfügung gestellt und somit kann er einen eigenen Report Designer generieren.
Einzelne Komponenten von BIRT
Report Design Engine
Die Report Design Engine generiert aus den Eingabedaten eine XML-Datei, welche das Design, die Datenherkunft sowie die verschiedenen Parameter des Reports beschreibt.
Charting Engine
Die Charting Engine wird von der Report Engine dann aufgerufen, wenn ein Diagramm (engl. Chart) erstellt werden muss. Daten werden von der aufrufenden Report Engine bereitgestellt.
Report Engine
Die Report Engine ist in zwei Bereiche mit unterschiedlichen Services untergliedert: Der erste Bereich, die sogenannten Generation Services, kümmern sich um die Beschaffung der Daten. Er gibt eine Art Rohdokument an die Presentation Services weiter, welche die Aufbereitung in ein Ausgabeformat (zum Beispiel PDF o.ä.) übernehmen.
Typische BIRT-Anwendung
In einer typischen Anwendung wird BIRT zur Generierung von Tabellen-basierten Reports, welche in einem leicht austauschbaren Format (PDF) erstellt werden, verwendet. Dazu wird BIRT aus einer JAVA-Anwendung aufgerufen und es werden POJOs bereitgestellt, um die Daten in der gewünschten Form präsentieren zu können. Als Datenquelle ist POJOs (Plain Old Java Object) gewählt worden, da diese eine größtmögliche Flexibilität ermöglichen. Hier gibt es einige Tricks und Kniffe zu beachten.
Für den Aufruf der verschiedenen Komponenten von BIRT, welche zu konfigurieren sind, findet man sehr viele Beispiele im Internet. Hier nur ein paar Auszüge:
config = new EngineConfig();
config.setBIRTHome(file.getAbsolutePath());
⋮
Platform.startup(config);
logger.debug(„Platform created, starting factory.“;
IreportEngineFactory factory = (IReportEngineFactory) Platform
.createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);
engine = factory.createReportEngine(config);
⋮
design = engine.openReportDesign(name_rtpdesign_File);
⋮
IRunAndRenderTask task = engine.createRunAndRenderTask(design);
⋮
PDFRenderOption options = new PDFRenderOption();
⋮
task.setRenderOption(options);
⋮
try {
task.run();
} catch (EngineException e) {
throw (new, e);
}
engine.destroy();
task.close();
Dieser Code (und noch ein paar andere Zeilen) wird verwendet, um einen BIRT zu konfigurieren und einen Report zu produzieren.
Einer der wichtigsten Tricks ist, dass beim Beenden des (eigenen) Programms unmittelbar ein Plattform.shutdown() aufgerufen wird. Nach diesem Aufruf kann jedoch kein Bericht mehr erstellt werden. Deshalb soll man sie auch z.B. beim Schließen des Fensters aufrufen.
Im Folgenden werden die Klassen Job4BirtFactory, Job4Birt und History4Birt verwendet. Die Factory Klasse ist hierbei die Klasse, welche über eine Methode (getJob()) die beiden weiteren Klassen mit Daten füllt. Die beiden anderen Klassen fungieren hier als „Datenträger“ und bestehen größtenteils aus Gettern, Settern und Variablen.
Die Schnittstelle in BIRT wird über eine „scripted Datasource“ erstellt.
Hier ist das Script zu sehen, welches die Job4BirtFactory (aus dem Report) aufruft und über diesen Weg den Job (für welchen das Script die Job ID bereithält) erhält.
Nun können von dieser DataSource DataSets erstellt werden, welche wie Tabellen funktionieren. Achtung: 2 Scripts müssen erstellt werden!
Eines zum Öffnen der Datenquelle (open) -
das andere Script zur detaillierten Auswertung der Daten eines POJO (hier exemplarisch an der History dargestellt). Das Fetch-Script kann ähnlich einer While-Schleife verwendet werden.