Unione di documenti XML
Uno dei messaggi creati dall'orchestrazione OrderBroker è quello di aggiornare il database di cronologia SQL Server. Questo messaggio contiene i campi del messaggio dell'ordine e il messaggio dell'ordine originale. L'ordine originale viene visualizzato nel messaggio in forma di stringa, corrispondente al tipo di dati relativi alla cronologia degli ordini nel database.
Non è possibile convertire un messaggio in una stringa e inserire tale stringa in un altro messaggio con una mappa. L'orchestrazione usa una funzione helper , InsertOrderBody, per aggiungere il messaggio di ordine originale come stringa al messaggio della cronologia di base.
L'orchestrazione OrderBroker usa la mappa , CSR_OrderRequest_To_SQLHistoryInsert, per convertire il messaggio di ordine nel messaggio della cronologia di base. Le informazioni per un ordine sono visualizzate come attributi di un elemento OrderLog . Anche il messaggio originale viene visualizzato come attributo di questo elemento.
Il metodo InsertOrderBody accetta come argomenti il messaggio di ordine originale, il messaggio della cronologia di base e restituisce il messaggio di cronologia completata. Nel codice riportato di seguito sono illustrate le parti del metodo che inserisce il messaggio come stringa:
public static XmlDocument InsertOrderBody( XmlDocument orderDoc,
XmlDocument historyInsertDoc)
{
...
XmlNode root = historyInsertDoc.FirstChild;
//Create a new attribute.
XmlNode attr = historyInsertDoc.CreateNode(XmlNodeType.Attribute,
"OriginalMsg", root.NamespaceURI);
attr.Value = orderDoc.OuterXml;
try
{
// XPath expression not shown for formatting reasons and
// replaces ".." in the following code
XmlNode destnode = historyInsertDoc.SelectSingleNode("..");
//Add the attribute to the document.
destnode.Attributes.SetNamedItem(attr);
}
...
return historyInsertDoc;
}
Dopo aver verificato la ricezione di entrambi gli argomenti, il metodo InsertOrderBody trova il nodo radice del messaggio di aggiornamento della cronologia. Crea quindi un nodo contenente l'attributo OriginalMsg e assegna il messaggio di ordine originale al valore dell'attributo. A questo punto, il nodo esiste, ma non fa ancora parte di un elemento.
Dopo aver creato il nodo dell'attributo, il metodo individua il nodo a cui assocerà l'attributo mediante un'espressione XPath, quindi aggiunge il nodo dell'attributo all'insieme di attributi del nodo.
Nota
Anche se l'attributo OriginalMsg non esiste inizialmente nel messaggio della cronologia di base, è ovviamente specificato nello schema. Gli elementi XML aggiunti ai messaggi nel codice devono essere specificati negli schemi relativi a tali messaggi.
Vedere anche
Implementazione della soluzione di gestione dei processi di business