共用方式為


合併 XML 檔

OrderBroker 協調流程所建立的其中一則訊息是更新 SQL Server 歷程記錄資料庫。 此訊息包含訂單訊息以及原始訂單訊息的欄位。 原始訂單在此訊息中顯示為字串。 這會比對資料庫中訂單歷程記錄的數據類型。

無法取得訊息、將它轉換成字串,並將它放在另一則映射的訊息中。 協調流程會使用 Helper 函式 InsertOrderBody,將原始順序訊息新增為字串至基底歷程記錄訊息。

OrderBroker 協調流程會使用映射CSR_OrderRequest_To_SQLHistoryInsert,將訂單訊息轉換成基本歷程訊息。 訂單的信息會顯示為 OrderLog 元素的屬性。 原始訊息會顯示為這個元素的另一個屬性。

InsertOrderBody 方法接受原始順序訊息、基底歷程記錄訊息的自變數,並傳回已完成的記錄訊息。 下列程式代碼顯示將訊息插入為字串的方法部分:

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;  
}  

確認它收到這兩個自變數之後, InsertOrderBody 方法會尋找歷程記錄更新訊息的根節點。 然後,它會建立包含 OriginalMsg 屬性的節點,並將原始順序訊息指派給屬性的值。 此時,節點只會存在。 它還不是元素的一部分。

建立屬性節點之後,方法會尋找會使用 XPath 運算式附加屬性的節點。 找到節點之後,方法會將屬性節點新增至節點的屬性集合。

備註

雖然 OriginalMsg 屬性一開始不存在於基底歷程記錄訊息中,但它當然是在架構中指定的。 您在程式代碼中新增至訊息的 XML 元素,應該在這些訊息的架構中指定。

另請參閱

商務程式管理解決方案的實作重點