共用方式為


如何使用運算式來執行訊息指派

您可使用運算式在協調流程中以各種方式處理訊息。

指稱訊息欄位

您可將欄位名稱附加至訊息名稱,來指稱訊息中的不同欄位,方法如下:

MyMsg.Amount  

在此範例中,MyMsg 是訊息,Amount 是已被識別為 MyMsg 所依據之訊息類型的辨別欄位。

指派至訊息和訊息部分

您可以將訊息直接指派至另一訊息,或將訊息部分直接指派至另一個訊息部分:

MyMsg=IncomingMsg;  
MyMsg.Invoice=IncomingMsg.Invoice;  

在此範例中,Invoice 是以結構描述為依據的訊息部分。

若您想修改已建構的訊息 (例如已接收之訊息) 之屬性,您必須在 [建構訊息] 圖形中,將第一個訊息指派至第二個訊息來建構新訊息,然後在相同的 [建構訊息] 圖形內修改新訊息的屬性。

注意

您不能對訊息欄位進行指稱或指派 (例如 MyMsg.Invoice.MyField),除非這些訊息欄位已經升級;您只能對整個訊息、訊息部分、升級的訊息屬性或辨別欄位進行指稱或指派。

新增訊息部分

您可以使用 XLANGs.BaseTypes.XLANGMessage.AddPart 方法,將其他元件新增至現有的多部分訊息。 若要這樣做,請執行下列動作:

  • 建立 C# 專案,並新增 Microsoft.XLANGs.BaseTypes 的參考。

  • 實作類似於以下的公用類別:

    public class MyAddPartHelper  
    {  
         public static void AddPart(XLANGMessage msg, object part, String partName)  
         {  
              msg.AddPart(part, partName);  
         }  
    }  
    

    Microsoft.XLANGs.BaseTypes.AddPart有三個多載方法:

    public void AddPart(object part, String partName);  
    public void AddPart(XLANGPart part);  
    public void AddPart(XLANGPart part, String partName);  
    
  • 在您的 BizTalk 專案中,新增公用類別的參考,並從協調流程中的Expression圖形呼叫AddPart方法,如下所示:

    MyAddPartHelper.AddPart(myMessage, myStringObject, “StringObject1”);  
    

注意

您無法將非可序列化的物件或自訂格式化物件新增為訊息部分。 使用 AddPart 方法新增其他元件之前,必須先初始化所有靜態元件。 只有在訊息的建構陳述式中,您才可以新增任意部分至此訊息。 不支援在訊息建構陳述式的外面新增其他部分。

擷取訊息部分

您可以使用Microsoft.XLANGs.BaseTypes中的RetrieveAs方法,從現有的多部分訊息擷取訊息元件。 若要這樣做,請執行下列動作:

  • 建立 C# 專案,並新增 Microsoft.XLANGs.BaseTypes 的參考。

  • 實作類似於以下的公用類別:

    Public class MyAddPartHelper  
    {  
         public static Object GetPart(XLANGMessage msg, string sName, Type t)  
         {  
              XLANGPart p =  msg[sName];  
              return p.RetrieveAs(t);  
         }  
         public static Object GetPart(XLANGMessage msg, int partIndex, Type t)  
         {  
               XLANGPart p = msg[partIndex];  
               return p.RetrieveAs(t);  
          }  
    }  
    

    注意

    RetrieveAs方法支援依名稱和索引擷取訊息元件。

  • 在您的 BizTalk 專案中,新增公用類別的參考,並從協調流程中的Expression圖形呼叫GetPart方法,如下所示:

    sPart = (System.String) MyAddPartHelper.GetPart(msg, "StringObject1" , typeof(System.String));  
    //sPart is a type of System.String  
    sPart = (System.String) MyAddPartHelper.GetPart(msg, 1, typeof(System.String));  
    //Retriving the message part with index = 1  
    

訊息部分內容屬性存取

訊息部分的內容與訊息內容不同。 當您將相關聯專案的Property Schema Base屬性設定為PartCoNtextPropertyBase時,可以透過架構編輯器建構訊息元件內容屬性。

存取和訊息屬性類似,都是透過如下的運算式:

Msg.PartName(myPartContextProperty)  

例如:

Str=Msg.PartName(myPartContextProperty); //assumes myPartContextProperty is of type string  

XLANGMessage 內容屬性存取

如果您想要從程式碼存取 XLANGMessage 介面中的訊息屬性,您可以將訊息當做 Microsoft.XLANGs.BaseTypes.XLANGMessage 類型的參數傳遞至運算式圖形的方法,然後使用 Microsoft.XLANGs.BaseTypes.XLANGMessage 方法 SetPropertyValueGetPropertyValue 來達成此目的。 若要這樣做,請執行下列動作:

  • 建立 C# 專案,並新增 Microsoft.XLANGs.BaseTypesMicrosoft.BizTalk.GlobalPropertySchemas 的參考。

  • 使用類似以下的程式碼來存取內容屬性:

    MyMsg.GetPropertyValue(typeof(BTS.MessageID));  
    MyMsg.SetPropertyValue(typeof(MIME.IsMultipartRelated), true);  
    

注意

如果您想要取得或設定自訂內容屬性,您需要新增對屬性結構描述專案的參考,或是新增對組件 (此組件包含 C# 專案中的屬性結構描述) 的參考。

指派至訊息屬性

您可以將某個值指派至訊息屬性:

MyMessage(MySchemaNamespace.MyProperty)=True;  

在BizTalk Server中,您可以參考並指派值給多部分訊息的 MIME 屬性:

Message_Out.MessagePart_1(MIME.FileName)="document.doc";  

注意

BizTalk 訊息是由訊息內容和訊息部分所組成。 您必須先初始化訊息部分,然後才可以取得或設定任何訊息內容屬性,否則您在 XLANG 編譯時會收到錯誤。

另請參閱

在協調流程中使用訊息
在使用者程式碼中建構訊息