2013-03-18 41 views
1

聲明:我是一個完整的biztalk新手。修改自定義代碼中的Biztalk消息

我需要能夠讀取並潛在地編輯biztalk消息中的4個節點;最好這需要從c#helper類完成,因爲我正在進行服務調用,並且還爲此編寫了單元測試。

我已經把這個類連接起來了,它可以和XLANGMessage類一起工作,我遇到的問題就是在編排中的這一點上,這個消息是一個基於Schema的類型,似乎對我沒有任何幫助修改它。

我已經做了一些閱讀,發現了一些想法,但一直沒有能夠確認這些是否可以從自定義代碼工作。

回答

1

您可以輕鬆地將消息傳入和傳出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有任何問題。

+0

謝謝你澄清引擎處理XLANGMessage和XmlDocument之間的轉換,我將能夠清理我已經很好地知道的代碼。最後還是我錯過了消息分配形狀。 – Phaeze 2013-03-20 21:22:18

+0

不使用通用XmlDocument類型而保留此方法用於僞裝可變性的便利性的任何可能性?我需要首先使用map構造消息,然後修改循環中的節點。 – MarioDS 2014-04-22 07:43:26

1

1寫入一個地圖以變換傳入消息到所需類型

2寫像這樣在輔助部件轉換消息

公共的XmlDocument TransformMessage(XLANGMessage消息)

然後將結果文檔傳遞給message assignment形狀的biztalk消息。

responseMessage = xmlDocument;

如果您pass streams instead of messages around可能會獲得更好的性能。

0

BizTalk消息是不可變的嗎?

然而,一般而言,他們通過創建「糾正」編排並在傳入消息參數上使用傳遞引用選項,可以修改現有消息。