
Sie konfigurieren den File/FTP-Empfänger-Adapter, um damit XML-Messages von der Integration Engine in Dateien abzulegen.
Die Konfiguration besteht im Wesentlichen aus der Angabe
Sie haben
Für den File/FTP-Empfänger-Adapter besteht die Konfiguration aus fünf funktionalen Teilbereichen:
Geben Sie den Namen der Klasse folgendermaßen an:
classname=com.sap.aii.messaging.adapter.ModuleXMB2FILE
Diese Angabe ist zwingend.
30
Diese Angabe ist zwingend. Fehlt die Angabe, wird die Konfiguration als XI 2.0 Adapter-Konfiguration interpretiert. Andere Werte sind nicht zulässig und werden als Fehler ausgegeben.
Geben Sie den Modus des File/FTP-Empfänger-Adapters an. Erlaubte Werte sind
XMB2FILE
Hier wird das von der Integration Engine geschickte Dokument direkt als Datei abgelegt.
XMB2FILEWITHCONVERSION
Hier wird eine Textdatei erwartet, die ein XML-Dokument enthält, das eine Tabelle repräsentiert. Dieses Dokument kann zu einer Textdatei konvertiert werden, die den Inhalt des Dokuments als Liste ablegt mit durch Kommata getrennten Elementen oder mit fester Spaltenlänge. Das erwartete XML-Format entspricht dem Ergebnis der Konvertierung des File/FTP- oder JDBC-Sender-Adapters. Die für diese Konvertierung notwendigen Angaben müssen Sie in Schritt 5 festlegen.
XMBSTREAM2FILE
Hier wird ein spezielles Dateiformat erzeugt, das eine vollständig serialisierte Nachricht der Integration Engine darstellt. Dieses Dateiformat kann vom File/FTP-Sender-Adapter im Modus FILE2XMBSTREAM verarbeitet werden. Dieses Format eignet sich damit zum Zwischenspeichern kompletter Nachrichten der Integration Engine einschließlich aller für die Integration Engine spezifischen Parameter, die im File/FTP-Sender-Adapter dann nicht mehr angegeben werde müssen.
XMB2FILE
Der File/FTP-Empfänger-Adapter bietet einen Dispatcher an, mit dem Sie Messages nach dem Empfangen konvertieren können. Die für den Dispatcher notwendigen Einstellungen werden anhand eines konkreten Beispiels erklärt.
<port_no>
<port_no>
<service>
<service> beschreibt den Serviceteil der Adresse, zu dem die Integration Engine ihre Nachrichten schicken muss.
Diese Angaben sind zwingend.
XI.httpPort=1234XI.httpService=/file/Receiver
http://<fileadapterhost>:1234/file/Receiver
Für die Integration Engine in der Version 1.0 muss die Endpunkt-Adresse wie folgt erweitert werden:
http://<fileadapterhost>:1234/file/Receiver?action=execute&pipelineid=Receiver
Wird die Nachricht von der Integration Engine an einen nicht spezifizierten Service des Adapters geschickt, erfolgt die Fehlermeldung:
No registered listener for <service> found
Die gleiche Fehlermeldung erhält man, wenn der Adapter initialisiert, aber nicht gestartet ist (sich also im Status ANGEHALTEN oder INITIALISIERT befindet).
<Service>
Diese Angabe ist optional.
<Service>
Kann keine Verbindung zum SLD hergestellt werden, oder existiert das Business-System im SLD nicht, ist die Angabe bedeutungslos.
<n>
101
Die folgenden Angaben sind zwingend:
<directoryName>
Geben Sie das Zielverzeichnis an, in dem eingehende Dokumente gespeichert werden sollen. Dieses Verzeichnis wird automatisch erzeugt, falls Sie unter file.createDir nichts gegenteiliges angegeben haben.
<fileName>
Geben Sie den Dateinamen an, unter dem das erste ankommende Dokument abgelegt werden soll.
Geben Sie an, ob ankommende Dokumente alle unter dem Dateinamen abgelegt werden sollen, der unter file.targetFilename spezifiziert wurde. Erlaubte Werte sind
overwrite
overwrite
Dieser Parameter ist durch file.overWriteersetzt.
append
append
addTimeStamp
addTimestamp
-SSS
Dieser Modus garantiert, dass keine Dateien überschrieben werden. Dateien, die aus der gleichen Adapter-Konfiguration stammen, können so einfach nach ihrem Eingangsdatum sortiert werden.
addMessageId
addMessageId
Dieser Modus garantiert, dass keine Dateien überschrieben werden.
addCounter
addCounter
default002.file
addCounter
addCounter
SeparatorString>
SeparatorString
FormatString>
FormatString
000
StepNo>
1
Geben Sie an, wann ein Zähler angefügt werden soll. Erlaubte Werte sind
afterFirst
Der Zähler soll erst angefügt werden, nachdem der unter file.targetFilename angegebene Dateiname unverändert verwendet wurde.
immediately
Der Zähler soll bereits beim ersten eingehenden Dokument angefügt werden.
afterFirst
<default.file><default000.file><default001.file><default002.file>
Werden anstelle der Vorschlagswerte zum Beispiel explizit folgende Werte gesetzt
file.targetFilename= test.dat
file.counterMode= immediately
file.counterSeparator= _
file.counterFormat= 00005
file.counterStep= 2
werden die Dateinamen test_00005.dat, test_00007.dat, test_00009.dat usw. erzeugt.
Diese Liste wird auch nach einem Beenden und Neustart des Adapters fortgesetzt, ohne existierende Dateien zu überschreiben.
Legen Sie fest, ob eine Datei mit einem bereits vorhandenen Dateinamen im Zielverzeichnis überschrieben werden soll. Vorgabewert ist false, eine bereits vorhandene Datei im Zielverzeichnis wird überschrieben. Setzen Sie den Wert auf true, wird die bereits vorhandene Datei nicht überschrieben.
Dieser Parameter ist optional.
Der Vorschlagswert ist bei Binärdaten die vom Integration Server verwendete Codepage (das heißt, die Daten werden unverändert gespeichert). Bei Textdaten ist der Vorschlagswert die System-Codepage der Adapter-Engine (das heißt, die vom Integration Server in UTF-8 codierten Textdaten werden entsprechend konvertiert).
Ist file.encoding spezifiziert und schickt der Integration Server Binärdaten, werden diese als in UTF-8 codierter Text interpretiert.
Erlaubte Werte für die Codepage sind die vorhandenen Charsets der Java-Laufzeit. Nach der Spezifikation von SUN für die Java-Laufzeit müssen mindestens die folgenden Standard-Charsets unterstützt sein:
Charsets der Java-Laufzeit
| Charset | Beschreibung |
|---|---|
|
US-ASCII |
Sieben-Bit ASCII, auch bekannt als ISO646-US, oder Basic-Latin-Block des Unicode-Zeichensatzes |
|
ISO-8859-1 |
ISO-Zeichensatz für westeuropäische Schriften (Latin Alphabet Nr. 1), auch bekannt als ISO-LATIN-1 |
|
UTF-8 |
Acht-Bit Unicode-Zeichendarstellung |
|
UTF-16BE |
16-Bit Unicode-Zeichendarstellung, big-endian Byte-Order |
|
UTF-16LE |
16-Bit Unicode-Zeichendarstellung, little-endian Byte-Order |
|
UTF-16 |
16-Bit Unicode-Zeichendarstellung Byte-Order |
Überprüfen Sie in der Dokumentation für Ihre Java-Laufzeit-Implemetierung, welche weiteren Charsets unterstützt werden.
Ein hier spezifiziertes Betriebssystemkommando wird nach erfolgreicher Dateiverarbeitung ausgeführt. Der Vorschlagswert ist eine leere Zeichenkette (kein Kommando).
Der aktuell prozessierte Dateiname kann mit dem Platzhalter %f(Dateiname) bzw. %F(absoluter Dateiname inklusive Pfad) im Betriebssystemkommando mitgegeben werden.
>
60
Wird der Wert auf 0 oder eine negative Zahl gesetzt, werden bei jeder Adapter-Initialisierung alle Verwaltungsinformationen gelöscht. Dies kann zu Testzwecken sinnvoll sein, sollte aber keinesfalls im Produktivbetrieb gemacht werden.
Wird eine Nachricht mit Service-Attribut Exactly Once empfangen, wird im Zielverzeichnis zunächst eine temporäre Datei mit dem Namen der Adapter-Konfiguration erzeugt. Diese Datei wird dann während der Behandlung des Exactly Once automatisch in den endgültigen Dateinamen unbenannt und darf keinesfalls manuell bearbeitet oder gelöscht werden (auch nicht im Falle eines Abbruchs), da es sonst zum Verlust der Nachricht kommen kann.
Soll die Dateiablage nicht im Dateisystem, sondern auf einem FTP-Server erfolgen, sind zusätzlich die folgenden Angaben erforderlich:
addCounter
<ftp-server>
file.targetDirfile.targetFilename
Die Port-Nummer des FTP-Servers. Die Angabe ist nicht zwingend; die Voreinstellung ist der Standard-Port für FTP-Server (21).
user name>
password>
anonymousanonymous
perFileTransfer|permanently
perFileTransfer)permanently)permanently
Mit dieser Angabe können Sie festlegen, ob eine transferierte Datei zunächst unter einem temporären Namen angelegt und erst nach vollständiger Übertragung umbenannt wird (YES) oder bereits zu Beginn der Übertragung unter ihrem endgültigen Namen angelegt wird (NO). Dieser Fall kann zu Problemen führen, wenn eine Anwendung auf dem FTP-Server bereits auf die Datei zugreift, obwohl die Übertragung noch nicht abgeschlossen ist. Durch die Angabe von YES kann dies verhindert werden, da dann die Datei unter dem gesuchten Namen erst dann sichtbar wird, wenn sie vollständig übertragen wurde.
Der Vorschlagswert ist NO.
XMB2FILEWITHCONVERSION
XMB2FILEWITHCONVERSION
FILE2XMBWITHROWCONVERSION
<resultset>
<row>
<column-name1>column-value</column-name1>
<column-name2>column-value</column-name2>
<column-name3>column-value</column-name3>
</row>
<row>
<column-name1>column-value</column-name1>
<column-name2>column-value</column-name2>
<column-name3>column-value</column-name3>
</row>
</resultset>
Dies ist ein Beispiel für 3 Spalten und 2 Zeilen. Erlaubt ist natürlich eine beliebige Anzahl von Zeilen und Spalten. Die kursiv gesetzten XML-Elemente sind frei definierbar, die Elemente einer Zeile müssen innerhalb eines Elements vom Typ<row> ... </row> gruppiert sein. Aus diesem XML-Dokument wird mit Hilfe der folgenden Angaben eine Textdatei konstruiert.
<n>
Geben Sie an, ob in der Textdatei eine Kopfzeile mit Spaltennamen vorhanden sein soll. Erlaubte Werte sind
0
1
21
3
43
Die Angabe ist zwingend.
<headerLineString>
34
<String>
Geben Sie eine Zeichenkette an, die eine Liste von festen Spaltenbreiten enthält, die durch Kommata getrennt sind und die die Anzahl und Länge der in der Textdatei erzeugten Spalten bestimmen.
Die Angabe von xml.fieldFixedLengths ist zwingend, wenn bei xml.fieldSeparator keine Angabe gemacht wird.
<handling>
Geben Sie an, wie bei einer Angabe von xml.fieldFixedLengths Überschreitungen von dort definierten Spaltenbreiten durch die tatsächlich im Dokument gefundenen Werte behandelt werden sollen. Erlaubte Werte sind
Error
Error
Cut
Cut
Ignore
Ignore
Error
Ist xml.fieldFixedLengths nicht angegeben, ist diese Angabe bedeutungslos.
<SeparatorString>
Eine hier angegebene Zeichenkette wird bei allen Spalten außer der letzten als Trennzeichen angefügt. Sie können diese Zeichenkette auch zusätzlich zu xml.fieldFixedLengths angeben.
Haben Sie bei xml.fieldFixedLengths keine Angabe gemacht, ist dies die einzige Angabe zur Identifikation der einzelnen Spalten einer Reihe.
Haben Sie bei xml.fieldFixedLengths eine Angabe gemacht, wird die Länge des Trennzeichens nicht auf diese Länge angerechnet.
Es muss mindestens xml.fieldFixedLengths oder xml.fieldSeparator spezifiziert sein.
Wenn Sie ausschließlich xml.fieldSeparator spezifiziert haben, können die Strukturen des XML-Dokuments unterschiedlich viele Elemente besitzen, die dann in der Textdatei durch den Wert von xml.fieldSeparator getrennt aneinandergefügt werden. Bei der Angabe von xml.fieldFixedLenghts ist das nicht möglich, da durch die Aufzählung der Spaltenbreiten auch die Anzahl der Spalten festgelegt wird.
<lastSeparatorString>
´nl´
Der Vorschlagswert ist ein Zeilenumbruch (also kein explizites Trennzeichen nach der letzten Spalte; statt dessen sind die Strukturen zeilenweise angeordnet).
<firstSeparatorString>
Eine hier angegebene Zeichenkette wird bei der ersten Spalte vorangestellt. Diese Angabe können Sie auch zusätzlich zu xml.fieldFixedLengths machen.
Der Vorschlagswert ist eine leere Zeichenkette (also kein Trennzeichen vor der ersten Spalte).
Sonderzeichen in den Zeichenketten für Trennzeichen:
xml.fieldSeparatorxml.beginSeparatorxml.endSeparator0xHH´HH´nl´
Feste Spaltenbreite des Textdokuments:
<noOfColumns>
<noOfColumns>
Dieser Wert setzt die Angabe xml.addHeaderLine=0 voraus.