步驟 7 (內部部署):建立協調流程
根據商務案例,在BizTalk Server從服務匯流排佇列收到銷售訂單訊息之後,它必須檢查訊息中訂購的數量是否大於 100。 如果數量大於 100,訊息就會插入 SalesOrder 資料表。 否則,訊息會傳送至共用檔案位置。 Northwind 藉由建立協調流程來達成此商務邏輯。 本主題提供如何建立協調流程的逐步指引。
將協調流程新增至BizTalk Server專案
在您建立的BizTalk Server中,以滑鼠右鍵按一下專案,指向 [新增],然後按一下 [新增專案]。
在 [ 新增專案 ] 對話方塊中,選取 [BizTalk 協調流程],將對應名稱輸入為
OrderProcessing.odx
,然後按一下 [ 新增]。
建立協調流程的訊息
您稍早產生的架構描述協調流程中訊息所需的「類型」。 訊息通常是變數,這是對應架構所定義的型別。 您現在必須建立協調流程的訊息,並將其連結至您稍早產生的架構。 您必須建立下列三則訊息:
訊息名稱 | 對應至架構 |
---|---|
Message1_SO_Inbound | 此訊息是 ECommerceSalesOrder.xsd 架構的實例。 |
Message2_SO_Inbound | 此訊息是 Message1_SO_Inbound的複本。 最佳做法是,您必須建立訊息的複本,然後修改新訊息,讓原始訊息保持不變。 如需詳細資訊,請參閱BizTalk Server訊息。 |
Message1_SO_Outbound | 此訊息是 TableOperations.dbo.SalesOrder (Insert) 架構的實例。 |
建立訊息
如果 BizTalk 專案尚未開啟,請開啟 [ 協調流程檢視 ] 視窗。 若要這樣做,請按一下 [ 檢視],指向 [其他 Windows],然後按一下 [ 協調流程檢視]。
在 [協調流程檢視] 中,以滑鼠右鍵按一下 [ 訊息],然後按一下 [ 新增訊息]。
以滑鼠右鍵按一下新建立的訊息,然後選取 [ 屬性視窗]。
在Message_1的 [屬性]窗格中,執行下列動作:
屬性名稱 執行動作 識別碼 輸入 Message1_SO_Inbound
訊息類型 從下拉式清單中展開 [ 架構],然後選取 [OrderProcessingDemo.ECommerceSalesOrder],其中 OrderProcessingDemo 是您 BizTalk 專案的名稱。 ECommerceSalesOrder 是從服務匯流排佇列收到的銷售訂單訊息架構。 重複步驟以建立具有下列詳細資料的訊息:
訊息名稱 執行動作 Message2_SO_Inbound - 將 識別碼 設定為 Message2_SO_Inbound
- 將 訊息類型 設定為 OrderProcessingDemo.ECommerceSalesOrderMessage1_SO_Outbound - 將 識別碼 設定為 Message1_SO_Outound
- 將 訊息類型 設定為 OrderProcessingDemo.TableOperation_dbo_SalesOrder.Insert
將圖形新增至協調流程
協調流程圖形會定義BizTalk Server應用程式的流程。 在本節中,您會將必要的圖形新增至協調流程。
若要將圖形加入至協調流程
若要從 開始,您必須新增 接收 圖形。 此圖形會從服務匯流排佇列接收傳入銷售訂單訊息。 在接收圖形上設定下列屬性。
將 [啟動 ] 設定為 [True]。
將 [訊息 ] 設定為 [Message1_SO_Inbound]。
將 [名稱 ] 設定為 ReceiveOrder。
如先前所述,您必須建立已接收至協調流程的原始銷售訂單訊息複本。
將 建構訊息 圖形拖放到 ReceiveOrder 圖形底下。 由於使用此圖形來建構類型為 Message2_SO_Inbound 的訊息,請將 Messages Constructed 屬性設定為 Message2_SO_Inbound。
在建構訊息圖形中新增訊息指派圖形。 按兩下圖形以開啟 [運算式編輯器],然後新增下列專案:
Message2_SO_Inbound = Message1_SO_Inbound; //copy the message Message2_SO_Inbound(*) = Message1_SO_Inbound(*); //copy the context properties on the message
按一下 [確定]。
根據商務案例,訊息必須根據已排序專案的數量傳送至不同的目的地。 因此,您現在必須從傳入銷售訂單訊息擷取數量詞。
輸入訊息中的 Quantity 元素 (ECommerceSalesOrder.xsd) 包含已排序數量的值。 您必須升級該屬性,讓專案可以在協調流程中的運算式內使用。 若要升級屬性,請開啟 ECommerceSalesOrder.xsd 架構,以滑鼠右鍵按一下 [數量],指向 [ 升級],然後按一下 [ 快速促銷]。
建立變數來儲存數量詞。 若要建立變數,請從 [協調流程檢視] 中,以滑鼠右鍵按一下 [ 變數],然後按一下 [ 新增變數]。 設定變數的下列屬性:
屬性名稱 值 識別碼 輸入 quantityOrdered
類型 選取 [Int32]。 您現在必須將 Quantity 元素中的值指派給 quantityOrdered 變數。 在建構訊息圖形之後拖放運算式編輯器。 開啟編輯器並輸入下列運算式:
quantityOrdered = Message2_SO_Inbound.Quantity;
按一下 [確定]。
擷取訂單數量之後,您現在必須建立決策區塊,在其中配置訊息流程所採用的兩個不同的路徑。 您可以藉由新增 [ 決定 ] 圖形,在協調流程中建立決策區塊。
拖放 [運算式編輯器] 圖形之後的[決定] 圖形。
選取 Rule_1圖形, 然後在 [ 屬性 ] 視窗中指定下列專案:
屬性名稱 值 識別碼 輸入 Yes
。 注意: 另 一個路由預設為 Else。運算式 輸入 quantityOrdered > 100
。您現在有兩個可用的路由。 如果 quantityOrdered 變數中的值大於 100,則訊息會採用 [是 ] 路由。 否則,它會採用 Else 路由。 您現在必須定義每個路由內要執行的動作。
根據商務案例,如果訂單數量大於 100,則必須將訊息插入 SalesOrder 資料表中。 因此,在 [是 ] 路由中,您必須將 ECommerceSalesOrder.xsd 架構轉換成 TableOperations.SalesOrder.Insert 架構。 您已在 步驟 5 (內部部署) :在 SalesOrder 資料表中插入訊息的架構主題中建立插入架構。 轉換架構之後,您必須將訊息傳送至訊息給SQL Server資料庫資料表。
在 [是 ] 路由內,拖放 建構訊息 圖形。 將圖形的 Messages Constructed 屬性設定為 Message1_SO_Outbound。
在 [建構訊息] 圖形內新增 轉換 圖形。 按兩下圖形以開啟 [ 轉換組態 ] 對話方塊。 執行下列動作:
選取 [現有對應] 選項。
從 [ 完整對應名稱] 下拉式清單中,選取 [OrderProcessingDemo.SalesOrder_SQL]。
針對 [來源],選取 [Message2_SO_Inbound]。
針對 [目的地],選取 [Message1_SO_Outound]。
建構訊息圖形之後,拖放[傳送] 圖形,並將圖形的Message屬性設定為
Message1_SO_Outbound
。
根據商務案例,如果訂單數量小於 100,訊息必須傳送至共用檔案位置。 因此,在 Else 路由中,您必須新增傳送圖形。
在 Else 路由內,拖放 [傳送 ] 圖形,並將圖形的 Message 屬性設定為
Message2_SO_Inbound
。注意
您可以將訊息設定為 Message2_SO_Inbound,因為從服務匯流排佇列接收的相同訊息會傳送至檔案位置,而不會進行任何處理。 Message2_SO_Inbound代表服務匯流排佇列所收到的訊息。
將連接埠加入協調流程
埠代表協調流程之訊息的輸入和輸出媒體。 協調流程會使用接收埠來取用訊息,並使用傳送埠來傳送。 在商務案例中,訊息會從一個媒體 (服務匯流排佇列) 接收,然後根據訊息處理傳送至兩個不同的位置 (SQL Server 資料庫或檔案共用) 位置。 因此,您必須在協調流程中建立一個接收埠和兩個傳送埠。
新增埠
將[埠] 圖形拖放至[協調流程] Designer的 [埠介面] 窗格,以啟動 [埠設定精靈]。 在 [歡迎] 頁面中按 [下一步]。
在 [ 埠屬性] 頁面中,將埠命名為
ReceiveSO
,然後按 [下一步]。在 [ 選取埠類型 ] 頁面中,選取 [ 建立新的埠類型 ] 選項,選取 [單向 通訊模式],保留存取限制的預設值,然後按 [ 下一步]。
在 [ 埠系結 ] 頁面中,針對埠方向,選取 [我一律要在此埠上接收訊息],讓埠保持為預設值,然後按 [ 下一步]。
在最後一個頁面上,按一下 [ 完成]。
重複步驟以建立兩個傳送埠。 在建立埠時指定下列值。
連接埠名稱 屬性 SendToSQL - 將 名稱 設定為 SendToSQL
- 選取[建立新的埠類型]
- 將通訊模式設定為 單向
- 將埠方向設定為 我一律會在此埠上傳送訊息SendToFile - 將 [名稱 ] 設定為 SendToFile
- 選取[建立新的埠類型]
- 將通訊模式設定為 單向
- 將埠方向設定為 我一律會在此埠上傳送訊息
連接埠和訊息圖形
您現在必須連接埠和訊息圖形,才能完成協調流程。 協調流程會在 ReceiveOrder 圖形接收訊息時啟動,協調流程會在兩個傳送圖形傳送訊息時結束。 您必須使用此準則來連接埠和訊息圖形
使用訊息圖形連接埠
將 ReceiveSO 接收埠連接到 ReceiveOrder 圖形。
將 [ 是 ] 路由底下的 [傳送] 圖形連接到 SendToSQL 傳送埠。 這表示,如果訊息輸入此路由 (quantityOrdered> 100) ,則會傳送至 SQL Server 資料庫中的SalesOrder資料表。
將 Else 路由底下的 [傳送] 圖形連接到 SendToFile 傳送埠。 這表示如果訊息輸入此路由 (quantityOrdered< = 100) ,則會傳送至指定的檔案位置。
協調流程必須如下所示: