Skip to main content

xSuite Interface Windows Prism 5.x – Online-Hilfe

Erstellung benutzerdefinierter Programmkomponenten

Um spezielle Funktionalitäten zu implementieren, die von xSuite Interface standardmäßig nicht abgedeckt werden, kann der Benutzer für bestimmte Komponenten eigenen Programmcode einbinden.

Das Einbinden von eigenem Programmcode ist für die folgenden Schnittstellenmodule und Verarbeitungsmodule möglich:

  • Eingabesystem

  • Eingabeformat

  • Indexdatenleser

  • Ausgabeformat

  • Ausgabesystem

  • alle Arten von Makrofunktionen

Die benutzerdefinierten Komponenten müssen in Form einer .NET-Klassenbibliothek bereitgestellt werden, dessen Versionsstand mit dem Hauptprogramm kompatibel ist. Aktuell ist das die Version .NET 8.0.

Hinweis

Im Unterordner Examples\CustomModules der Programminstallation befindet sich ein rudimentäres .NET-Beispielprojekt, das für jede Art von eigenerstelltem Modul und eigener Makrofunktion eine Klasse enthält, um beispielhaft die grundsätzliche Arbeitsweise zu veranschaulichen. Dies sind keine fachlich sinnvollen Anwendungsfälle. Um die Beispiele einfach zu halten, wird zudem auf eine Gültigkeitsprüfung der Eingabedaten und auf eine Fehlerbehandlung verzichtet.

Im Programmverzeichnis von xSuite Interface ist die Datei CustomModules.dll verfügbar. Diese Datei muss als Abhängigkeitskomponente in die eigene Klassenbibliothek eingebunden werden. In dem Namensraum XSuite.Interface.CustomModules.Models sind die Klassendefinitionen für alle speziellen Datentypen verfügbar, die in den Modulen und Makrofunktionen zum Einsatz kommen, d.h. z. B. für Stapel, Dokumente und Dateianlagen. Dies sind keine Original-Datenmodelle, mit denen das Programm intern arbeitet, sondern stark vereinfachte Varianten mit Eigenschaften, die speziell für den Datenaustausch mit den benutzerdefinierten Komponenten vorgesehen sind.

Eigenschaft

Beschreibung

string ExternalId

externe ID, die den Stapel im Eingabesystem eindeutig identifiziert

string Name

Anzeigename des Stapels in xSuite Interface

IList<Document> Documents

alle Dokumente, die im Stapel enthalten sind (in aufsteigender Reihenfolge)

IList<string> BackupFiles

IList<string> BackupFolders

vollständige Pfade aller Eingabedateien oder Eingabeordner, wenn das Eingabesystem dateisystembasiert ist

Diese Werte können beim Einlesen eines Stapels in einem eigenen Eingabesystem gesetzt werden, wenn die Eingabedaten durch den programminternen Backup-Service gesichert werden sollen. Es können entweder Einzeldateien oder ganze Ordner angegeben werden. Die Inhalte dieser Dateien oder Ordner werden in die Sicherung einbezogen.

Eigenschaft

Beschreibung

string ExternalId

externe ID, die das Dokument im Eingabesystem eindeutig identifiziert

string Name

Anzeigename des Dokuments in xSuite Interface

IList<Attachment> Attachments

alle Dateianlagen, die im Dokument enthalten sind

IList<Field> Fields

alle Felder, die im Dokument enthalten sind

IList<string> BackupFiles

IList<string> BackupFolders

vollständige Pfade aller Eingabedateien oder Eingabeordner (analog zu den gleichnamigen Eigenschaften in der Stapelklasse)

Diese Werte können entweder auf Ebene des Stapels oder der einzelnen Dokumente gesetzt werden.

IDictionary<string, string> ExternalKeys

IDictionary<string, string> MetaData

Name-/Wert-Paare von externen Schlüsselwerten und Metadaten des Dokuments

