Input.CheckDuplicateMacro(*) | Zur Nutzung der Modi Cancel und Error für die Dublettenprüfung wird zusätzlich ein Feldmakroausdruck benötigt, der diese Prüfung ausführt. Die Funktion BatchExists() ist z. B. speziell hierfür vorgesehen. Der Feldmakroausdruck muss einen Wahrheitswert zurückliefern, der angibt, ob der Stapel schon existiert. Alternativ kann ein Array zurückgeliefert werden. In diesem Fall dient die Existenz von Array-Elementen als Merkmal für vorhandene Stapel. Die Feldvariablen, die in diesem Ausdruck verwendet werden können, beziehen sich auf das erste Dokument im Stapel, wenn der Stapel mehrere Dokumente umfasst. |
Input.DocSplit.Mode Input.DocSplit.ConditionMacro(*) Input.DocSplit.FileFilter | Definition der Umstrukturierung von Stapelinhalten Die Umstrukturierung umfasst die Auftrennung von Dokumenten eines Stapels in mehrere Einzeldokumente. Als Grundlage dafür dienen die Dateianlagen der Dokumente. Für eine Auftrennung muss ein Dokument mehr als eine Dateianlage besitzen, sodass aus jeder Dateianlage ein eigenständiges Dokument erstellt wird. Die einzige Ausnahme, bei der auch eine einzelne Dateianlage inhaltlich ausgewertet und aufgetrennt wird, ist die Barcode-Trennung. Der Arbeitsmodus der Trennung wird über die Eigenschaft .Mode festgelegt: Alle Modi außer Barcode beziehen sich auf die Dateianlagen als Ganzes. In der Eigenschaft .ConditionMacro muss ein Zusatzparameter angegeben werden, der vom Modus abhängig ist. Syntaktisch ist dies immer ein Feldmakroausdruck, der aber z. B. auch nur eine Konstante darstellen kann. Neben allgemeinen dokumentspezifischen Variablen sind bei StartCondition, EndCondition und RepeatNamePart zusätzlich Variablen nutzbar, die sich auf die aktuell auszuwertende Dateianlage beziehen (siehe Variablen). Die Eigenschaft .FileFilter dient der Auswahl der Dateianlagen, die für die Trennung herangezogen werden (Standardwert: *). Alle anderen Anlagen werden als Kopie unverändert an jedes aufgetrennte Dokument angehängt. Die generierten Teildokumente erhalten den Namenszusatz .splitN, wobei N eine laufende Nummer darstellt. Modus FixedFileNo: Das Makro muss einen Ganzzahlwert n zurückliefern, der definiert, dass das Dokument nach jeder n-ten Dateianlage in ein separates Dokument aufgetrennt wird. Diese Trennung bezieht sich auch für die nachfolgenden beiden Modi immer auf die Reihenfolge der Anlagen, wie diese dem Dokument zugeordnet sind. Modi StartCondition und EndCondition: Das Makro wird pro Dateianlage ausgeführt. Das Makro muss einen Wahrheitswert zurückgeben, der definiert, dass eine Auftrennung des Dokumentes vor oder hinter der aktuellen Anlage erfolgt. Dabei sollte der Dateiname der Anlage ausgewertet werden. In dem folgenden Beispiel beginnt bei jeder Anlage mit "Invoice" im Namen ein neues Dokument: Contains(@FileName, "Invoice") HinweisIm Modus StartCondition ist die folgende spezielle Arbeitsweise zu beachten: Wenn sich die erste Dateianlage mit einer positiven Trennbedingung nicht am Anfang befindet, wird an dieser Stelle standardmäßig keine Trennung vorgenommen. Stattdessen werden die vorangehenden Dateianlagen dem ersten Dokument zugordnet. Beispiel: Bei 2 Dateianlagen Attachment und Invoice in dieser falsch gelieferten Reihenfolge würde mit obiger Beispieltrennbedingung eine Trennung bei Invoice erfolgen. Aus der eigentlich zur Rechnung gehörigen Anlage würde ein eigenständiges Dokument werden. Ein solcher Fehlerfall mit einer vertauschten Reihenfolge kann somit abgefangen werden. Bei mehreren Rechnungen und zugehörigen Anlagen muss die Reihenfolge jedoch eingehalten werden, um die Anlagen ihren jeweiligen Rechnungen korrekt zuordnen zu können. Wenn diese implizite Arbeitsweise nicht erwünscht ist, muss diese explizit übersteuert werden, indem z. B. durch eine Zusatzbedingung immer ein eigenständiges Dokument bei der ersten Dateianlage begonnen wird: (@FileNo == 1) || Contains(@FileName, "Invoice") Modus RepeatNamePart: Das Makro wird pro Anlage ausgeführt. Das Makro muss eine Zeichenfolge liefern, die typischerweise auch aus dem Dateinamen gewonnen wird. Aus allen Anlagen mit der gleichen Zeichenfolge wird dann jeweils ein eigenständiges Dokument gebildet. In dem folgenden Beispiel werden die ersten 8 Stellen, die möglicherweise eine Rechnungsnummer enthalten, aus dem Namen extrahiert. Alle Anlagen mit der gleichen Nummer werden zusammengefasst: Left(@FileName, 8) Modus Barcode: Das Dateimakro SplitByBarcode() muss genutzt werden. Dabei ist die gleiche Parametrierung zu nutzen wie bei der sonstigen Verwendung dieses Makros. Der erste Standardparameter für das Eingabedateimuster wird ignoriert, da in diesem Kontext mit .FileFilter eine separate Eigenschaft dafür existiert. Beispiel: SplitByBarcode( , , "All", "Simple", "########")
Im Ausgabedateinamen muss für die laufende Nummer der Split-Datei die Variable %SplitFileNo% verwendet werden, da sich %FileNo% in diesem Kontext auf die Nummer der Quelldatei bezieht. |
Input.DocSplit.PreProcessMacro[] Input.PreProcessMacro[] Input.PostProcessMacro[] | Definition von Makrofunktionen eines beliebigen Typs, die in einem Vorverarbeitungsschritt oder einem Nachverarbeitungsschritt des Einlesens neuer Dokumente ausgeführt werden können Die Vorverarbeitung bezieht sich auf bereits gelesene Inhalte. Bevor die Ausführung der Vorverarbeitungsmakros erfolgt, werden die Daten daher zunächst aus dem Eingabesystem eingelesen. Danach sind 2 Stufen der Vorverarbeitung verfügbar: Vorverarbeitung, die noch vor einer per Input.DocSplit definierten Umstrukturierung des Stapels erfolgt (.DocSplit.PreProcessMacro[]) Vorverarbeitung, die nach einer per Input.DocSplit definierten Umstrukturierung des Stapels erfolgt (.PreProcessMacro[])
Abschließend werden die Nachverarbeitungsmakros ausgeführt (.PostProcessMacro[]). Zu diesem Zeitpunkt ist den Dokumenten noch kein Feldkatalog zugeordnet. Diese Zuordnung erfolgt erst im Zuge der Indexdatenlesung im nachfolgenden "Process"-Schritt. Makrofunktionen im "Input"-Schritt können somit nicht auf schon eingelesene Felder referenzieren. An dieser Stelle sind aber Funktionen aufrufbar, die z. B. Eigenschaften von Dateianlagen oder Werte aus Dateianlagen auslesen. Wenn hier mehrere Funktionen nacheinander ausgeführt werden, können diese Werte temporären Variablen zugewiesen werden. In nachfolgenden Funktionen kann auf diese temporären Variablen Bezug genommen werden. Die Variablen sind nur im Kontext des auszuführenden Makroblocks gültig. Ein Feldwert, der bereits im "Input"-Schritt per Makro generiert wurde, kann trotz eines fehlenden Feldkatalogs zwischengespeichert und in den "Process"-Schritt übernommen werden. Wenn ein solcher Wert einer temporären Variable zugewiesen wird und diese Variable denselben Namen trägt wie ein Feld aus dem Feldkatalog, wird der Variablenwert bei der Zuordnung des Feldkatalogs implizit als Initialwert des Feldes genutzt. Wenn ein direkt am Feld definierter Initialwert vorhanden ist, wird dieser dabei ignoriert. |
Input.TrackingIdMacro Input.TrackingKeyMacro Input.CustomKeyMacro | optionale Makrofunktionen, die bestimmte Schlüsselwerte für ein Dokument generieren .TrackingIdMacro und .TrackingKeyMacro sind technische Schlüssel, die primär im Zusammenspiel mit anderen xSuite-Anwendungen zum Einsatz kommen. Dies ermöglicht eine durchgängige Nachverfolgung (Tracking) von Dokumenten über alle Programme, die an einer Verarbeitungsstrecke beteiligt sind. Syntaktisch werden dabei typischerweise UUIDs oder ein fortlaufender Zähler verwendet. Wenn Dokumente initial durch xSuite Interface eingelesen oder generiert werden, sollte auch die Erzeugung der Tracking-Werte anhand der nebenstehenden Konfigurationseigenschaften erfolgen.
Dafür sind insbesondere die Feldmakrofunktionen GetUuid() und GetDbCounter() vorgesehen. Bei allen xSuite-Anwendungen, die als Eingabesystem oder Ausgabesystem dienen und das Tracking explizit unterstützen, werden die betreffenden Werte automatisch übernommen oder übergeben. Eine gesonderte Konfiguration ist hierfür nicht notwendig. Bei Eingabeschnittstellen in die xSuite Helix Cloud ist zu beachten, dass nur der Tracking-Key übergeben werden kann. Die Tracking-ID wird von xSuite Helix selbst generiert. .CustomKeyMacro ist ein Schlüssel vom Typ "Text". Dieser Schlüssel ist bei Bedarf beliebig definierbar und hat einen informativen Charakter. Dieser Schlüssel ist insbesondere dazu gedacht, relevante Indexfeldinhalte aus dem Feldkatalog direkt in einer dedizierten Eigenschaft des Dokumentes darzustellen. Auf diese Weise können die Inhalte beim Monitoring schneller erkannt werden und gezielter nach diesen gesucht werden.
Die 3 Konfigurationseigenschaften existieren in identischer Form noch einmal an der Eigenschaft Process. Abhängig davon, an welcher der beiden Stellen die Konfigurationseigenschaften genutzt werden, erhalten die Dokumente die Ergebniswerte im "Input"-Schritt oder im "Process"-Schritt. Dabei ist zu beachten, dass die Indexfeldinhalte der Dokumente erst im "Process"-Schritt gelesen werden. Wenn auf diese Bezug genommen wird, können die Schlüsselwerte daher erst dort generiert werden. |