Individuazione dinamica del tipo di messaggio e risoluzione dello schema
Microsoft BizTalk Accelerator per SWIFT (A4SWIFT) consente l'individuazione dinamica dei tipi di messaggio e la risoluzione dello schema sia nel disassembler SWIFT che nell'assembler.
Disassembler SWIFT
Il disassembler SWIFT (DASM) ha la possibilità di individuare in modo dinamico il tipo di messaggio di un messaggio ricevuto e caricare lo schema appropriato necessario per analizzare il messaggio. Il vantaggio maggiore di questa funzionalità è che è possibile configurare una singola pipeline usando il disassembler SWIFT per elaborare i messaggi SWIFT di qualsiasi tipo di messaggio SWIFT. A differenza del disassembler di file flat BizTalk nativo, il disassembler SWIFT non richiede la compilazione di una pipeline di ricezione separata per ogni tipo di messaggio che A4SWIFT potrebbero verificarsi.
È possibile usare l'individuazione dinamica del tipo di messaggio se si presuppone che, nella maggior parte dei casi, tutti i messaggi ricevuti da un sistema inizieranno con dati di intestazione strutturalmente omogenei. All'interno dei dati di intestazione sono presenti campi che rivelano il tipo di messaggio del messaggio. Per i messaggi SWIFT, i dati di intestazione sono costituiti da blocchi di messaggi SWIFT 1, 2 e 3, con informazioni sul tipo di messaggio contenute nel blocco 2 (noto come intestazione dell'applicazione).
Il componente SWIFT DASM può elaborare tutti i messaggi SWIFT "singoli" (non in batch) predefiniti senza richiedere l'impostazione di alcuna proprietà. Per impostazione predefinita, lo schema dell'interscambio SWIFT e lo schema dell'intestazione SWIFT non sono impostati; Tuttavia, il componente SWIFT DASM userà lo schema di intestazione SWIFT presente in Microsoft.Solutions.FinancialServices.SWIFT.RuntimeSchemas.dll per rilevare il tipo di messaggio SWIFT in modo dinamico ed elaborare i messaggi. Inoltre, la convalida BRE e XML sono abilitate per impostazione predefinita, in modo che tutti i messaggi elaborati vengano convalidati completamente. L'impostazione della proprietà dello schema dell'intestazione SWIFT in modo che punti all'intestazione SWIFT in RuntimeSchemas.dll comporterà anche lo stesso comportamento indicato in precedenza.
Quando la proprietà di configurazione dello schema di intestazione SWIFT per il disassembler SWIFT è impostata su "None" (impostazione predefinita), il disassembler risolve e carica in modo dinamico lo schema appropriato eseguendo la procedura seguente:
Usa lo schema di intestazione specificato dall'utente (specificato dalla proprietà di configurazione dello schema di intestazione SWIFT) per analizzare l'inizio (intestazione) del messaggio di ricezione.
Controlla l'oggetto "header XML" risultante per il campo della proprietà A4SWIFT_MessageType alzato di livello. Se questo campo esiste, usa il valore del campo come "tipo di messaggio" e procede al passaggio 4. Se il campo non esiste, procede al passaggio 3.
Controlla il codice XML dell'intestazione per il campo della proprietà A4SWIFT_MessageType2 alzato di livello (previsto se il disassembler non trova il campo A4SWIFT_MessageType). Usa il valore del campo A4SWIFT_MessageType2 come "tipo di messaggio".
Se il "tipo di messaggio" identificato nel passaggio 2 o 3 è "574", il disassembler SWIFT controlla se il tipo di messaggio "574" si trova nell'elenco dei tipi di messaggio specificati nella proprietà di configurazione Elenco messaggi di tipo doppio (che è una proprietà del disassembler). In caso affermativo, procede al passaggio 5. In caso contrario, procedere con il passaggio 6.
Controlla il codice XML dell'intestazione per il campo della proprietà A4SWIFT_SecondaryMessageType alzato di livello. Se questo campo esiste, il disassembler usa il valore del campo (ad esempio, "IRSLST") come "sottotipo del messaggio" e lo aggiunge al "tipo di messaggio", ad esempio "574_IRSLST".
Importante
La spiegazione fornita per il passaggio 5 è una semplificazione delle operazioni effettivamente eseguite dal disassembler SWIFT per valutare il sottotipo del messaggio. In realtà, il disassembler SWIFT usa l'algoritmo seguente per determinare se un tipo di messaggio ha sottotipi e, in tal caso, quale sottotipo è il seguente.
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 }
Il disassembler ora conosce il tipo di messaggio e può formare il nome dello schema di interscambio concatenando alcuni prefissi e suffissi di denominazione dello schema fisso ( ad esempio "MT" nel prefisso per fare "MT574_IRSLST").
Carica lo schema dell'interscambio (in base al nome) e analizza l'intero messaggio, a partire dall'inizio, usando lo schema caricato. Ciò significa che il disassembler analizza i dati dell'intestazione due volte: una volta usando lo schema di intestazione e di nuovo usando l'inizio dello schema di interscambio. Lo schema dell'interscambio deve essere in grado di analizzare l'intero messaggio, inclusa l'intestazione.
Nota
Il disassembler può usare tutti gli schemi di messaggio SWIFT A4SWIFT per analizzare l'intero interscambio SWIFT (SWIFT blocca 1, 2, 3, 4 e 5). Il disassembler usa lo schema di intestazione SWIFT predefinito per analizzare solo i blocchi 1, 2 e 3. Vedere di seguito per altri dettagli.
L'algoritmo di risoluzione dello schema descritto in precedenza implica che, per consentire il funzionamento dell'individuazione dinamica del tipo di messaggio, lo schema di intestazione SWIFT deve contenere campi promossi dal disassembler usando le proprietà alzate di livello seguenti (definite nello schema delle proprietà A4SWIFT, Microsoft.Solutions.A4SWIFT.Property.PropertySchema):
A4SWIFT_MessageType
A4SWIFT_MessageType2 (facoltativo se viene usato A4SWIFT_MessageTypes )
A4SWIFT_SecondaryMessageType (facoltativo)
Per altre informazioni su queste e altre proprietà alzate di livello, vedere A4SWIFT_* Proprietà alzate di livello.
Nota
Se si imposta lo schema di intestazione SWIFT su Nessuno, è necessario specificare uno schema di interscambio completo per la proprietà Swift Interchange Schema . In questo caso, il disassembler usa lo schema di interscambio specificato per analizzare tutti i messaggi che A4SWIFT ricevono. Vale a dire, si disabilita la risoluzione dinamica dello schema e si configura la pipeline per ricevere solo messaggi il cui tipo corrisponde allo schema di interscambio specificato.
A4SWIFT installa uno schema di intestazione SWIFT predefinito (Microsoft.Solutions.FinancialServices.SWIFT.RuntimeSchemas.HeaderSchema) in grado di analizzare i dati di intestazione standard SWIFT e dispone delle proprietà alzate di livello necessarie per facilitare la risoluzione dinamica dello schema.
Lo schema di intestazione SWIFT predefinito include i campi alzati di livello seguenti:
SWIFTHeader/ApplicationHeaderBlock_Input/MessageType. Il disassembler lo promuove usando la proprietà A4SWIFT_MessageType .
SWIFTHeader/ApplicationHeaderBlock_Output/MessageType. Il disassembler lo promuove usando la proprietà A4SWIFT_MessageType2 .
SWIFTHeader/UserHeaderBlock/ValidationFlag_119. Il disassembler lo promuove usando la proprietà A4SWIFT_MessageType .
Il disassembler usa Microsoft.Solutions.FinancialServices.SWIFT.RuntimeSchemas.HeaderSchema per impostazione predefinita come schema di intestazione se si impostano entrambe le proprietà di configurazione dello schema di intestazione SWIFT e dello schema di interscambio SWIFT su "None".
Assembler SWIFT
Analogamente al disassembler SWIFT, l'assembler SWIFT ha la possibilità di individuare dinamicamente il tipo di messaggio di un messaggio in uscita e caricare lo schema appropriato necessario per serializzare il messaggio. Questa funzionalità consente di configurare una singola pipeline usando l'assembler SWIFT per elaborare i messaggi SWIFT di qualsiasi tipo di messaggio SWIFT. A differenza dell'assembler di file flat BizTalk nativo, l'assembler SWIFT non richiede la compilazione di una pipeline di trasmissione separata per ogni tipo di messaggio che A4SWIFT potrebbero verificarsi.
La risoluzione dinamica dello schema nell'assembler SWIFT è molto più semplice rispetto al disassembler SWIFT perché l'assembler esegue di nuovo il processo di serializzazione di XML in formato file flat SWIFT. Il codice XML che BizTalk Server fornisce all'assembler SWIFT per la serializzazione contiene le informazioni sul tipo di messaggio e sullo schema, che l'assembler SWIFT può usare direttamente per caricare lo schema appropriato per la serializzazione. Di conseguenza, l'assembler SWIFT non dispone di alcuna configurabilità per gli schemi di intestazione e interscambio: usa sempre lo schema specificato nel codice XML che serializzerà.