共用方式為


如何使用表達式來執行訊息指派

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

參考訊息欄位

您可以將欄位名稱附加到訊息名稱後面,以參照訊息中的辨別欄位,如下所示:

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.BaseTypesRetrieveAs 方法,從現有的多部分訊息擷取訊息元件。 若要這樣做,請執行下列動作:

  • 建立 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  
    

訊息部分的上下文屬性存取

訊息元件具有與訊息內容不同的內容。 當您將相關聯元素的屬性架構基底屬性設定為 PartContextPropertyBase 時,您可以透過架構編輯器建構訊息部分內容屬性。

存取類似於訊息屬性,透過如下的表達式:

Msg.PartName(myPartContextProperty)  

例如:

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

XLANGMessage 上下文屬性存取

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

  • 建立 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 編譯期間收到錯誤。

另請參閱

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