聲明:我是一個完整的biztalk新手。修改自定義代碼中的Biztalk消息
我需要能夠讀取並潛在地編輯biztalk消息中的4個節點;最好這需要從c#helper類完成,因爲我正在進行服務調用,並且還爲此編寫了單元測試。
我已經把這個類連接起來了,它可以和XLANGMessage類一起工作,我遇到的問題就是在編排中的這一點上,這個消息是一個基於Schema的類型,似乎對我沒有任何幫助修改它。
我已經做了一些閱讀,發現了一些想法,但一直沒有能夠確認這些是否可以從自定義代碼工作。
聲明:我是一個完整的biztalk新手。修改自定義代碼中的Biztalk消息
我需要能夠讀取並潛在地編輯biztalk消息中的4個節點;最好這需要從c#helper類完成,因爲我正在進行服務調用,並且還爲此編寫了單元測試。
我已經把這個類連接起來了,它可以和XLANGMessage類一起工作,我遇到的問題就是在編排中的這一點上,這個消息是一個基於Schema的類型,似乎對我沒有任何幫助修改它。
我已經做了一些閱讀,發現了一些想法,但一直沒有能夠確認這些是否可以從自定義代碼工作。
您可以輕鬆地將消息傳入和傳出C#helper類。最簡單的方法就是處理輸入參數並返回類型爲System.Xml.XmlDocument的值。 XLANG/s引擎將安全地從XLANGMessage類型轉換爲XmlDocument。
由於您基本上正在創建消息的「新」實例(消息在BizTalk中不可變),因此對輔助類的調用需要在消息賦值形狀中執行,外部Construct形狀構造你原來的信息。
public static XmlDocument UpdateMyMessage(XmlDocument sourceMessage)
{
/* Do stuff to your Message here */
return sourceMessage;
}
要考慮的最佳做法是將所有C#輔助方法聲明爲Static。這將避免在脫水過程中對輔助類的de/serialization有任何問題。
1寫入一個地圖以變換傳入消息到所需類型
或
2寫像這樣在輔助部件轉換消息
公共的XmlDocument TransformMessage(XLANGMessage消息)
然後將結果文檔傳遞給message assignment形狀的biztalk消息。
responseMessage = xmlDocument;
如果您pass streams instead of messages around可能會獲得更好的性能。
BizTalk消息是不可變的嗎?
然而,一般而言,他們通過創建「糾正」編排並在傳入消息參數上使用傳遞引用選項,可以修改現有消息。
謝謝你澄清引擎處理XLANGMessage和XmlDocument之間的轉換,我將能夠清理我已經很好地知道的代碼。最後還是我錯過了消息分配形狀。 – Phaeze 2013-03-20 21:22:18
不使用通用XmlDocument類型而保留此方法用於僞裝可變性的便利性的任何可能性?我需要首先使用map構造消息,然後修改循環中的節點。 – MarioDS 2014-04-22 07:43:26