Datenlogistik Open - JAXenter
Zeitgemäße Datenversorgung von Anwendungen mit Talend

Datenlogistik Open

Steffen Lang und Wilhelm Kuhn
Datenübertragung mit SFTP

Abb. 2: Dateiübertragung mit SFTP

In diesem Szenario sollen Dokumente im PDF-Format an einen Druckdienstleister versendet werden. Die PDF-Dateien werden dabei von beschreibenden Informationen in Form von XML-Dateien begleitet (z.B. Kundennummer und Dokumenttyp). Zum Transfer ist das sichere SSH File Transfer Protocol (SFTP) das Mittel der Wahl. Um die übertragene Datenmenge zu vermindern, sollen die Dateien vor dem Transfer in einem zip-Archiv komprimiert werden. Abbildung 2 zeigt den Aufbau des zugehörigen „Jobs“ (so heißen in Talend ausführbare Prozesse) in der Entwurfsansicht des Studios. Der Job besteht aus drei Abschnitten, die farblich gekennzeichnet sind und zeilenweise abgearbeitet werden. Die Abschnitte bestehen jeweils aus unterschiedlichen Funktionsbausteinen, den so genannten „Komponenten“. Diese Komponenten sind durch Daten- und Kontrollflüsse verbunden, die durch Pfeile dargestellt werden.

Der blaue Abschnitt dient der Ausgabe von Logging-Informationen. Die erste Komponente (list) iteriert dazu über alle PDF- und XML-Dateien im Ausgangsverzeichnis. In jeder Iteration wird der Dateiname über eine log-Komponente ausgegeben. Wohin diese Ausgaben geschrieben werden, ist in der Grafik nicht sichtbar, sondern Bestandteil der Jobeinstellungen, die über eine eigene Ansicht erreichbar sind. Hierbei kann zwischen Dateien, Datenbanktabellen und der Standardausgabe auf die Konsole gewählt werden. Abbildung 3 zeigt am Beispiel der Auflistungskomponente, wie man eine Komponente konfiguriert. Dabei ist die Dateimaske durch einen festen Wert „hart“ kodiert (auf XML- und PDF-Dateien), während für das Quellverzeichnis der Wert der Variablen src_dir aus dem „Kontext“ verwendet wird. Dieser Kontext beinhaltet eine Menge von flexiblen Variablenbelegungen für die jeweilige Ausführung.

Weitere Einstellungen können über Kontrollkästchen und Auswahllisten getätigt werden. Der grüne Abschnitt im Job dient dem Packen und Archivieren der Dateien. Die erste Komponente dieser Zeile fügt dazu die Dateien zu einer ZIP-Datei hinzu. Danach dupliziert eine Kopierkomponente die gepackte Datei in ein Archivverzeichnis. Die letzte Komponente des Abschnitts kümmert sich wieder um das Logging und meldet die erfolgreiche Fertigstellung des Arbeitsschritts. Im gelben Part des Jobs wird dann der eigentliche Transfer durchgeführt. Die gezippte Datei wird mit einer SFP-Komponente zum Server des Druckdienstleisters gesendet. Nach der erfolgreichen Übertragung wird das Dateisystem bereinigt, indem die zweite Komponente das Ausgangsverzeichnis löscht. Falls der Löschvorgang fehlschlägt, führt eine bedingte Verknüpfung die darunter stehende Fehlerkomponente aus. Sie erzeugt eine entsprechende Meldung und beendet den Job mit einem Fehlercode. Bei erfolgreicher Ausführung wird hingegen eine Erfolgsmeldung geloggt und der Job ordnungsgemäß abgeschlossen.

Abb. 3: Konfiguration einer Komponente
Anbindung einer Message Queue

Nun sollen Aufträge zuverlässig und ohne Verzögerung an eine Handelsplattform übertragen werden. Dazu werden sie aus XML-Dateien ausgelesen und in eine sog. Message Queue eingestellt. Die Auftragsbestätigungen werden dann aus einer weiteren Queue abgeholt und anschließend in einer Datei zur Weiterverarbeitung gespeichert. Der entsprechende Job ist in Abbildung 4 dargestellt. Er besteht wiederum aus drei farblich gekennzeichneten Abschnitten, wobei hier der letzte Abschnitt nicht sequenziell nach den ersten beiden ausgeführt wird, er wird stattdessen jeweils bei Bedarf aufgerufen.

Abb. 4: Kommunikation mit einer Message Queue

Im ersten Abschnitt werden die vorhandenen XML-Dateien gelesen und der Inhalt wird in die Queue eingestellt. Dabei wird mit der ersten Komponente wieder über die vorhandenen Dateien iteriert. Die zweite Komponente erzeugt darauf für jede aufgelistete Datei eine Protokollmeldung, während in der dritten Komponente die aktuelle Datei eingelesen wird. Schließlich schreibt eine MOMOutput-Komponente die Nachricht in die Queue des Handelssystems. Diese Standardkomponente unterstützt dabei WebSphere MQ, JBoss Messaging und Apache ActiveMQ. Nach dem Einstellen des Auftrags in die Queue wird die Auftragsdatei gelöscht. Falls das Löschen nicht erfolgreich durchgeführt werden kann, wird der Job durch eine Fehlerkomponente beendet. An dieser Stelle wäre es auch möglich, lediglich eine Fehlermeldung zu erzeugen, um nicht die Verarbeitung der weiteren Aufträge abzubrechen. Der zweite Abschnitt dient dann der Abholung von Auftragsbestätigungen aus einer weiteren Queue. Dazu werden mittels der MOMInput-Komponente die dort vorhandenen Nachrichten abgeholt und danach in eine Datei geschrieben. Diese kann dann zur Weiterverarbeitung an weitere Systeme transferiert werden. Abschließend wird wieder eine Erfolgsmeldung geloggt. Der gelbe Abschnitt wird nicht chronologisch nach den ersten beiden Abschnitten ausgeführt, sondern bei jeder Logging-Meldung. Im Gegensatz zur Verwendung der vordefinierten Logging-Einstellungen des Jobs (wie im ersten Szenario), hat man dadurch die Möglichkeit, das Format der Meldungen zu beeinflussen und es den eigenen Bedürfnissen anzupassen. Die zweite Komponente entfernt dazu bei jedem Eintrag ungewünschte Spalten bzw. Attribute. Anschließend schreibt die letzte Komponente die neu formatierte Meldung in die Standardausgabe. Dort kann sie dann von der aufrufenden Anwendung verarbeitet werden.

Geschrieben von
Steffen Lang und Wilhelm Kuhn
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.