Zusammenführer (Merger)
Alle verfügbaren Zusammenführer sind definiert in Konfigurationsdatei ./etc/admin/datawizard/ci_merger.properties . Wir bieten eine Programmierschnittstelle (API), die es Ihnen auch erlaubt eigene Klassen in Java zu entwickeln. Hierzu bieten wir eine vertiefte Schulung an. Bei Interesse wenden Sie sich bitte an unsere Mitarbeiter im Support bzw. im Vertrieb.
Merge Edifact
Der Zusammenführer Merge Edifact kann mehrere EDIFACT-Dokumente zusammenzuführen. Dabei werden im zusammengeführten Dokument die UNA-, UNB- und UNZ-Segmente des ersten empfangenen EDIFACT-Dokuments verwendet. Hinweis: Dadurch gehen die Interchange Control References der individuellen Dokumente verloren. Die System-Variable MSG_CALL_REF_IDS (falls definiert) enthält die Interchange Control References aller zusammengeführten EDIFACT-Dokumente und kann dann von Folgeprofilen ausgelesen werden . Beispiel: 339;338;337
Merge JSON
Der Zusammenführer Merge JSON fügt einzelne JSON-Dateien in einem Array zusammen. Beispiel:
{
"fruit"
:
"Apple"
,
"color"
:
"Red"
}
{
"fruit"
:
"Apple"
,
"color"
:
"Green"
}
[
{
"fruit"
:
"Apple"
,
"color"
:
"Red"
}
,
{
"fruit"
:
"Apple"
,
"color"
:
"Green"
}
]
Merge XML
Der Zusammenführer Merge XML bietet die Möglichkeit XML-Dateien unterhalb eines übergeordneten Tags syntaktisch korrekt zusammenzufügen.
Gegeben seien die zwei folgenden XML-Dateien.
<?
xml
version
=
"1.0"
encoding
=
"ISO-8859-1"
?>
<
ORDER
nr
=
"9879871234"
cust
=
"Max Mustermann"
>
<
POS
index
=
"1"
nr
=
"7687876"
amount
=
"1"
artName
=
"Artikel1"
/>
<
POS
index
=
"2"
nr
=
"5477969"
amount
=
"1"
artName
=
"Artikel2"
/>
<
POS
index
=
"3"
nr
=
"3687652"
amount
=
"2"
artName
=
"Artikel3"
/>
</
ORDER
>
<?
xml
version
=
"1.0"
encoding
=
"ISO-8859-1"
?>
<
ORDER
nr
=
"9527638478"
cust
=
"Testkunde 1"
>
<
POS
index
=
"1"
nr
=
"6537896"
amount
=
"1"
artName
=
"Artikel4"
/>
<
POS
index
=
"2"
nr
=
"2971087"
amount
=
"1"
artName
=
"Artikel5"
/>
</
ORDER
>
Das Ergebnis wäre folgende XML-Datei.
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
merge
>
<
ORDER
nr
=
"9879871234"
cust
=
"Max Mustermann"
>
<
POS
index
=
"1"
nr
=
"7687876"
amount
=
"1"
artName
=
"Artikel1"
/>
<
POS
index
=
"2"
nr
=
"5477969"
amount
=
"1"
artName
=
"Artikel2"
/>
<
POS
index
=
"3"
nr
=
"3687652"
amount
=
"2"
artName
=
"Artikel3"
/>
</
ORDER
>
<
ORDER
nr
=
"9527638478"
cust
=
"Testkunde 1"
>
<
POS
index
=
"1"
nr
=
"6537896"
amount
=
"1"
artName
=
"Artikel4"
/>
<
POS
index
=
"2"
nr
=
"2971087"
amount
=
"1"
artName
=
"Artikel5"
/>
</
ORDER
>
</
merge
>
Merge text
Die erste Version von Merge text ist nur noch aus Kompatibilitätsgründen vorhanden und wird hier nicht extra beschrieben. Bitte verwenden Sie immer Version 2.
Merge text V2
Der Zusammenführer Merge Text V2 bietet die Möglichkeit Dateien zusammenzuführen, die den definierten Dateinamen-Mustern (Pattern) entsprechen und zu einem definierten Kontext gehören. Der erste Eintrag der Liste aller Einträge dient der Definition des Kontexts (im Folgenden genauer beschrieben).
(1) Zeilenumbruch anfügen: Falls zwischen den zusammenzufügenden Dateien ein Zeilenumbruch eingefügt werden soll, kann der Zeilenumbruchswert dafür hier ausgewählt werden.
(2) Einzel-Dateien zurückhalten: Ist diese Option gewählt, dann muss der Datei-Pool mindestens 2 Dateien enthalten, damit der Merger gestartet werden kann.
(3) Liste unten: Die Liste der Einträge. Hinweis: Es müssen mindestens zwei Einträge definiert werden.
Allgemeine Vorgehensweise
Für alle Dateien des Datei-Pools wird mit dem ersten Eintrag ein Schlüsselwert generiert (wenn das Pattern übereinstimmt). Bildung des Schlüsselwertes (über eine der zwei möglichen Methoden):
(4) Start/Ende: Aus dem Dateinamen wird über einen Startindex und einen Endindex (inklusive) ein Substring gebildet. Zum Beispiel liefert Start=3 und Ende=3 bei der Datei h_1.txt den Schlüsselwert 1 (Prefix und Suffix müssen hier leer bleiben).
(5) Prefix/Suffix: Der Schlüsselwert wird aus dem Text zwischen Prefix und Suffix gebildet. Zum Beispiel liefert Prefix=h_ und Suffix=.txt bei der Datei h_1.txt den Schlüsselwert 1 (Start und Ende müssen hier 0 bleiben).
Für jeden unterschiedlichen Schlüsselwert wird ein Kontext erzeugt.
Der Zusammenführer prüft nun anhand der weiteren Einträge für alle Dateien des Datei-Pools (wenn dieser abgearbeitet wird), zu welchem Kontext sie gehören. Stimmt der Dateiname mit dem Pattern des Eintrags überein, wird auch hier der Schlüsselwert erzeugt. Ist der Schlüsselwert identisch mit dem eines Kontexts, dann wird die Datei diesem Kontext zugeordnet. Sind alle Einträge der Liste für alle Dateien des Datei-Pools abgearbeitet, werden die Dateien jedes Kontexts in der gefundenen Reihenfolge zusammengeführt. Zu beachten ist hier aber die Bedingung (6) "Min. (V2)". Das ist die Mindestanzahl der Dateien, die beim Mergen vorhanden sein müssen (z. B. könnte man im folgenden Beispiel mindestens 2 Positions-Dateien verlangen oder mindestens 1 Kopf-Datei).
Beispiel
Die Dateien h_*.txt enthalten einen Auftragskopf und die zugehörigen Positionen sind in den Dateien d_*.txt enthalten.
Wir wollen also z. B. die Dateien h_1.txt mit d_11.txt, d_12.txt, ... und die Dateien h_2.txt mit d_21.txt, d_22.txt, ... zusammenfassen.
Deshalb müssen wir den Schlüsselwert, der den Kontext der zusammenzuführenden Dateien bestimmt, aus der dritten Stelle des Dateinamens bilden.
Dazu erzeugen wir den ersten Eintrag mit dem Pattern h_*.txt und Start=3 und Ende=3.
Für den zweiten Eintrag verwenden wir das Pattern d_*.txt und ebenfalls Start=3 und Ende=3 .
Der Screenshot oben zeigt die Konfiguration für dieses Beispiel.
Die Datei h_1.txt deckt sich also mit dem Pattern h_*.txt des ersten Eintrags. Die dritte Stelle des Dateinamens h_1.txt erzeugt den Schlüssel 1 für den ersten Kontext. Analog mit h_2.txt für den zweiten Kontext mit Schlüssel 2.
Die Datei d_11.txt deckt sich mit dem Pattern d_*.txt des zweiten Eintrags. Die dritte Stelle des Dateinamens d_1.txt erzeugt den Schlüssel 1, deshalb wird die Datei dem Kontext mit demselben Schlüssel 1 zugeordnet. Analog für d_12.txt, d_21.txt und d_22.txt.
Wichtiger Hinweis
Natürlich kann der Content-Inspektor unter Umständen auch Dateien erhalten, die nicht den definierten Pattern entsprechen. Diese Dateien landen ebenfalls im Datei-Pool des Content-Inspektors.
Kommt es (durch Zeitüberschreitung oder Erreichen der Datei-Maximalzahl) zur Abarbeitung des Datei-Pools, dann verhält sich der Zusammenführer Merge Text V2 so, dass die Dateien im Datei-Pool nach den oben beschriebenen Regeln zusammengeführt werden. Dateien, die nicht den definierten Pattern entsprechen, werden allerdings nicht angefasst und bleiben im Datei-Pool und zudem wird der Zeitzähler auf 0 zurückgesetzt. Wenn gewünscht, dann kann man diese verbliebenen Dateien manuell aus dem Datei-Pool entfernen (wenn man z. B. einen Einfluss auf die maximale Dateianzahl verhindern will).
Dateien können also einen Content-Inspektor mit konfiguriertem Zusammenführer Merge Text V2 beim Auslösen der Abarbeitung des Datei-Pools automatisiert nur über das Merging verlassen.
Ein gleichzeitig eingerichteter Splitter funktioniert aber in gewohnter Weise (und somit vor dem Abarbeiten des Datei-Pools).