共用方式為


步驟 7 (內部部署):建立協調流程

根據商務案例,在BizTalk Server從服務匯流排佇列收到銷售訂單訊息之後,它必須檢查訊息中訂購的數量是否大於 100。 如果數量大於 100,訊息就會插入 SalesOrder 資料表。 否則,訊息會傳送至共用檔案位置。 Northwind 藉由建立協調流程來達成此商務邏輯。 本主題提供如何建立協調流程的逐步指引。

將協調流程新增至BizTalk Server專案

  1. 在您建立的BizTalk Server中,以滑鼠右鍵按一下專案,指向 [新增],然後按一下 [新增專案]。

  2. 在 [ 新增專案 ] 對話方塊中,選取 [BizTalk 協調流程],將對應名稱輸入為 OrderProcessing.odx ,然後按一下 [ 新增]。

建立協調流程的訊息

您稍早產生的架構描述協調流程中訊息所需的「類型」。 訊息通常是變數,這是對應架構所定義的型別。 您現在必須建立協調流程的訊息,並將其連結至您稍早產生的架構。 您必須建立下列三則訊息:

訊息名稱 對應至架構
Message1_SO_Inbound 此訊息是 ECommerceSalesOrder.xsd 架構的實例。
Message2_SO_Inbound 此訊息是 Message1_SO_Inbound的複本。 最佳做法是,您必須建立訊息的複本,然後修改新訊息,讓原始訊息保持不變。 如需詳細資訊,請參閱BizTalk Server訊息
Message1_SO_Outbound 此訊息是 TableOperations.dbo.SalesOrder (Insert) 架構的實例。

建立訊息

  1. 如果 BizTalk 專案尚未開啟,請開啟 [ 協調流程檢視 ] 視窗。 若要這樣做,請按一下 [ 檢視],指向 [其他 Windows],然後按一下 [ 協調流程檢視]。

  2. 在 [協調流程檢視] 中,以滑鼠右鍵按一下 [ 訊息],然後按一下 [ 新增訊息]。

  3. 以滑鼠右鍵按一下新建立的訊息,然後選取 [ 屬性視窗]。

  4. Message_1的 [屬性]窗格中,執行下列動作:

    屬性名稱 執行動作
    識別碼 輸入 Message1_SO_Inbound
    訊息類型 從下拉式清單中展開 [ 架構],然後選取 [OrderProcessingDemo.ECommerceSalesOrder],其中 OrderProcessingDemo 是您 BizTalk 專案的名稱。 ECommerceSalesOrder 是從服務匯流排佇列收到的銷售訂單訊息架構。
  5. 重複步驟以建立具有下列詳細資料的訊息:

    訊息名稱 執行動作
    Message2_SO_Inbound - 將 識別碼 設定為 Message2_SO_Inbound
    - 將 訊息類型 設定為 OrderProcessingDemo.ECommerceSalesOrder
    Message1_SO_Outbound - 將 識別碼 設定為 Message1_SO_Outound
    - 將 訊息類型 設定為 OrderProcessingDemo.TableOperation_dbo_SalesOrder.Insert

將圖形新增至協調流程

協調流程圖形會定義BizTalk Server應用程式的流程。 在本節中,您會將必要的圖形新增至協調流程。

