Fase di disassemblaggio (Elaborazione di interscambio reversibile)
Gli interscambi vengono elaborati in fase di disassemblaggio in base a due modalità:
Modalità standard. Quando il componente disassembler di una pipeline di ricezione è configurato in modo da eseguire il disassemblaggio standard, i messaggi contenuti in un interscambio vengono estratti, elaborati dalla pipeline di ricezione, ne viene eseguito il mapping e infine vengono pubblicati come unità di lavoro transazionale. Ciò significa che l'intero interscambio e i messaggi in esso contenuti vengono elaborati completamente e pubblicati nel database MessageBox oppure che l'interscambio viene inserito nella coda degli elementi sospesi.
Modalità reversibile. Quando il componente disassembler di una pipeline di ricezione è configurato per eseguire l'elaborazione dell'interscambio recuperabile, i messaggi contenuti in un interscambio vengono estratti in modo indipendente tra loro. I messaggi correttamente estratti vengono propagati lungo la pipeline di ricezione. I messaggi identificati nell'interscambio ma non correttamente estratti vengono inseriti nella coda degli elementi sospesi.
Esempio
Negli esempi seguenti vengono illustrati alcuni scenari di elaborazione degli interscambi.
Esempio 1
In questo esempio il seguente pseudointerscambio viene inviato a un indirizzo di ricezione interscambio standard. Il componente disassembler nella pipeline di ricezione è configurato per l'elaborazione di interscambio standard.
<Interchange>
<Document1>...</Document1>
<Document2 failure=”routing”>...</Document2>
<Document3>...</Document3>
<Document4 failure=”pipeline” recoverableError=”true”>...</Document4>
<Document5>...</Document5>
</Interchange>
Questo interscambio contiene cinque messaggi, tutti correttamente estratti dall'interscambio dal disassembler. I messaggi vengono elaborati come descritto di seguito:
Il primo, il secondo e il terzo messaggio vengono propagati lungo la pipeline e sono pronti per la pubblicazione.
Durante l'elaborazione del quarto messaggio si verificano errori nella pipeline in fase di disassemblaggio. Viene pertanto eseguito il rollback di tutti i messaggi già elaborati e il messaggio di interscambio originale viene sospeso come ripristinabile.
Di seguito è riportato il risultato dell'invio:
Non viene pubblicato nulla. L'interscambio originale viene sospeso perché, quando a un certo punto dell'elaborazione di interscambio standard si verificano errori per uno dei messaggi estratti, tutti i messaggi estratti vengono eliminati e l'interscambio originale viene inserito nella coda degli elementi sospesi come ripristinabile.
Esempio 2
Nell'esempio viene utilizzato lo stesso scenario di elaborazione di interscambio e propagazione dell'esempio precedente, con la differenza che la fase di disassemblaggio è configurata in modo da eseguire l'elaborazione di interscambio reversibile.
Il risultato dell'invio sarà che i singoli messaggi estratti verranno elaborati e l'interscambio originale verrà eliminato. I singoli messaggi vengono elaborati come descritto di seguito:
Il primo, il secondo e il terzo messaggio vengono propagati lungo la pipeline e sono pronti per la pubblicazione.
Il quarto messaggio non supera l'elaborazione di disassemblaggio, ovvero si verifica un errore dopo l'estrazione, e viene sospeso.
Il quinto messaggio viene propagato lungo la pipeline ed è pronto per la pubblicazione.
Dopo l'estrazione di tutti i messaggi dall'interscambio, i messaggi 1, 2, 3 e 5 vengono pubblicati nel database MessageBox mentre il messaggio 4 viene inserito nella coda degli elementi sospesi. Anche il messaggio 2 viene reindirizzato alla coda degli elementi sospesi a causa di un errore di routing dovuto all'assenza di un sottoscrittore corrispondente.
Configurazione dell'elaborazione di interscambio reversibile
L'elaborazione di interscambio reversibile è una proprietà del componente disassembler di una pipeline di ricezione. Non tutti i componenti disassembler consentono di specificare l'elaborazione di interscambio reversibile, ad esempio, il disassembler nativo di BizTalk Framework non lo consente. Se un disassembler supporta l'elaborazione dell'interscambio recuperabile, specificare questo comportamento in Pipeline Designer all'interno di Visual Studio quando si aggiunge il componente disassembler alla fase disassemble della pipeline progettata. Dopo aver trascinato il disassembler selezionato nella fase Disassemble della pipeline, impostare la proprietà di elaborazione dell'interscambio recuperabile del componente disassembler su true
.
Risoluzione entità
L'entità di trasmissione dei messaggi correttamente estratti durante l'elaborazione di interscambio reversibile viene identificata in base all'entità configurata per la porta di ricezione alla quale è arrivato l'interscambio padre. Se per un messaggio estratto da un determinato interscambio la risoluzione delle entità ha esito negativo, viene considerata errata per l'intero scambio.
Restrizioni
Quando per un interscambio si verifica un errore nel disassembler, l'interscambio viene sospeso come ripristinabile. Se tuttavia l'interscambio viene ripristinato a livello amministrativo, verrà generato nuovamente un errore in quanto questi tipi di errori che causano l'errato disassemblaggio derivano esclusivamente dal contesto dell'interscambio, che rimane identico anche quando l'interscambio viene ripristinato. È necessario modificare e inviare nuovamente tramite un indirizzo di ricezione l'interscambio per il quale è stato generato l'errore.
Se un messaggio correttamente estratto da un interscambio non viene in seguito propagato lungo la pipeline di messaggistica a causa dell'impossibilità di trovare un sottoscrittore corrispondente, verrà sospeso come ripristinabile. Sarà possibile ripristinare il messaggio a livello amministrativo se viene risolta la causa dell'errore di routing.
L'estrazione dei messaggi da un interscambio continua malgrado i seguenti errori nei componenti disassembler:
Schema non trovato
Ambiguità di schema non risolta (esiste più di uno schema per lo stesso tipo di messaggio)
Convalida XML non riuscita
Analisi del file flat non riuscita
Il componente disassembler non continua a estrarre messaggi da un interscambio se si verifica l'errore seguente nei componenti del disassembler:
- I dati del documento non sono in XML ben formato: una qualsiasi proprietà del documento causerebbe un errore di System.Xml.XmlReader
Vedere anche
Come configurare il componente della pipeline del disassembler XML
Come configurare il componente pipeline del disassembler file flat