Benutzung von BIRT zur Berichterstellung im ClassiX System
- Berichterstellung in ClassiX
- Bearbeiten von BIRT-Berichten
- Fehlersuche
- Performance-Verbesserung der Berichte
Hinweis
Momentan werden nur die Version 4.6.0 (nur OSGI) und 4.7 aufwärts (nur POJO) unterstützt. Haben Sie eine andere Version installiert, so können Sie diese deinstallieren und anschließend die Version 4.6.0 installieren.
Berichterstellung in ClassiX
Anleitung zur Erstellung eines Berichts aus dem ClassiX System heraus. Enthält einfache Listenberichte und beschreibt wie man zusätzliche Spalten in eine Liste einfügt bzw. Spalten löscht. Außerdem wird beschrieben, wie man einen Bericht völlig frei erstellen kann und wie man einen Bericht zu seinen Favoriten hinzufügt.
Dieses Dokument gibt einen Überblick über Empfehlungen für die Neuerstellung von BIRT-Berichten.
Vorgehen bei Spaltennamenänderungen
Falls sich in ClassiX Zugriffsausdrücke für Spalten ändern oder neue Spalten hinzukommen, die in den BIRT-Bericht mit aufgenommen werden sollen, muss auch der BIRT-Bericht angepasste werden. Dies ist besonders wichtig, wenn sich die Zugriffsausdrücke ändern, da sonst die Spalten des BIRT-Berichtes nicht mehr mit Daten gefüllt werden können. Um zu überprüfen, ob in ClassiX neue Spalten hinzugekommen sind, oder sich der Zugriffspfad geändert hat kann die Funktion "Layout-Vergleich" genutzt werden (siehe auch Toolbar-Abschnitt auf der Report-Modulseite und in der PDF-Dokumentation). Für den Layoutvergleich wird ein neues Layout-File aus der aktuellen ClassiX-Liste in das Verzeichnis der Umgebungsvariable CX_REPORT_DATA erstellt und mit dem bis dahin als aktuell definierten Layout in CX_ROOT_DIR\BIRT verglichen. Je nachdem wie die Umgebungsvariable CX_DIFF_EDITOR gesetzt ist, wird der Vergleich mit dem Windows-internen Diff-Programm (FC) oder mit ExamDiff durchgeführt (oder jedem anderen Vergleichstool, das definiert wird).
Bearbeiten von BIRT-Berichten
Kurzanleitung zur Erstellung eines Berichts mit Gruppierung und Diagrammen.
Alle Informationen zur Benutzung von BIRT und der Berichterstellung im ClassiX System können der PDF Dokumentation entnommen werden. Um den Einstieg zu erleichtern, wurde eine tabellarische und graphische Übersicht erstellt. Die Links verweisen jeweils direkt auf die Überarbeitungsseiten in der PDF Dokumentation:
Tabellarische Übersicht
Thema |
Spezielle Anforderung an Tabellen |
Verlinkung |
Tabellen |
Basiswissen |
|
|
Zusätzliche Tabelle einfügen |
5.2.1 Einfügen einer weiteren Tabelle unterhalb der „normalen“ Tabelle |
|
Merge Cells |
5.2.3 Überschrift in der Tabelle soll über zwei Spalten gehen |
|
Gruppen |
|
|
Visibility-Rule (Aus- und Einblenden von Objekten, Spalten etc.) |
5.2.4 Unterschiedliche Anzeigebedingung |
|
Spaltenbreiten ändern |
|
|
Überschrift von Gruppenwechsel |
6.4 Überschriften der Gruppenwechsel sollen bei einer alphabetischen Liste nur A-Z anzeigen |
|
Sortierung |
|
|
Zusammenfassung: Anzahl der Datensätze |
|
|
Abhängigkeiten von Seitenumbrüchen |
6.10 Seitenumbrüche innerhalb einer Datenreihe vermeiden |
|
Text nicht länger als eine Zeile in einer Zelle |
|
|
Rechnen in Tabellen |
|
|
Änderung falls sich der Name eines Datenelements ändert in ClassiX oder eine neue Spalte hinzugefügt werden soll |
|
Diagramme |
Basiswissen |
|
|
X-Achse als Zeitachse konfigurieren |
6.12 X-Achse in Diagrammen (Charts) als Zeitachse konfigurieren |
|
Diagramm basierend auf mehreren Datenquellen |
6.14 Erstellen eines Diagramms basierend auf mehreren Datenquellen |
Crosstabs (Summationstabellen) |
Basiswissen |
|
|
Bedingtes Anzeigen von Levels in Crosstabs |
6.13 Trick zum Bedingten Zeigen von Levels in Crosstabs (Summationstabellen) |
Data Source |
Basiswissen |
|
|
Mehrere Datenquellen (DataSources) hinzufügen |
|
|
Data Source während der Laufzeit ändern |
|
Data Set |
Basiswissen |
|
|
“Computed Column” in DataSets = Auswertungsspalten |
|
|
Joint Data Set |
|
Texterstellung |
Basiswissen |
|
Grid |
Basiswissen |
|
Bilder |
Basiswissen |
|
Barcode |
Basiswissen |
|
Masterpage |
|
|
|
Überschrift eines Reports und andere Änderungen am Page-Header |
5.1.1 Überschrift des Reports ändern |
|
Größe der Seitenränder des Reports ändern |
|
Report Parameter |
Basiswissen |
|
Styles |
Basiswissen |
5.2.5 Unterschiedliche Darstellungsbedingungen definieren (Highlight-Rule und Styles.) |
Report Scripting |
Basiswissen |
6.8 Beispiel für Report Scripting am Beispiel „Richtiges Hinzufügen der Einheit bei Endsummen“ |
|
JavaScript + Expression Builder |
7. Der Expression Builder: Wichtige Funktionen in JavaScript |
Fehlerbehebung |
Basiswissen |
|
|
CX-Debug-Konsole |
Graphische Übersicht
Performance-Verbesserung von der Berichtsseite aus
Die Performance von BIRT-Berichten wird von unterschiedlichen Seiten aus beeinflusst:
- Performance der BIRT-Engine
- Performance der Daten-Extraktion aus ClassiX
- Performance des Datenzugriffs von BIRT auf die Datenquelle
- Performance des Berichts selbst
Die Performance der BIRT-Engine kann dadurch verbessert werden, dass die Engine nicht bei jeder Reporterstellung neu gestartet wird, sondern einmal am Anfang gestartet wird und anschließend nur noch benutzt wird.
Zum letzten Punkt wurde dieses Dokument erstellt, das eine Übersicht über die Performance unterschiedlicher Objekte im Bericht darstellt.
Fehlersuche
Es gibt verschiedene Gründe, warum ein BIRT-Bericht aus ClassiX heraus nicht aufgerufen werden kann:
- Konfigurationsfehler bei der Installation von Birt
- Berechtigungsprobleme
- Fehler bei der Kommunikation von ClassiX und BIRT
- Fehler in den BIRT Berichten
- Fehler im ClassiX- oder BIRT Code
Im Idealfall erzeugt oder öffnet ClassiX einen BIRT Bericht ohne weitere Benutzereingriffe. Je nach Fehlerfall bekommt ClassiX aber zu wenig Informationen, um eine eindeutige Fehlermeldung anzuzeigen. In diesem Fall muss die Kommunikation zwischen ClassiX und BIRT geprüft, sowie die Fehlermeldung von BIRT bzw. dem aufrufenden Programm analysiert werden. Dafür gibt es zwei Hilfsmittel:
- Analyse des ClassiX-Logfiles (siehe Logging). Konkret werden beim Aufruf von Birt Einträge im Bereich cx.process geschrieben. Vor allem wird der Aufruf sowie die Parameter und der Returncode der gestarteten Anwendung geloggt (ggf. den Logging-Level erhöhen). Bitte prüfen Sie, ob die übergebenen Input-Files existieren. Sie können auch den gesamten Aufruf von einer Konsole aus wiederholen.
- Öffnen der Debug-Konsole. Durch setzen der Umgebungsvariable CX_BIRT_DEBUG_CONSOLE wird beim Aufruf von Birt eine Konsole geöffnet, auf der die Anwendung eventuelle Probleme anzeigt. Die Konsole schließt sich wieder wenn der Aufruf erfolgreich war. In der Ausgabe dieser Konsole sollten Sie auf folgende Punkte achten:
- Erscheinen schon beim Aufruf Fehler? (Programm nicht gefunden, Java nicht korrekt installiert, PATH nicht korrekt gesetzt)
- Findet java bestimmte Klassen nicht? ("Class not found": Classpath für Birt oder ClassiX-Bibliotheken nicht korrekt gesetzt, Achtung: das Verzeichnis %BIRT_HOME%\ReportEngine\plugins darf nicht dem Classpath hinzugefügt werden, da es sonst zu Fehlermeldungen kommt)
- Welche Parameter werden übergeben? Existieren die Dateien oder Parameter?
- Tritt eine Exception auf?
Seit dem Upgrade auf BIRT 3.7.2 können Fehler beim Starten von ClassiX ohne Administratorrechte auftreten. Hierfür sollte die Konfiguration von BIRT ab 3.7.2 beachtet werden.
Falls ein Report generiert wird, aber keine Daten enthält, CLASSPATH Variable kontrollieren (siehe Installation Birt-Runtime). Fehlt der "addons" Ordner im Classpath, wird das Layout des Reports erfolgreich generiert, aber die Tabellen bleiben leer.
Fehler bei der Kommunikation von ClassiX und Birt und Fehler im Birt-Code
Die folgende Tabelle gibt den Fehlercode, Fehlermeldung und mögliche Lösungsstrategien für einen Fehler im Birt-Code oder bei der Parameterübergabe zwischen ClassiX und Birt aus.
Beachten Sie bitte, dass bei jedem Absturz der ReportEngine ein Dump-File erzeugt werden, das möglicherweise hilft die Lösung des Problems zu finden. Dieses wird im "Temp" Verzeichnis (Umgebungsvariable "Temp") gespeichert und hat den Namen "classix-ExecuteReportNummer.dmp".
Code | Fehlermeldung | Lösung |
---|---|---|
1 | Wrong number of Parameters | Wahrscheinlich liegt ein Problem mit den von BIRT benötigten Java-Libraries vor. Das Problem kann also entweder sein, dass das BIRT-HOME falsch gesetzt ist, dass das BirtInterface nicht erreichbar ist oder dass die Java Runtime Engine (JRE) nicht erreichbar ist.
Überprüfen Sie bitte folgendes:
|
2 | invalid XML | Wahrscheinlich ist JAVA nicht (richtig) installiert Zur Verifizierung bzw. falls dies nicht hilft die Debug-Console auf true setzen, durch die man detaillierte Fehlermeldungen bekommt: "SET CX_BIRT_DEBUG_CONSOLE=TRUE" im aufrufenden Batch-file setzen. |
4: | Birt reported error during execution
(Engine Exception) |
Überprüfen Sie bitte folgendes:
|
5 | (Birt Exception) | Überprüfen Sie bitte folgendes:
Schreibrechte im BIRT-Runtime-Verzeichnis fehlen. Geben Sie dem Verzeichnis Schreibrechte oder kopieren Sie es an einem Platz mit Schreibrechten. |
6 | FileNotFoundException | Überprüfen Sie, ob das rptdesign wirklich vorhanden ist und ob im Verzeichnis „C:\Mandantname\Birt“ der Ordner „Mandantname“ vorhanden ist (siehe Fehlercode 99) |
7 | UnsupportedEncodingException | Möglicherweise ist das daten-xml falsch encoded (es sollte utf-8 sein). Schauen Sie nach, ob am Anfang noch Steuerzeichen enthalten sind. Öffnen Sie dazu das xml in Eclipse aus dem Verzeichnis C:\temp. |
8 | IO Exception | |
12 | Der BIRT-Server wurde vom ersten ClassiX-User mit seinen User-Rechten gestartet. Wenn nun ein anderer User ebenfalls ein BIRT-Bericht erstellen möcht, wird erkannt, dass bereits ein BIRT-Server läuft und ihm wird die Aufgabe geschickt. Der BIRT-Server hat in diesem Fall nicht die Rechte um auf das tempoärer Verzeichnis des User zuzugreifen.
Abhilfe kann das Setzen dieser Variablen schaffen: SET CX_PREVENT_BIRT_SERVER=TRUE Diese Variable verhindert das automatische Starten des BIRT-Servers, so dass jeder User seine eigene Instant von BIRT aufruft. |
|
99 | Exception
(z.B. bei Null-Pointer-Exception)
|
Sonstige Fehler; Kontrollieren sie folgendes:
|
100 | Unknown error java.lang.OutOfMemoryError: Java heap space |
Umgebungsvariablen in der aufrufenden Batchdatei setzen: SET _JAVA_OPTIONS=-Xms512m -Xmx1024m |
Das System kann den angegebenen Pfad nicht finden | Es muss in dem Verzeichnis „C:\Mandantname\Birt“ der Ordner „Mandantname“ vorhanden sein, da der Report vom Report-Designer in diesem Verzeichnis gespeichert wird. Ist der Ordner nicht vorhanden, so kann der Bericht nicht korrekt erstellt werden. Die Fehlermeldung lautet dann in der Debug-Console: „das System kann den angegebenen Pfad nicht finden“ |
|
Wertangabe in Summenzeile ist verkehrt
232,479,000,000€. statt 2.324,79 € oder Beschreibung der Y-Achse des Sequential-Graphen bestehlt aus mehreren schwarzen Spalten (Schriftzeichen, die übereinander gelagert sind, so dass schwarze Spalten entstehen) |
Dieses Verhalten trat in einer englischensprachigen Betriebsystemumgebung mit deutschen ClassiX Locale (Standort) auf. Es muss im Runtime-Ordner von BIRT (%BIRT_HOME%\ReportEngine\configuration\) die config.ini um folgenden Eintrag erweitern werden: osgi.nl=de_DE Dies setzt das Locale hart auf Deutsch, wodurch die Summenberechnung wieder korrekt erfolgt bzw. die Spalten Beschreibung des Sequential-Graphens wieder richtig dargestellt wird. |
|
Siehe Lösung für Fehler 5: Vollzugriff auf ReportEngine\configuration Dieser Meldung kann auftreten, wenn GESTIN im Programme-Ordner installiert wurde. |
||
Es wird im REPORT_DATA ein 0 KB großes PDF erzeugt. (Leeres PDF, welches ein PDF-Reader auch nicht öffnen kann) Wird Manchmal auch als "Interner Fehler" mit Errorcode -1 ausgegeben. |
|
Fehler in den BIRT Berichten
Fehler in den Birt-Reports können sich zu unterschiedlichen Zeitpunkten bemerkbar machen. Am besten ist, wenn die Fehler schon während der Erstellung des Reports erkannt werden (beispielsweise bei der Benutzung des Preview-Tabs, zur Erläuterung siehe Bearbeiten von Birt-Reports). Folgende Fehler sind bei der Überarbeitung von Reports aufgetreten und ihre Lösung dokumentiert (Für die genauere Fehlererläuterung siehe dieses Dokument).
Oftmals wird ein leeres PDF angezeigt, falls im Birt-Report ein Fehler vorhanden ist. Um dann genauer die Ursache zu finden, sollte der Report in BIRT-Eclipse geöffnet werden (von ClassiX aus) und dann über die Preview (Reiter) getestet werden. Dort erscheint meist eine genauere Fehlermeldung im ähnlichen Stil wie in den Beispielen in der folgenden Tabelle.
Allgemeines Vorgehen bei der Fehleruntersuchung
- Wird eine Fehlermeldung im PDF ausgegeben? Wird ein leeres PDF gedruckt?
- Detailliertere Fehlermeldungen erhält man in jedem Fall im Preview-Reiter in BIRT-Eclipse (zur Erläuterung siehe Bearbeiten von Birt-Reports).
- Überprüfen:
- Kann eine Vorschau erstellt werden, oder erscheint direkt eine Fehlermeldung und ein Java-Stack-Trace? Ist möglicherweise ein Datentyp falsch gesetzt? Beispielsweise: Es soll von einem String, statt einem Float überprüft werden, ob ein Wert kleiner oder größer ist.
- Es wird eine Vorschau mit roter Fehlermeldung angezeigt. Wird in der Fehlermeldung ein bestimmtes Berichts-Objekt genannt
- ?
- table:
- Wird eine bestimmte Spalte angezeigt? Beispielsweise "Column Binding „delivered.mlDescription“": Überprüfung im Property-Editor für die Tabelle, ob das Binding richtig gesetzt ist / noch vorhanden ist etc.
- Fehler mit org.eclipse.datatools.connectivity.oda.OdaException: Tabelle kann möglicherweise nicht auf die Data-Source zugreifen. Pfade und Umgebungsvariablen überprüfen
- Wird eine bestimmte Expression angezeigt? Nach dieser Expression im XML-Code des Reprots suchen, um den genauen Ort des Fehleraufrufs festzustellen, dabei wichtig: Jedes Report-Objekt hat eine Nummer, durch die es eindeutig identifiziert werden kann.
- Nummer eines Objektes: Wird auf ein Objekt mit einer bestimmten Nummer verwiesen? Jedes Reportobjekt hat eine eindeutige Nummer, durch die es identifiziert werden kann
- table:
- Wird in der Preview keine Fehlermeldung angezeigt? Hat in der Outline (meist unten links) ein Report-Objekt ein Kreuz? Dies deutet auf ein fehlerhaftes Verhalten dieses Report-Objektes hin.
- Lässt sich ein Fehler nicht direkt einem Report-Objekt zuordnen oder kann die Fehlermeldung nicht gedeutet werde. Am besten die Report-Objekte einzelnd entfernen (Bilder, Data-Bindings, Grids, Tabelle) und jeweils überprüfen, ob der Fehler noch auftritt. Dadurch können bestimmte Objekte identifiziert werden
-
Fehlermeldung Lösung Lösungsweg Table table:
Column Binding „delivered.mlDescription“ has referred to a data set column „delivered.mlDescritpion“ which does not exist.Bindings einer Tabelle sind nicht aktuell Wurde beispielsweise ClassiX-intern die Bezeichnung für eine Variable geändert (statt delivered.mlDescription auf delivered.new.mlDescription), kann Birt diese Variable in der Data-Source nicht finden.
Somit muss das Data-Set bearbeitet und die neue Spalte hinzugefügt werden. Anschließend müssen allerdings zusätzlich die ggf. vorhandenen Referenzen in der Tabelle geändert werden. Es ist beispielsweise möglich, dass ein Column-Binding eine Referenz auf delivered.mlDescription hatte, oder dass ein Column-Binding selbst delivered.mlDescription heißt. Um dies zu überprüfen muss man auf die Tabelle klicken und im Property-Tab die Bindings kontrollieren. Geschieht das nicht tritt die dargestellte Fehlermeldung auf.Table table:
An exception occured during processing. Please see the following message for details: Cannot open the connection for the driver: org.eclipse.datatools.enablement.oda.xmlEine Data-Source ist nicht vorhanden Diese Fehlermeldung tritt auf, wenn die im Data-Source-Tab angegebene Data-Source nicht vorhanden ist. Dieser Fehler sollte in der neuen Version (erkennbar daran, dass die xml-Dateien in „C:\temp“ gespeichert werden) nicht auftreten, wenn der Report von ClassiX aus aufgerufen wird, da automatisch eine Data-Source generiert wird.
Um den Fehler zu beheben muss man die Data-Source im Data-Source-Tab kontrollieren. Man sollte überprüfen ob diese Datei vorhanden ist und ggf. sonst eine andere angeben. Ob die neue Data-Source funktioniert kann über „Text Connection“ getestet werden.A BIRT exception occurred. See next exception for more information. Invalid javascript expression pression>
Fehler in der Javascript expression Möglicherweise ist nur die Klammersetzung in diesem Fall falsch. Sollte in der Fehlermeldung nicht direkt das fehlerhafte Script angezeigt werden. Ist es am Besten nach einem Begriff aus der Fehlermeldung (beispielsweise "waehrung2") im xml source code zu suchen (im Reiter "XML Source"). Table table:
- A BIRT exception occurred. See next exception for more information.
Can not convert the value of to Binary type. (Element ID:374)Fehler im Typ eines Bindings in der Tabelle (hier bei einem Bild) Wahrscheinlich hat ein Element in der Tabelle einen falschen Typen und kann deshalb von BIRT nicht verwendet werden. Um das zu Überprüfen öffnet man zunächst den Binding Tab der Tabelle (Tabelle Markieren > Properties Editor> Binding). In der Spalte Data Type steht möglicherweise "Blob". In diesem Fall hatte ein Element, das zum Anzeigen eines Bildes verwendet den Typen "Blob". Dieser musste in "String" geändert werden.Table table:
+ Nächste Datenzeile kann nicht abgerufen werden.
org.eclipse.datatools.connectivity.oda.OdaException: The xml source file cannot be found or the URL is malformed. (Element ID:376)BIRT kann die Datenquelle nicht erreichen Wahrscheinlich wurde die Umgebungsvariable "CX_REPORT_DATA" nicht als Umgebungsvariable in Windows gesetzt, oder der Wert der Windows-Umgebungsvariable "CX_REPORT_DATA" entspricht nicht dem Wert Umgebungsvariable in der aufrufenden Batchdatei von ClassiX. Da sowohl Eclipse als auch ClassiX auf diese Umgebungsvariable zugreift, muss die Umgebungsvaribale als Windows-Umgebungsvariable definiert werden. ClassCastException: "Fehler beim Ausführen des Berichts" Datentyp des Elements falsch In der Preview wird der Report nicht angezeigt (auch nicht leer), sondern ein Fenster, in dem diese Fehlermeldung und Java-Stack-Trace angezeigt wird. Wird bei einem Datenelement abgefragt ob es "<0" oder ">0" ist so muss es als Float und nicht als String definiert werden. Dies muss im DataSet entsprechend angepasst werden.
Hinweis
Momentan werden nur die Version 4.6.0 (nur OSGI) und 4.7 aufwärts (nur POJO) unterstützt. Haben Sie eine andere Version installiert, so können Sie diese deinstallieren und anschließend die Version 4.6.0 installieren.
BIRT von der Kommandozeile aufrufen
Folgende Parameter müssen bekannt sein:
Pfad zur birt_interface.jar
BIRT_HOME (Prüfung in der Kommandozeile: set birt_home)
XML-Datei
BIRT-Design
Zieldateiname
java -classpath "Pfad_zur_Birt_interface.jar/birt-interface.jar;%BIRT_HOME%/ReportEngine/lib/*" org.instantview.report.exec.ExecuteReportClient C:\Temp\invanaly-Sequenzialtest.xml Y:\classix\Evaluate\BIRT\invanaly-Sequenzialtest.rptdesign C:\Temp\Sequentialtest.pdf