Inhaltsverzeichnis

Managed File Transfer

Allgemeines

Unter dem Managed File Transfer (kurz MFT) verstehen wir den Dateitransfer von Punkt A zu Punkt B.
Hierbei kann die Kommunikation bzw. der Austausch in beliebigen Kombinationen aus HDD und FTP bestehen.
Also alle Permutationen der beiden Varianten:

Hinweis: Ausserdem können hier eBiss spezifische Methoden angewendet werden, so dass eine Partnererkennung anhand der Pfade1) und ein Partnerspezifisches2) Weiterleiten möglich wird, ohne das in die Dateien hineingeschaut werden muss3).

Eine mögliche Lösung basiert auf folgenden Komponenten

  1. Für jede Quellpfad - Zielpfad Kombination4) gibt es jeweils einen neuen Tradingpartner mit entsprechenden Kommunikationsadressen vom Typ Dateisystem, bestehend aus den Verzeichnisnamen.
    1. Dabei gilt der Zielpfad als Defaultadresse für den Sendekanal5) und
    2. der Quellpfad zur Partnererkennung beim Empfangskanal6)
  2. Um diese Partner in eine Gruppe zu sammeln legt man einen entsprechenden Templatepartner an, bei welchem der ausgehende Kommunikationskanal hinterlegt ist.
  3. Für die Dateien gibt es ein eigens dafür angelegtes Postfach7) in dem alle Dateien landen:
    1. die nicht weiterzuleitenden Nachrichten werden in einem Teil eines Jobs8) direkt verworfen,
    2. alle anderen werden vom Sendekanal9) als „Versand“ gekennzeichnet.
  4. Der Empfangskanal10), welcher ebenfalls die Partnererkennung anhand der Quell-Verzeichnisse vornimmt, verschiebt den Inhalt der Ordner in ein Unterverzeichnis11)
  5. Einen Dateisystem Sendekanal mit einem entsprechenden Zielpfad und der Einstellung „Senderadresse verwenden“
  6. Ein Job12) öffnet den Empfangskanal13) und
    1. verwirft alle Dateien die dem zuvor festgelegten Filter entsprechen14).
    2. Alle Dateien die dem ersten Filter nicht entsprechen, werden nun im zweiten Schritt ein weiteres Mal umgekehrt gefiltert.15)
    3. OPTIONAL kann ein CustomJob Object angestoßen werden.16)

Alle genannten Namen für Channel / Jobs o.ä. sind frei erfunden

HDD Quell-Verzeichnis in diesem Beispiel:

C:\TEMP\MFT_TEST
├───Partner A
│   └───Archiv
├───Partner B
│   └───Archiv
├───Partner C
│   └───Archiv
├───Partner X
│   └───Archiv
└───Partner Y
    └───Archiv

HDD Ziel-Verzeichnis in diesem Beispiel:

C:\TEMP\MFT_SEND
├───Partner A
├───Partner B
├───Partner C
└───Partner X

Testen ob der MFT funktioniert

  1. Zum gewünschten Quellpfad navigieren (am besten einen Temporären Ordner erstellen)
  2. Dort ein paar Ordner mit Testdateien anlegen (Keine „Archiv“ Ordner erstellen)
    Beispiel für Testordner
    Beispiel für Testdateien
  3. Danach den Job starten der die Dateien abholt und Filtert - hier „MFT.In“
    Der Beispieljob

  4. Das Verzeichnis überprüfen - Wenn alles geklappt hat sollten nun keine Dateien mehr direkt in den Ordnern liegen. Diese sollten sich nun in einem neu erstellten Unterordner „Archiv“ befinden
    Ergebnis nach Erfolgreicher Ausführung des Jobs
2)
Siehe Methoden derAlternative Kommunikation
3)
Die Üblichen Verfahren der Nachrichten Erkennung und Analyse entfallen hierbei gänzlich.
4)
per Vorgaben
5) , 9)
„MFT.Send“
6) , 10) , 13)
„MFT.Receive“
7)
als MFT bezeichnet
8) , 12)
„MFT.In“
11)
hier „Archiv“ genannt / siehe HDD Verzeichnisstruktur Oben
14)
Hier haben wir zu Beispielzwecken alle Dateien die nicht auf „.txt“ oder „.xml“ enden abgefiltert. Zusätzlich werden auch alle Dateien, die von „Partner X“ kommen, weiter verarbeitet. Dazu einen MessageSelector mit folgender XPATH Expression verwenden:
/SelectionBase/InputMessages[(substring(Attachments[1]/@Filename,string-length(Attachments[1]/@Filename) - 3) != '.xml' and substring(Attachments[1]/@Filename,string-length(Attachments[1]/@Filename) - 3)!= '.txt') and @PartnerName != 'Partner X']
15)
Gemeint ist hier das der erste Filter hier umgekehrt erneut prüft. Wir lassen also nur Dateien mit der Endung „.xml“ / „.txt“ oder alles von „Partner X“ weiter. Dazu einen MessageSelector mit folgender XPATH Expression verwenden:
/SelectionBase/InputMessages[(substring(Attachments[1]/@Filename,string-length(Attachments[1]/@Filename) - 3) = '.xml' or substring(Attachments[1]/@Filename,string-length(Attachments[1]/@Filename) - 3)= '.txt') or @PartnerName = 'Partner X']
16)
Zum Beipiel möchte man die ins Archive kopierten Dateien nach einer gewissen Verfallszeit löschen. Dazu brauch man OS Funktionalitäten, die in so einem Custom-Job-object gescriptet werden können.