====== Managed File Transfer ======
===== Allgemeines =====
Unter dem Managed File Transfer (kurz [[wp>Managed_file_transfer|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:
* [[kommunikation:kanal:harddiskreceive|]] zu [[kommunikation:kanal:harddisksend|]] oder
* [[kommunikation:kanal:harddiskreceive|]] zu [[kommunikation:kanal:ftpsend|]] oder
* [[kommunikation:kanal:ftpreceive|]] zu [[kommunikation:kanal:harddisksend|]] oder
* [[kommunikation:kanal:ftpreceive|]] zu [[kommunikation:kanal:ftpsend|]].
{{:images:sign_warning.png?nolink|}}**Hinweis:** Ausserdem können hier eBiss spezifische Methoden angewendet werden, so dass eine Partnererkennung anhand der Pfade((Siehe [[kommunikation:kanal:harddiskreceive|Partner mittels Unterverzeichnis ermitteln]])) und ein Partnerspezifisches((Siehe Methoden der[[howtos:alternative_kommunikation|]])) Weiterleiten möglich wird, ohne das in die Dateien hineingeschaut werden muss((Die Üblichen Verfahren der Nachrichten Erkennung und Analyse entfallen hierbei gänzlich.)).
===== Eine mögliche Lösung basiert auf folgenden Komponenten =====
- Für jede Quellpfad - Zielpfad Kombination((per Vorgaben)) gibt es jeweils einen neuen [[partnerverwaltung:start|Tradingpartner]] mit entsprechenden [[partnerverwaltung:kommunikation:start|Kommunikationsadressen]] vom Typ Dateisystem, bestehend aus den Verzeichnisnamen.
- Dabei gilt der Zielpfad als Defaultadresse für den Sendekanal(("MFT.Send")) und
- der [[howtos:mft#hdd_verzeichnis_in_diesem_beispiel|Quellpfad]] zur Partnererkennung beim Empfangskanal(("MFT.Receive"))
- Um diese Partner in eine Gruppe zu sammeln legt man einen entsprechenden [[partnerverwaltung:start#partnervorlageTemplatepartner|Templatepartner]] an, bei welchem der ausgehende Kommunikationskanal hinterlegt ist.
- Für die Dateien gibt es ein eigens dafür angelegtes Postfach((als **MFT** bezeichnet)) in dem alle Dateien landen:
- die nicht weiterzuleitenden Nachrichten werden in einem Teil eines Jobs(("MFT.In")) direkt verworfen,
- alle anderen werden vom Sendekanal(("MFT.Send")) als „Versand“ gekennzeichnet.
- Der Empfangskanal(("MFT.Receive")), welcher ebenfalls die Partnererkennung anhand der Quell-Verzeichnisse vornimmt, verschiebt den Inhalt der Ordner in ein Unterverzeichnis((hier "Archiv" genannt / siehe HDD Verzeichnisstruktur Oben))
- Einen Dateisystem Sendekanal mit einem entsprechenden Zielpfad und der Einstellung „Senderadresse verwenden“
- Ein Job(("MFT.In")) öffnet den Empfangskanal(("MFT.Receive")) und
- verwirft alle Dateien die dem zuvor festgelegten Filter entsprechen((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 [[:prozessdefinition:jobs:jobsteps:allgemein:messageselector|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']
)).
- Alle Dateien die dem ersten Filter nicht entsprechen, werden nun im zweiten Schritt ein weiteres Mal umgekehrt gefiltert.((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 [[:prozessdefinition:jobs:jobsteps:allgemein:messageselector|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']
))
- OPTIONAL kann ein [[en:howtos:plugins:jobsteps:start|CustomJob Object]] angestoßen werden.((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.))
//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 =====
- Zum gewünschten Quellpfad navigieren (am besten einen Temporären Ordner erstellen)
- Dort ein paar Ordner mit Testdateien anlegen (Keine "Archiv" Ordner erstellen) \\ {{:howtos:mft_test_ordner.png|Beispiel für Testordner}}\\ {{:howtos:mft_test_dateien.png|Beispiel für Testdateien}}
- Danach den Job starten der die Dateien abholt und Filtert - hier "MFT.In" \\ {{:howtos:mft_test_job.png|Der Beispieljob}}\\ \\
- 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 \\ {{:howtos:mft_test_dateiennachjob.png|Ergebnis nach Erfolgreicher Ausführung des Jobs}}