Projekt

Allgemein

Profil

Ablauf der Reporterzeugung » Historie » Version 4

Steffen Christgau, 10.04.2022 15:10

1 1 Steffen Christgau
h1. Ablauf der Reporterzeugung
2
3
h2. Prinzipieller Ablauf
4
5 2 Steffen Christgau
Reports werden grundsätzlich aus den Ergebnissen einer oder mehrerer Datenbankabfragen generiert. Die Ergebnisse werden in einer XML-Datei gespeichert. Aus dieser Rohdatendatei können mit Hilfe von _Backends_ verschiedene Ausgaben generiert werden. Zur Zeit sind dies bspw. PDF-Dateien, CSV-Dateien oder die direkte Ausgabe an den Drucker. Nicht für alle Reports werden alle Ausgabeformate unterstützt. 
6 1 Steffen Christgau
7 4 Steffen Christgau
Die Einstellungen für die Reporterzeugung und einzelnen Reports erfolgt über eine Vielzahl von Dateien, die sich unter dem Verzeichnis @Reporting@ befinden.
8 1 Steffen Christgau
9 4 Steffen Christgau
h2. Definition von Reports
10 1 Steffen Christgau
11 4 Steffen Christgau
Die Definition der Reports erfolgt über die Konfigurationsdatei unterhalb des @Reporting@-Verzeichnis. In der XML-Datei @config.xml@ wird für einen Report ein @Report@-Element angelegt werden. Hier sind die Attribute @Code@ und @Scope@ verpflichtend, wobei ersterer eindeutig für einen bestimmten Report sein muss. Das @Scope@-Attribut gibt den Gültigkeitsbereich des Reports an. Für einen Report ist weiterhin ein @Title@-Element verpflichtend. Unter dem Element @Queries@ werden schließlich die Datenbankabfragen angegeben, die für den Report ausgeführt werden sollen. Pro Abfrage ist ein @Query@-Element anzugeben. Dessen Wert referenziert eine SQL-Datei im Verzeichnis @Reporting\Queries@. Die Dateierweiterung (.sql) entfällt hierbei. Das Attribut @TableName@ gibt den Namen des Eltern-Elements für alle pro Datensatz der Abfrage erzeugten Elemente im Rohdaten-XML-Dokument an.
12
13
Zusätzlich zu den Datenbankabfragen wird automatisch ein Datensatz @ReportInfo@ in das Rohdaten-XML-Dokument eingefügt, der Informationen über den erzeugten Report enthält.
14
15
In den Query-Dateien können Parameter aus dem Gültigkeitsbereich des zu erstellenden Reports verwendet werden. Diese müssen in @%@-Zeichen eingeschlossen werden. Die folgenden Parameter stehen zur Verfügung:
16
* event - ID des Events des erzeugten Reports
17
* day - Tag (als Datumsstring) des Laufs
18
* race - ID des gewählten Rennens
19
* round - Runde des ausgewählten Laufs (Integer)
20
* comp - ID Lauf des gewählten Laufs
21
22
Die über die Queries erzeugten Rohdaten werden in XML-Dateien im Verzeichnis @Reports\RAW\XML@ abgespeichert. Die sich daran anschließende XSLT-Transformation verwendet die Stylesheet-Dateien aus dem Order @Reporting\XSL@ und dem jeweiligen Backend. Der Name des Stylesheets ergibt sich aus dem @Code-Attribut eines Reports. Das Stylesheet kann auch über das @Name@-Attribut des @Stylesheet@-Element unterhalb des @Report@-Elements in der Konfigurationsdatei angegeben werden. Damit können Stylesheets mehrfach genutzt werden. Über Kind-Elemente mit dem Namen @Param@ können Parameter der XSL-Transformation angegeben werden, um das verwendete Stylesheet an die Bedürfnisse des Reports anpassen zu können.
23 1 Steffen Christgau
24
h2. Umwandlung in Ausgabeformate
25
26
Die Umwandlung in andere Formate geschieht grundsätzlich mit XML-Stylesheets (XSL-Dateien). Diese Dateien befinden sich im Verzeichnis @XSL@ und Unterverzeichnissen, die nach dem jeweiligen _Backend_ benannt sind (@FP@ ist das Backend für den Direktdruck, @INC@ enthält allgemeine, wiederverwendbare Dateien). Soll ein Backend einen Report unterstützen, muss eine XSL-Datei im Verzeichnis des Backends mit dem Kürzel des Reports existieren (bspw. M_ME.xsl für das Meldeergebnis). Die XSL-Datei wird schließlich auf die XML-Datei, die die Rohdaten enthält, angewendet ("XSL Transformation":http://de.wikipedia.org/wiki/XSL_Transformation).
27
28
Zur Generierung von PDFs wird durch die XSL-Transformation eine XSL-FO-Datei erzeugt. Diese wird anschließend durch "Apache FOP":http://xmlgraphics.apache.org/fop/ in eine PDF-Datei umgewandelt. Da Apache FOP eine Java-Anwendung ist, ist für das Erzeugen von PDFs eine [[Aquarius_installieren#Systemvoraussetzungen|Java-Installation notwendig]].
29
30
Im Falle von CSV erfolgt nach der XSL-Transformation keine weitere Umwandlung. 
31
32
Für die direkte Druckausgabe wird eine Seitenbeschreibung generiert und anschließend an den Drucker gesendet. 
33 2 Steffen Christgau
34
h2. Zusätzliche Backends
35
36
Um einen neuen Dateityp unterstützen zu können, das auf einer Umwandlung von XML-Daten in ein anderes Dateiformat basiert, muss ein zusätzliches Backend angelegt werden. Hierfür sind Schritte notwendig:
37
38
1. Unterhalb des Verzeichnis @Reporting\XSL@ muss ein neuer Ordner mit dem Namen des Backends angelegt werden. Üblicherweise entspricht dieser Name der Dateinamenserweiterung des erzeugten Dateien in Großbuchstaben. Für ein Backend, das Text-Dateien erzeugt, wäre also ein Verzeichnis @Reporting\XSL\TXT@ anzulegen
39
40
2. Im Verzeichnis aus Schritt 1 muss eine Datei @config.ini@ angelegt werden. Diese enthält bspw. folgenden Inhalt <pre>
41
[ReportingXslt]
42
MimeType=text/plain
43
Extension=csv
44
Enabled=True
45
</pre>Hierbei entspricht der @MimeType@ einem eindeutigen Bezeichner des Ausgabetyps, unabhängig von der Dateierweiterung, die über den Schlüssel @Extension@ definiert wird. Über den Schlüssel @Enabled@ können Backends ein- und ausgeschaltet werden.
46 1 Steffen Christgau
47 3 Steffen Christgau
Die Backends können auch in Verzeichnissen unterhalb des @Plugins@-Verzeichnis angelegt werden. Für das beispielhafte TXT-Backend könnte dies unter @Plugins\MeinPlugin\Reporting\XSL\TXT@ erfolgen.