您可以在協調流程中使用運算式來以各種方式處理訊息。
參考訊息欄位
您可以將欄位名稱附加到訊息名稱後面,以參照訊息中的辨別欄位,如下所示:
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
訊息部分的上下文屬性存取
訊息元件具有與訊息內容不同的內容。 當您將相關聯元素的屬性架構基底屬性設定為 PartContextPropertyBase 時,您可以透過架構編輯器建構訊息部分內容屬性。
存取類似於訊息屬性,透過如下的表達式:
Msg.PartName(myPartContextProperty)
例如:
Str=Msg.PartName(myPartContextProperty); //assumes myPartContextProperty is of type string
XLANGMessage 上下文屬性存取
如果您想要從程式代碼存取 XLANGMessage 介面的訊息屬性,可以將訊息作為一個 Microsoft.XLANGs.BaseTypes.XLANGMessage 類型的參數傳遞至 Expression 形狀中的方法,然後使用 Microsoft.XLANGs.BaseTypes.XLANGMessage 的 SetPropertyValue 和 GetPropertyValue 方法來達成此目的。 若要這樣做,請執行下列動作:
建立 C# 專案,並將參考新增至 Microsoft.XLANGs.BaseTypes 和 Microsoft.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 編譯期間收到錯誤。