使用辨別欄位和屬性欄位
辨別欄位是您在協調流程中制定決策或是操控資料時,主要所使用的有用訊息資料。
訊息屬性是資料 (訊息本身的內容) 或「中繼資料」(訊息相關資訊的內容,例如時間戳記或路由資訊)。 您可以使用系統定義的訊息內容屬性或傳輸內容屬性,也可以從屬性結構描述中參考結構描述欄位來定義自己的屬性。 屬性會用於訂閱和相互關聯。
您可以使用 [編輯器] 中的 [ 升級屬性 ] 對話方塊,將架構中的欄位指定為辨別欄位或屬性欄位。 如需詳細資訊,請參閱 升級屬性
您可以使用 DistinguishedField 屬性 (Attribute) 裝飾 .NET 類型中的欄位,將它指定為辨別欄位;或者以 Property 屬性來裝飾,將它指定為屬性 (Property)。
使用辨別欄位
辨別欄位是由訊息中欄位的路徑所參考,並使用句號來分隔訊息名稱、任何包含欄位之記錄的名稱與欄位名稱本身:
MyMessage.MyRecord.MySubrecord.MyDistinguishedField
使用屬性欄位
將某個欄位加入至屬性結構描述之後,您就可以利用程式碼和篩選條件運算式,在協調流程中存取其值。 如需屬性架構的詳細資訊,請參閱 屬性架構。
注意
訊息內容或資料屬性基本上是基礎資料的快捷方式:如果您修改屬性,則會修改資料,反之亦然。
訊息屬性是由訊息名稱所參考,此名稱後面跟隨著以括號包住的命名空間 (結構描述) 及屬性名稱:
MyMessage(Invoice.PropertySchema.InvoiceID)
注意
當您使用保留關鍵字做為架構中的功能變數名稱,並選取 [快速升級] 來升級欄位時,欄位的屬性名稱會變更為 __ < Reserved 關鍵字 > 。 (在屬性 name.) 之前新增雙底線。不過,如果您在協調流程運算式中使用此屬性名稱,在建置協調流程時會收到編譯器錯誤。 若要解決此錯誤,您必須以手動方式,在雙底線前面加上 @。 例如
MyMessage(Invoice.PropertySchema.@__Name) = "Product Name";
屬性集
您也可以將一個訊息的所有內容屬性 (屬性集) 指派給另一個訊息的內容屬性。 若要指派屬性集,只需在兩個訊息名稱之後的括號中放置星號,就和您將屬性放在括號中一樣:
MyMessage2(*)=MyMessage1(*);
將屬性集指派給範例中的 MyMessage2 之後,MyMessage2 中的所有屬性都會包含與 MyMessage1 之屬性相同的值。