2011-09-07 111 views
1

我是BizTalk新手,任何人都可以幫助我解決BizTalk 2010中的以下情形?如何在Biztalk 2010中構建WCF請求消息的消息

在BizTalk業務流程中,需要將消息(xml)作爲參數發送給WCF服務;該服務將因此返回一條消息。如下面的截圖所示。

enter image description here

我的問題,問題是如何構建「SimRequest」的消息,這是從WCF自動生成的消息部分(當我使用「添加生成的項目」的消費WCF),另一個消息部分是'SimResponse'。

這是我的消息賦值形狀的表達式:

varIncomingMessage = msgPI; 

varStringParam = varIncomingMessage.OuterXml; 
varOutMessage.LoadXml("I dont know what should be put here. Hard code the data schema of the SimRequest Message?"); 
msgSimRequest.parameters = varOutMessage; 
msgSimRequest.parameters.msg = varStringParam; 

請讓我知道,如果我的問題不明確,或者您需要從我的更多信息。提前致謝。

Zalan

回答

8

在BizTalk你構造消息任一的一個實例:

  1. 與變換(理想的方式),這意味着創建地圖。當在構造形狀中執行轉換時,它將創建消息的一個實例,或者通過在上面的示例中將其與類似於您所做的相似的賦值構造它,除了它可能更容易做到這一點採用靜態輔助方法。如果您需要將Biztalk消息作爲參數傳遞給該方法,請使用Microsoft.XLANGs.BaseTypes庫中的XLANGMessage類型。您首先需要生成消息模式的.net表示(使用xsd.exe或svcutil.exe),以便使用XLANGPart.RetrieveAs(typeOf(xxx))可以反序列化消息。爲了將消息傳遞出去,您可以使.net方法返回類型XmlDocument,並且只要XML映射到消息模式,BizTalk就會爲您處理轉換。

希望這會有所幫助。

你能告訴我如何在 分配

,除非你使用的XmlDocument類和BizTalk會做一個隱式轉換爲你它類似於你有什麼構造味精的更多細節。

比方說,你有一個名爲SimRequest.xsd模式,並已創建這種類型稱爲MySimRequestMessage的編排消息。

您需要定義一個類型爲System.Xml.XmlDocument的變量來保存XML,我們將其稱爲xmlDocSimRequest

然後在你的作業形態:

xmlDocSimRequest = new System.Xml.XmlDocument(); 
xmlDocSimRequest.LoadXml("<SimRequest xmlns='http://blahblah'>...some data here</SimRequest>"); 

// Cast to your message - it's as simple as 
MySimRequestMessage = xmlDocSimRequest; 

要生成您可以直接在Visual Studio中點擊你的架構文件,然後選擇「生成實例」的XML,這將產生你可以扮演一個基本的XML文件作爲一個起點。注意:要使用上述方法,您需要用您使用的XML中的單引號替換所有雙引號。

+0

嗨,感謝您的快速回復。你能告訴我更多關於如何在作業中構建味精的細節嗎?我上面的表達式不工作...(並且我在代碼中留下了我的問題:) – Zalan

+0

如果選擇變換,我如何將整個輸入消息(xml)轉換爲輸出消息的字段(元素)值? – Zalan

+0

關於你的映射問題 - 你有兩個選擇,在biztalk中使用映射工具或編寫你自己的XSL變換。我更喜歡最後一個。 –