共用方式為


如何使用運算式動態地轉換訊息

您可使用運算式在協調流程中動態地轉換訊息。 XLANG 會公開可從建構訊息圖形內的訊息指派圖形內呼叫的轉換方法。 這是使用 轉換 圖形時呼叫的相同方法,但可讓您使用協調流程內指定的對應,以程式設計方式轉換訊息。 當您進行類型不可知的訊息處理時,這點便會相當有用。 例如,如果您有商務程序需要從一系列對應中選擇,以便根據接收之輸入訊息所提供的參數轉換輸入訊息,可使用「運算式」圖形中的轉換方法來進行,而且同時可維持整體商務程序的完整。

轉換訊息

您可以使用下列範例程式碼,以程式設計方式轉換 訊息指派 圖形中的訊息:

MyMapType = typeof(MyMapName);  
transform(MyOutputMsg) = MyMapType(MyInputMsg);  

在此範例中,MyMapType 宣告為協調流程中 System.Type 類型的變數。 MyMapName 是已經在您的 BizTalk 專案中建立之對應的名稱。 如果您要參考個別 BizTalk 組件中的對應,您便需要在 BizTalk 專案中參考該組件。 MyInputMsg 是來源訊息,而 MyOutputMsg 則是目的訊息。 如果您的對應使用多個來源訊息,您就可以使用下列範例程式碼來轉換這些訊息:

MyMapType = typeof(MyMapName);  
transform(MyOutputMsg) = MyMapType(MyInputMsg1, MyInputMsg2);  

注意

如果您有多個來源訊息,則必須根據在對應中指示的輸入訊息部分編號,將訊息分別依序放置在運算式中。

重要

當動態地轉換「運算式」圖形中的訊息時,建議您在使用者程式碼中寫入快取,以便快取已編譯的對應,然後使用「運算式」圖形中的快取,在執行訊息轉換之前擷取對應。 如果您沒有快取對應,便有可能看到 Common Language Runtime (CLR) 記憶體顯著地成長。 動態對應需要 .NET Runtime 執行程式碼存取檢查,讓 .NET Evidence 物件放置在每個轉換的「大型物件堆積」,而且在協調流程完成之前,都不會處置這個物件。 因此,當有許多這些類型的轉換同時發生時,您便可能會看到記憶體使用的顯著增加,如此也會導致記憶體不足的例外狀況。

另請參閱

協調流程圖形
使用 BizTalk 對應工具建立對應