若要將圖形加入至協調流程

  1. 若要從 開始,您必須新增 接收 圖形。 此圖形會從服務匯流排佇列接收傳入銷售訂單訊息。 在接收圖形上設定下列屬性。

    1. [啟動 ] 設定為 [True]。

    2. [訊息 ] 設定為 [Message1_SO_Inbound]。

    3. [名稱 ] 設定為 ReceiveOrder

  2. 如先前所述,您必須建立已接收至協調流程的原始銷售訂單訊息複本。

    1. 建構訊息 圖形拖放到 ReceiveOrder 圖形底下。 由於使用此圖形來建構類型為 Message2_SO_Inbound 的訊息,請將 Messages Constructed 屬性設定為 Message2_SO_Inbound

    2. 建構訊息圖形中新增訊息指派圖形。 按兩下圖形以開啟 [運算式編輯器],然後新增下列專案:

      Message2_SO_Inbound = Message1_SO_Inbound; //copy the message  
      Message2_SO_Inbound(*) = Message1_SO_Inbound(*); //copy the context properties on the message  
      

      按一下 [確定]。

  3. 根據商務案例,訊息必須根據已排序專案的數量傳送至不同的目的地。 因此,您現在必須從傳入銷售訂單訊息擷取數量詞。

    1. 輸入訊息中的 Quantity 元素 (ECommerceSalesOrder.xsd) 包含已排序數量的值。 您必須升級該屬性,讓專案可以在協調流程中的運算式內使用。 若要升級屬性,請開啟 ECommerceSalesOrder.xsd 架構,以滑鼠右鍵按一下 [數量],指向 [ 升級],然後按一下 [ 快速促銷]。

    2. 建立變數來儲存數量詞。 若要建立變數,請從 [協調流程檢視] 中,以滑鼠右鍵按一下 [ 變數],然後按一下 [ 新增變數]。 設定變數的下列屬性:

      屬性名稱
      識別碼 輸入 quantityOrdered
      類型 選取 [Int32]。
    3. 您現在必須將 Quantity 元素中的值指派給 quantityOrdered 變數。 在建構訊息圖形之後拖放運算式編輯器。 開啟編輯器並輸入下列運算式:

      quantityOrdered = Message2_SO_Inbound.Quantity;  
      

      按一下 [確定]。

  4. 擷取訂單數量之後,您現在必須建立決策區塊,在其中配置訊息流程所採用的兩個不同的路徑。 您可以藉由新增 [ 決定 ] 圖形,在協調流程中建立決策區塊。

    1. 拖放 [運算式編輯器] 圖形之後的[決定] 圖形。

    2. 選取 Rule_1圖形, 然後在 [ 屬性 ] 視窗中指定下列專案:

      屬性名稱
      識別碼 輸入 Yes注意:一個路由預設為 Else。
      運算式 輸入 quantityOrdered > 100

      您現在有兩個可用的路由。 如果 quantityOrdered 變數中的值大於 100,則訊息會採用 [是 ] 路由。 否則,它會採用 Else 路由。 您現在必須定義每個路由內要執行的動作。

  5. 根據商務案例,如果訂單數量大於 100,則必須將訊息插入 SalesOrder 資料表中。 因此,在 [是 ] 路由中,您必須將 ECommerceSalesOrder.xsd 架構轉換成 TableOperations.SalesOrder.Insert 架構。 您已在 步驟 5 (內部部署) :在 SalesOrder 資料表中插入訊息的架構主題中建立插入架構。 轉換架構之後,您必須將訊息傳送至訊息給SQL Server資料庫資料表。

    1. [是 ] 路由內,拖放 建構訊息 圖形。 將圖形的 Messages Constructed 屬性設定為 Message1_SO_Outbound

    2. [建構訊息] 圖形內新增 轉換 圖形。 按兩下圖形以開啟 [ 轉換組態 ] 對話方塊。 執行下列動作:

      1. 選取 [現有對應] 選項。

      2. 從 [ 完整對應名稱] 下拉式清單中,選取 [OrderProcessingDemo.SalesOrder_SQL]。

      3. 針對 [來源],選取 [Message2_SO_Inbound]。

      4. 針對 [目的地],選取 [Message1_SO_Outound]。

    3. 建構訊息圖形之後,拖放[傳送] 圖形,並將圖形的Message屬性設定為 Message1_SO_Outbound

  6. 根據商務案例,如果訂單數量小於 100,訊息必須傳送至共用檔案位置。 因此,在 Else 路由中,您必須新增傳送圖形。

    1. Else 路由內,拖放 [傳送 ] 圖形,並將圖形的 Message 屬性設定為 Message2_SO_Inbound

      注意

      您可以將訊息設定為 Message2_SO_Inbound,因為從服務匯流排佇列接收的相同訊息會傳送至檔案位置,而不會進行任何處理。 Message2_SO_Inbound代表服務匯流排佇列所收到的訊息。

將連接埠加入協調流程

埠代表協調流程之訊息的輸入和輸出媒體。 協調流程會使用接收埠來取用訊息,並使用傳送埠來傳送。 在商務案例中,訊息會從一個媒體 (服務匯流排佇列) 接收,然後根據訊息處理傳送至兩個不同的位置 (SQL Server 資料庫或檔案共用) 位置。 因此,您必須在協調流程中建立一個接收埠和兩個傳送埠。

新增埠

  1. [埠] 圖形拖放至[協調流程] Designer的 [埠介面] 窗格,以啟動 [埠設定精靈]。 在 [歡迎] 頁面中按 [下一步]。

  2. 在 [ 埠屬性] 頁面中,將埠命名為 ReceiveSO ,然後按 [下一步]。

  3. 在 [ 選取埠類型 ] 頁面中,選取 [ 建立新的埠類型 ] 選項,選取 [單向 通訊模式],保留存取限制的預設值,然後按 [ 下一步]。

  4. 在 [ 埠系結 ] 頁面中,針對埠方向,選取 [我一律要在此埠上接收訊息],讓埠保持為預設值,然後按 [ 下一步]。

  5. 在最後一個頁面上,按一下 [ 完成]。

  6. 重複步驟以建立兩個傳送埠。 在建立埠時指定下列值。

    連接埠名稱 屬性
    SendToSQL - 將 名稱 設定為 SendToSQL
    - 選取[建立新的埠類型]
    - 將通訊模式設定為 單向
    - 將埠方向設定為 我一律會在此埠上傳送訊息
    SendToFile - 將 [名稱 ] 設定為 SendToFile
    - 選取[建立新的埠類型]
    - 將通訊模式設定為 單向
    - 將埠方向設定為 我一律會在此埠上傳送訊息

連接埠和訊息圖形

您現在必須連接埠和訊息圖形,才能完成協調流程。 協調流程會在 ReceiveOrder 圖形接收訊息時啟動,協調流程會在兩個傳送圖形傳送訊息時結束。 您必須使用此準則來連接埠和訊息圖形

使用訊息圖形連接埠

  1. ReceiveSO 接收埠連接到 ReceiveOrder 圖形。

  2. 將 [ ] 路由底下的 [傳送] 圖形連接到 SendToSQL 傳送埠。 這表示,如果訊息輸入此路由 (quantityOrdered> 100) ,則會傳送至 SQL Server 資料庫中的SalesOrder資料表。

  3. Else 路由底下的 [傳送] 圖形連接到 SendToFile 傳送埠。 這表示如果訊息輸入此路由 (quantityOrdered< = 100) ,則會傳送至指定的檔案位置。

    協調流程必須如下所示:

    協調流程

另請參閱

教學課程 4:使用 BizTalk Server 2013 建立混合式應用程式