Reporting

Bei vielen Vorgängen spielt die Ausgabe von Ergebnissen oder Teilergebnissen in Form von Dokumenten eine große Rolle.

Wir haben dafür eine "TemplateEngine" integriert, die für verschiedene Ausgabeformate verwendet werden kann.

Über

Im Kern basiert diese auf Scriban, einer großartigen Bibliothek, die sich an der viel verwendeten Liquid Syntax orientiert.

Der Vorgang ist dabei mehrstufig. Mit der Template Engine wird im Wesentlichen eine Textvorlage in ein anderes Textformat überführt. Das Zielformat kann bspw. HTML oder Markdown sein.

Dies entspricht dem aus cardo.Button bekannten Erstellen einer XLST Transformation von XML zu (X)HTML

Bei der Prozessierung wird dabei ein Datenobjekt übergeben. Dies kann bspw. ein Puzzle-Dokument oder ein weiteres beliebiges Objekt sein. Die genaue Spezifikation des Inhaltsobjektes ist dabei von Anwendung zu Anwendung unterschiedlich. Wir haben das Root-Objekt mit "BO" benannt, das steht für Geschäftsobjekt (Business-Object) und kann beliebige Eingenschaften enthalten

Ein Folgeprozess kann aus dem aus der Vorlage generieren Text (typischerweise HTML) dann PDF oder ggf. auch ein WordDokument erzeugen. Für Word-Dokumente ist eine erweiterte Ausgabensteuerung über Html-Tags möglich. Diese weiteren Transformationen sind ebenfalls in Pib Integriert, aber nicht Gegenstand der hier vorliegenden Übersicht.

Die folgende Beschreibung stellt die Erweiterungsmethoden dar, die vor allem im Zusammenhang mit dynamischem Datenabruf und der Kartenbildgenerierung zu sehen sind.

Beispiele

Einige Beispiele zur gängigen Syntax und vor allem unseren Erweiterungsmethoden, sind in den nachfolgenden Abschnitten genannt.

Diese können dann genutzt werden, um beispielsweise einen Kartenausschnitt mit Ebeneninformationen im Dokument darzustellen.

Die grundlegende Syntax ist auf der Scriban Homepage zu finden.

Codeblöcke werden mit {{ eingeleitet und mit }} beendet. Ein Zeilenkommentar wird mit eine # eingeleitet.

Generell werden die Methoden mit dem Namen aufgerufen, gefolgt von den Argumenten in folgender Form:

  • benannte Argumente: Methode Arg1:wert1 Arg2:wert2

  • oder über die Position: Methode wert1 wert2

  • oder gemischt: Methode wert1 Arg2:wert2

    Nach einem benanntem Argument können nur noch weiter benannte Argumente folgen.

Wir stellen einige Erweiterungsfunktionen zur Verfügung, die im folgenden aufgelistet werden.

Standard (ohne Prefix)

ToLocalDateTime

Konvertiert ein DateTime Objekt in eine lokale Zeitangabe.

Entspricht die Eigenschaft DateTime.Kind dem Wert DateTime.Kind.Unspecified, wird angenommen dass es sich dabei schon um eine lokale Zeitangabe handelt und keine Konvertierung durchgeführt (was bei der .Net Methode DateTime.ToLocalTime der Fall wäre!).

Ein Null-Objekt wird ebenso wieder zurückgegeben.

Bsp.:

{{ BO.CategoryClassData.DATUM | ToLocalDateTime | date.to_string '%d.%m.%Y' }}

GetEnumDescription

Gibt den Namen oder wenn der Enum mit System.ComponentModel.DescriptionAttribute versehen ist diesen zurück.

Zusammensetzte Enumerationswert (Flags) werden korrekt behandelt und mit Trennzeichen (Standard ist ", ") ausgegeben.

GetEnumDescription BO.EnumWert

GetEnumDescription BO.EnumWert lastSeparator:" und "

FormatByteSize

Gibt eine Zahl als Byte-Größenangabe aus (z.B. "2,5 MByte").

FormatByteSize 1024

Drittes

Hier noch ein Beispiel, welches in Kombination mit mermaid erstellt wurde

sequenceDiagram participant Alice participant Bob Alice->>John: Hello John, how are you? loop Healthcheck John->>John: Fight against hypochondria end Note right of John: Rational thoughts <br/>prevail! John-->>Alice: Great! John->>Bob: How about you? Bob-->>John: Jolly good!

Zuletzt geändert: 30.04.2025 13:42:06 (erstmals erstellt 26.05.2025) // Alias: ""