In einem eigenen Ausgabesystem können hier Werte ergänzt werden, die bei der Ausgabe an ein externes System generiert wurden.

Eigenschaft

Beschreibung

string Name

Dateiname inklusive Endung

string FilePath

vollständiger Dateipfad, wenn das Eingabesystem dateisystembasiert ist

Wenn beim Einlesen eines Dokuments in einem eigenen Eingabesystem oder Eingabeformat die Binärdaten der Datei nicht direkt in FileData gesetzt werden, wird dieser Pfad vom Programm genutzt, um den Dateiinhalt im Nachgang einzulesen.

Stream FileData

Binärdaten der Dateianlage

Die Binärdaten müssen beim Einlesen eines Dokuments nicht zwingend gesetzt sein, wenn ein FilePath angegeben ist. Ob bei der Übergabe eines Dokuments an eine benutzerdefinierte Komponente die Binärdaten übergeben werden, ist abhängig vom Kontext der Konfiguration.

IDictionary<string, string> ExternalKeys

IDictionary<string, string> MetaData

Name-/Wert-Paare von externen Schlüsselwerten und Metadaten der Dateianlage

In einem eigenen Ausgabesystem können hier Werte ergänzt werden, die bei der Ausgabe an ein externes System generiert wurden.

Eigenschaft

Beschreibung

string Name

Name des Feldes gemäß Definition im Feldkatalog

object Value

Wert des Feldes in einem unterstützten .NET-Datentyp

Die folgenden .NET-Datentypen werden vom Makrointerpreter unterstützt:

  • string (Textwert)

  • double (Zahlenwert)

  • bool (Wahrheitswert)

  • System.DateTime (Datumswert)

  • System.Array

IList<TableRow> Rows

Tabellenzeilen (wenn das Feld tabellarische Daten enthält) oder null

Achtung

Bei der Anbindung eigener Programmkomponenten werden nur flache Tabellenstrukturen unterstützt, d.h. keine verschachtelten Untertabellen.

Das gilt für die Übernahme von einer externen Komponente eingelesener oder veränderter Feldinhalte und auch für die Übergabe bestehender Feldinhalte an eine externe Komponente.

Eigenschaft

Beschreibung

IList<Field> Fields

Felder, die in der Tabellenzeile enthalten sind

Eigenschaft

Beschreibung

string Name

Name des Feldes gemäß der Definition .Field[].Name im Feldkatalog

string InputName

Name des Feldes, unter dem das Feld gemäß Definition .Field[].InputName des Indexdatenlesers aus der Indexdatei eingelesen wird

Eigenschaft

Beschreibung

string Name

object Value

IList<TableRow> Rows

Eigenschaften analog zur Klasse Field

string OutputName

Name des Feldes, unter dem das Feld gemäß Definition .Field[].OutputName des Ausgabeformats oder Ausgabesystems in die Ausgabedatei geschrieben oder an das Ausgabesystem übergeben wird.

Die Schnittstellendefinition "ICustomLogger" beschreibt eine Logging-Komponente, die den eigenen Klassen jeweils im Konstruktor und den Makrofunktionen als Aufrufparameter übergeben wird. Diese Komponente ist im Namensraum XSuite.Interface.CustomModules.Interfaces definiert und dient dazu, aus dem eigenen Code heraus Log-Einträge direkt in die Logs von xSuite Interface auszugeben.

Methode

Beschreibung

void Log(
   LogLevel logLevel = LogLevel.Information,
   string message = "",
   int indentLevel = 0,
   Exception exception = null)

Der logLevel entspricht der Eigenschaft Logging.Level in der globalen Konfiguration und kann hier die folgenden Werte haben:

  • Trace

  • Debug

  • Information

  • Warning

Die message ist der auszugebende Text. Das Programm stellt die Texte zur besseren Lesbarkeit teils eingerückt dar. Der indentLevel gibt den gewünschten Grad der Einrückung an. Bei Warnungen und Fehlern kann zusätzlich das exception-Objekt ausgegeben werden.