Dynamische Nachrichtentypermittlung und Schemaauflösung
Microsoft BizTalk Accelerator for SWIFT (A4SWIFT) ermöglicht die dynamische Nachrichtentypermittlung und Schemaauflösung sowohl im SWIFT-Disassembler als auch im Assembler.
SWIFT-Disassembler
Der SWIFT-Disassembler (DASM) kann den Nachrichtentyp einer empfangenen Nachricht dynamisch ermitteln und das entsprechende Schema laden, das zum Analysieren der Nachricht erforderlich ist. Der größte Vorteil dieses Features besteht darin, dass Sie eine einzelne Pipeline mit dem SWIFT-Disassembler konfigurieren können, um SWIFT-Nachrichten eines beliebigen SWIFT-Nachrichtentyps zu verarbeiten. Im Gegensatz zum nativen BizTalk-Flatfile-Disassembler erfordert der SWIFT-Disassembler nicht, dass Sie eine separate Empfangspipeline für jeden Nachrichtentyp erstellen, auf den A4SWIFT möglicherweise stoßen.
Sie können die dynamische Nachrichtentypermittlung verwenden, wenn Sie davon ausgehen, dass in den meisten Fällen alle Nachrichten, die ein System empfängt, mit strukturell homogenen Headerdaten beginnen. Innerhalb der Headerdaten befinden sich Felder, die den Nachrichtentyp der Nachricht anzeigen. Für SWIFT-Nachrichten bestehen Headerdaten aus swift-Nachrichtenblöcken 1, 2 und 3, mit Nachrichtentypinformationen, die in Block 2 enthalten sind (als Anwendungsheader bezeichnet).
Die SWIFT-DASM-Komponente kann alle "einzelnen" (nicht batched) SWIFT-Nachrichten sofort verarbeiten, ohne dass eine der Eigenschaften festgelegt werden muss. Standardmäßig sind das SWIFT-Austauschschema und das SWIFT-Headerschema nicht festgelegt. Die SWIFT-DASM-Komponente verwendet jedoch das SWIFT-Headerschema, das in Microsoft.Solutions.FinancialServices.SWIFT.RuntimeSchemas.dll vorhanden ist, um den SWIFT-Nachrichtentyp dynamisch zu erkennen und die Nachrichten zu verarbeiten. Außerdem sind BRE und XML Validation standardmäßig aktiviert, sodass alle verarbeiteten Nachrichten vollständig überprüft werden. Das Festlegen der SWIFT Header-Schemaeigenschaft auf den SWIFT-Header in RuntimeSchemas.dll führt ebenfalls zum gleichen Verhalten wie oben.
Wenn die Konfigurationseigenschaft SWIFT-Headerschema für den SWIFT-Disassembler auf "None" (Standardeinstellung) festgelegt ist, löst der Disassembler das entsprechende Schema dynamisch auf und lädt es, indem die folgenden Schritte ausgeführt werden:
Verwendet das vom Benutzer angegebene Headerschema (angegeben durch die Konfigurationseigenschaft SWIFT-Headerschema), um den Anfang (Header) der Empfangsnachricht zu analysieren.
Überprüft die resultierende "Header-XML" für das A4SWIFT_MessageType höhergestuftes Eigenschaftenfeld. Wenn dieses Feld vorhanden ist, verwendet es den Feldwert als "Nachrichtentyp" und fährt mit Schritt 4 fort. Wenn das Feld nicht vorhanden ist, wird mit Schritt 3 fortgesetzt.
Überprüft die Header-XML für das A4SWIFT_MessageType2 höhergestuften Eigenschaftenfelds (erwartet, wenn der Disassembler das A4SWIFT_MessageType Feld nicht findet). Verwendet den A4SWIFT_MessageType2 Feldwert als "Nachrichtentyp".
Wenn der in Schritt 2 oder 3 identifizierte "Nachrichtentyp" "574" lautet, überprüft der SWIFT-Disassembler, ob der Nachrichtentyp "574" in der Liste der Nachrichtentypen enthalten ist, die in der Konfigurationseigenschaft Dual Type Message List (eine Eigenschaft des Disassemblers) angegeben ist. Wenn ja, wird mit Schritt 5 fortgesetzt. Wenn nein, fahren Sie mit Schritt 6 fort.
Überprüft die Header-XML für das A4SWIFT_SecondaryMessageType höhergestuften Eigenschaftenfelds. Wenn dieses Feld vorhanden ist, verwendet der Disassembler den Feldwert (z. B. "IRSLST") als "Nachrichtenuntertyp" und fügt ihn an den "Nachrichtentyp" an, z. B. "574_IRSLST".
Wichtig
Die Erklärung für Schritt 5 ist eine Vereinfachung dessen, was der SWIFT-Disassembler tatsächlich tut, um den Nachrichtenuntertyp auszuwerten. Tatsächlich verwendet der SWIFT-Disassembler den folgenden Algorithmus, um zu bestimmen, ob ein Nachrichtentyp Untertypen aufweist und wenn ja, welcher Untertyp wie folgt lautet.
Given MT type number nxx ... if nxx is in the Dual-Type list { if field 119 exists AND field 119 is NOT null/empty { if n == 1 { if field 119 == "STP" { Use MTnxxPLUS schema } else if field 119 == "REMIT" { Use MTnxx schema } else { Use MTnxx_<field 119> schema } } else { // n != 1 Use MTnxx_<field 119> schema } } else { // field 119 does not exist or 119 does exist but is null/empty Use MTnxx schema } } else { // nxx is not a dual-type message Use MTnxx schema }
Der Disassembler kennt jetzt den Nachrichtentyp und kann den Austauschschemanamen bilden, indem er einige feste Schemanamenpräfixe und Suffixe verkettet (z. B. "MT" im Präfix, um "MT574_IRSLST").
Lädt das Austauschschema (nach Name) und analysiert die gesamte Nachricht von Anfang an mithilfe des geladenen Schemas (dies bedeutet, dass der Disassembler die Headerdaten zweimal analysiert: einmal mit dem Headerschema und erneut mit dem Anfang des Austauschschemas). Das Austauschschema muss in der Lage sein, die gesamte Nachricht einschließlich des Headers zu analysieren.
Hinweis
Der Disassembler kann alle A4SWIFT SWIFT-Nachrichtenschemas verwenden, um den gesamten SWIFT-Austausch (SWIFT-Blöcke 1, 2, 3, 4 und 5) zu analysieren. Der Disassembler verwendet das standardmäßige SWIFT-Headerschema, um nur die Blöcke 1, 2 und 3 zu analysieren. Weitere Informationen siehe unten.
Der oben beschriebene Algorithmus zur Schemaauflösung impliziert, dass das SWIFT-Headerschema Felder enthalten muss, die der Disassembler mithilfe der folgenden heraufgestuften Eigenschaften heraufgestuft hat (definiert im A4SWIFT Eigenschaftenschema, Microsoft.Solutions.A4SWIFT.Property.PropertySchema):
A4SWIFT_MessageType
A4SWIFT_MessageType2 (optional, wenn A4SWIFT_MessageTypes verwendet wird)
A4SWIFT_SecondaryMessageType (optional)
Weitere Informationen zu diesen und anderen heraufgestuften Eigenschaften finden Sie unter A4SWIFT_* Höhergestufte Eigenschaften.
Hinweis
Wenn Sie das SWIFT-Headerschema auf None festlegen, sollten Sie ein vollständiges Austauschschema für die SWIFT Interchange Schema-Eigenschaft angeben. In diesem Fall verwendet der Disassembler das angegebene Austauschschema, um alle Nachrichten zu analysieren, die A4SWIFT empfängt. Das heißt, Sie deaktivieren die dynamische Schemaauflösung und konfigurieren die Pipeline so, dass nur Nachrichten empfangen werden, deren Typ dem angegebenen Austauschschema entspricht.
A4SWIFT installiert ein standardmäßiges SWIFT-Headerschema (Microsoft.Solutions.FinancialServices.SWIFT.RuntimeSchemas.HeaderSchema), das SWIFT-Standardheaderdaten analysieren kann und über die erforderlichen heraufgestuften Eigenschaften verfügt, um die dynamische Schemaauflösung zu erleichtern.
Das standardmäßige SWIFT-Headerschema weist die folgenden höher gestuften Felder auf:
SWIFTHeader/ApplicationHeaderBlock_Input/MessageType. Der Disassembler erhöht dies mithilfe der eigenschaft A4SWIFT_MessageType .
SWIFTHeader/ApplicationHeaderBlock_Output/MessageType. Der Disassembler erhöht dies mithilfe der eigenschaft A4SWIFT_MessageType2 .
SWIFTHeader/UserHeaderBlock/ValidationFlag_119. Der Disassembler erhöht dies mithilfe der eigenschaft A4SWIFT_MessageType .
Der Disassembler verwendet standardmäßig Microsoft.Solutions.FinancialServices.SWIFT.RuntimeSchemas.HeaderSchema als Headerschema, wenn Sie die Konfigurationseigenschaften des SWIFT-Headerschemas und des SWIFT-Austauschschemas auf "None" festlegen.
SWIFT-Assembler
Wie der SWIFT-Disassembler hat der SWIFT-Assembler die Möglichkeit, den Nachrichtentyp einer ausgehenden Nachricht dynamisch zu ermitteln und das entsprechende Schema zu laden, das zum Serialisieren der Nachricht erforderlich ist. Mit diesem Feature können Sie eine einzelne Pipeline mithilfe des SWIFT-Assemblers konfigurieren, um SWIFT-Nachrichten eines beliebigen SWIFT-Nachrichtentyps zu verarbeiten. Im Gegensatz zum nativen BizTalk-Flatfile-Assembler erfordert der SWIFT-Assembler nicht, dass Sie eine separate Sendepipeline für jeden Nachrichtentyp erstellen, auf den A4SWIFT möglicherweise stoßen.
Die dynamische Schemaauflösung im SWIFT-Assembler ist viel einfacher als im SWIFT-Disassembler, da der Assembler xml wieder in das SWIFT-Flatfileformat serialisiert. Die XML, die BizTalk Server dem SWIFT-Assembler für die Serialisierung übergibt, enthält den Nachrichtentyp und die Schemainformationen, die der SWIFT-Assembler direkt zum Laden des entsprechenden Schemas für die Serialisierung verwenden kann. Daher verfügt der SWIFT-Assembler über keine Konfigurierbarkeit für Header- und Austauschschemas: Er verwendet immer das schema, das in der XML-Datei angegeben ist, die serialisiert wird.