共用方式為


如何:分割交換,並使用不同路線將產生的訊息路由至多個檔案位置

目標

本節示範如何建立使用 RoutingySelectReceiveXml 管線的 ESB On-Ramp,以及如何設定管線的元件來分割輸入交換,並根據訊息內容為每個產生的訊息選取適當的傳閱名單。 路線選擇將會使用商務規則原則來解決,而訊息會根據客戶所在的區域以不同的方式路由傳送。

在此操作說明主題中,您將完成下列步驟:

  • 建立可分割 XML 交換的 ESB 上斜線。

  • 設定路線選取器管線元件,以使用商務規則原則來選取適當的路線。

必要條件

本操作說明主題中的程式需要完成 開發活動的必要條件

開始之前

請先完成下列工作,再執行本操作說明主題稍後的步驟:

  • 建立必要的成品。

  • 將架構專案新增至 Patterns 方案。

  • 將成品新增至架構專案。

  • 建立 BRE 原則,以使用自訂訊息屬性來選取路線。

  • 為客戶 GlobalBank West 新增選取規則。

  • 為客戶 GlobalBank East 新增選取規則。

  • 發佈和部署原則。

  • 建立全域銀行西部訊息的 ESB 路線特定語言 (DSL) 模型。

  • 設定 GlobalBank West 路線的屬性。

  • 定義 GlobalBank West 路線的結構。

  • 將 GlobalBank West 模型匯出至路線資料庫。

  • 建立 GlobalBank East 訊息的 ESB 路線 DSL 模型。

  • 設定 GlobalBank East 路線的屬性。

  • 定義 GlobalBank East 路線的結構。

  • 將 GlobalBank East 模型匯出至路線資料庫。

    下列程式描述如何執行這些動作。

若要建立必要的成品

  1. 在 Windows 檔案總管中,流覽至 C:\HowTos。

  2. 建立名為 OrderDocEnvelope.xsd 的新文字檔。

  3. 在記事本中開啟 OrderDocEnvelope.xsd 架構。

  4. 使用下列程式碼編輯檔。

    <?xml version="1.0" ?>  
    <xs:schema xmlns:ns0="http://globalbank.esb.dynamicresolution.com/northamericanservices/" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" xmlns="http://ESB.BizUnit.Map.Test" targetNamespace="http://ESB.BizUnit.Map.Test" xmlns:xs="http://www.w3.org/2001/XMLSchema">  
    
      <xs:import schemaLocation="GlobalBank.ESB.DynamicResolution.Schemas.NAOrderDoc" namespace="http://globalbank.esb.dynamicresolution.com/northamericanservices/" />  
      <xs:annotation>  
        <xs:appinfo>  
          <b:schemaInfo is_envelope="yes" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" />  
          <b:references>  
            <b:reference targetNamespace="http://globalbank.esb.dynamicresolution.com/northamericanservices/" />  
          </b:references>  
        </xs:appinfo>  
      </xs:annotation>  
      <xs:element name="OrderEnvelope">  
        <xs:annotation>  
          <xs:appinfo>  
            <b:recordInfo body_xpath="/*[local-name()='OrderEnvelope' and namespace-uri()='http://ESB.BizUnit.Map.Test']" />  
          </xs:appinfo>  
        </xs:annotation>  
        <xs:complexType>  
          <xs:sequence>  
            <xs:element ref="ns0:OrderDoc" />  
          </xs:sequence>  
        </xs:complexType>  
      </xs:element>  
    </xs:schema>  
    
  5. 將 OrderDocEnvelope.xsd 儲存為 UTF-8,然後關閉 [記事本]。

  6. 在 C:\HowTos 資料夾中,建立名為 Batch.xml 的新文字檔。

  7. 在 [記事本] 中,開啟 Batch.xml。

  8. 使用下列程式碼編輯檔。

    <?xml version="1.0" ?>  
    <ns0:OrderEnvelope xmlns:ns0="http://ESB.BizUnit.Map.Test">  
      <ns0:OrderDoc xmlns:ns0="http://globalbank.esb.dynamicresolution.com/northamericanservices/">  
        <ns0:customerName>GlobalBankWest</ns0:customerName>  
        <ns0:ID>ns0:ID_0</ns0:ID>  
        <ns0:requestType>10</ns0:requestType>  
      </ns0:OrderDoc>  
      <ns0:OrderDoc xmlns:ns0="http://globalbank.esb.dynamicresolution.com/northamericanservices/">  
        <ns0:customerName>GlobalBankEast</ns0:customerName>  
        <ns0:ID>ns0:ID_0</ns0:ID>  
        <ns0:requestType>11</ns0:requestType>  
      </ns0:OrderDoc>  
      <ns0:OrderDoc xmlns:ns0="http://globalbank.esb.dynamicresolution.com/northamericanservices/">  
        <ns0:customerName>GlobalBankEast</ns0:customerName>  
        <ns0:ID>ns0:ID_0</ns0:ID>  
        <ns0:requestType>12</ns0:requestType>  
      </ns0:OrderDoc>  
    </ns0:OrderEnvelope>  
    
  9. 儲存並關閉 Batch.xml。

將架構專案新增至 Patterns 方案

  1. 在 Visual Studio 中,開啟 C:\HowTos\Patterns\Patterns.sln。

  2. 在方案總管中,以滑鼠右鍵按一下 [方案 'Patterns'],指向 [新增],然後按一下 [新增專案]。

  3. 在 [ 新增專案 ] 對話方塊的 [專案類型] 窗格中,按一下 [BizTalk 專案],然後執行下列動作:

    1. 在 [範本] 窗格中,按一下 [空白] BizTalk Server [專案]。

    2. 在 [ 名稱] 方塊中,輸入 Patterns.Schemas,然後按一下 [ 確定]。

  4. 在 方案總管中,以滑鼠右鍵按一下[Patterns.Schemas],然後按一下 [屬性]。

  5. 在屬性視窗的 [簽署] 索引標籤上,選取 [簽署元件] 核取方塊。

  6. 在 [選擇強式名稱金鑰檔案] 下拉式清單中,按一下 [< 新增... >]。

  7. 在 [ 建立強式名稱金鑰 ] 對話方塊中,設定下列屬性:

    1. 在 [ 金鑰檔案名] 方塊 中,輸入 [分割]。

    2. 清除 [ 使用密碼保護我的金鑰檔案 ] 核取方塊,然後按一下 [ 確定]。

  8. 在 [屬性視窗] 的 [部署] 索引標籤的 [應用程式名稱] 方塊中,輸入Microsoft.Practices.ESB

  9. 關閉 [屬性] 視窗。

將成品新增至架構專案

  1. 在 方案總管中,以滑鼠右鍵按一下[Patterns.Schemas],然後按一下 [新增參考]。

  2. 在 [新增參考]對話方塊的 [流覽] 索引標籤上,流覽至並選取 [C:\Projects\Microsoft.Practices.ESB\Source\Samples\DynamicResolution\Source\ESB.DynamicResolution.Schemas\bin\Debug\GlobalBank.ESB.DynamicResolution.Schemas.dll],然後按一下 [確定]。

  3. 在 方案總管中,以滑鼠右鍵按一下[Patterns.Schemas],指向 [新增],然後按一下 [現有專案]。

  4. 在 [ 新增現有專案 ] 對話方塊中,流覽至 C:\HowTos\OrderDocEnvelope.xsd,然後按一下 [ 新增]。

  5. 儲存所有解決方案成品。

  6. 在方案總管中,以滑鼠右鍵按一下[Patterns.Schemas],然後按一下 [部署]。

    注意

    本操作說明主題使用與 如何:使用商務規則原則選取路線 主題中所建立的相同商務規則原則和路線。 如果您尚未完成該區段,請完成下列其他步驟。 如果您已完成該區段,請直接移至 [步驟] 區段。

若要建立商務規則引擎 (BRE) 原則,以使用自訂訊息屬性選取路線

  1. 按一下工作列上的 [開始],指向 [所有程式],指向[BizTalk Server],然後按一下 [商務規則編輯器]。

  2. 在 [原則總管] 中,以滑鼠右鍵按一下 [ 原則],然後按一下 [ 新增原則]。 將原則命名為 ResolveItineraryBasedOnCustomer

新增客戶 GlobalBank West 的選取規則

  1. ResolveItineraryBasedOnCustomer 原則中,以滑鼠右鍵按一下 [版本 1.0] (未儲存) ,然後按一下 [ 新增規則]。 將規則命名為 SetGlobalBankWestItinerary

  2. 在 [事實總管] 中,按一下 [ XML 架構] 索引標籤,以滑鼠右鍵按一下 [ 架構],然後按一下 [ 流覽]。

  3. 在 [ 架構檔案 ] 對話方塊中,流覽至 C:\Projects\Microsoft.Practices.ESB\Source\Samples\DynamicResolution\Source\ESB。DynamicResolution.Schemas,選取 NAOrderDoc.xsd,然後按一下 [ 開啟]。

    注意

    這是定義 NAOrderDoc.xml 訊息的架構,用來建立您將用於測試的西部和東部訊息。

  4. 在 [事實總管] 中,按一下 [NAOrderDoc.xsd],按一下 [屬性] 窗格中的 [檔案類型 ] 屬性,然後輸入 GlobalBank.ESB.DynamicResolution.Schemas.NAOrderDoc

    注意

    這是架構的完整名稱。

  5. 在 [事實總管] 中,展開 [NAOrderDoc.xsd],然後展開 [OrderDoc]。

  6. 在 [規則] 視窗中,以滑鼠右鍵按一下 [ 條件],指向 [ 述詞],然後按一下 [ 等於]。

  7. 從 [事實總管] 中,將customerName元素拖曳至[條件] 下的argument1節點。

  8. 按一下 argument2 節點,然後輸入 GlobalBankWest

  9. 在 [事實總管] 中,按一下 [ 詞彙] 索引卷 標。展開 ESB。路線 詞彙,展開 [版本 1.1],然後將 [ 設定路線名稱 ] 定義拖曳至 [動作]。

  10. 按一下< 空字串 >,然後輸入GlobalBankWestItinerary

    注意

    稍後在本操作說明主題中,您將建立此路線來處理 GlobalBank West 的訊息。

新增客戶 GlobalBank East 的選取規則

  1. 在 [原則總管] 中,以滑鼠右鍵按一下 SetGlobalBankWestItinerary 規則,然後按一下 [ 複製]。

  2. 以滑鼠右鍵按一下 [版本 1.0] (未儲存) ,然後按一下 [ 貼上]。

  3. 在 [ 新增規則名稱] 對話方塊中,輸入 SetGlobalBankEastItinerary,然後按一下 [ 確定]。

  4. 在 [原則總管] 中,按一下 SetGlobalBankEastItinerary 規則。

  5. 在 [ 條件] 區段中,以滑鼠右鍵按一下 GlobalBankWest,然後按一下 [ 重設引數]。

  6. 按一下 argument2,然後輸入 GlobalBankEast

  7. 在 [ 動作] 區段中,以滑鼠右鍵按一下 GlobalBankWestItinerary,然後按一下 [ 重設引數]。

  8. 按一下< 空字串 >,然後輸入GlobalBankEastItinerary。

    注意

    稍後在本操作說明主題中,您將建立此路線來處理 GlobalBank East 的訊息。

發佈和部署原則

  1. 在 [原則總管] 的 ResolveItineraryBasedOnCustomer 原則下,按一下 [ 版本 1.0] (未儲存) ,然後按一下 [ 發佈]。

  2. 在 [原則總管] 的 ResolveItineraryBasedOnCustomer 原則下,按一下 [版本 1.0 - 已發佈],然後按一下 [ 部署]。

建立 GlobalBank West 訊息的 ESB 路線 DSL 模型

  1. Visual Studio中,開啟 C:\HowTos\Patterns\Patterns.sln。

  2. 在方案總管中,以滑鼠右鍵按一下[行程][程式庫] 專案,指向 [新增],然後按一下 [新增路線]。

  3. 在 [ 新增專案 ] 對話方塊的 [範本] 窗格中,按一下 [路線][Dsl]。

  4. 在 [ 名稱] 方塊中,輸入 GlobalBankWestItinerary,然後按一下 [ 新增]。

設定 GlobalBank West 路線的屬性

  1. 在 Visual Studio 中,按一下 GlobalBankWestItinerary.行程的設計介面。 在GlobalBankWestItinerary屬性視窗中,設定下列屬性:

    1. 在 [ 模型匯出工具] 下拉式清單中,按一下 [資料庫路線匯出工具]。

    2. 按一下 [路線資料庫 ] 屬性旁的省略號按鈕 (...) 。

    3. 在 [連線屬性] 對話方塊中,選擇裝載路線存放庫資料庫的SQL Server,然後指定資料庫的名稱, (預設名稱為EsbItineraryDb) 。

  2. 在 [ 路線狀態 ] 下拉式清單中,按一下 [已部署]。

    注意

    此步驟可讓您將路線匯出至中央存放庫;收到訊息時,可以從此存放庫選取並附加路線。 您稍後會設定路線選取器管線元件,以使用 BRI 解析程式來評估輸入訊息,並從此存放庫選取適當的路線。

定義 GlobalBank West 路線的結構

  1. 從 [工具箱] 中,將 On-Ramp 模型專案拖曳至設計介面。 在OnRamp1屬性視窗中,設定下列屬性:

    1. 按一下 [名稱] 屬性,然後輸入 ReceiveNAOrder

    2. 在 [ 擴充器] 下拉式清單中,按一下 [ On-Ramp ESB 服務延伸模組]。

    3. [BizTalk 應用程式 ] 下拉式清單中,按一下 [Microsoft.Practices.ESB]。

    4. 在 [ 接收埠 ] 下拉式清單中,按一下 [OnRamp.行程]。

  2. 從 [工具箱] 中,將 Off-Ramp 模型專案拖曳至設計介面,然後將它放在 ReceiveNAOrder 模型元素的右邊。 在OffRamp1屬性視窗中,設定下列屬性:

    1. 按一下 [名稱] 屬性,然後輸入 SendNAOrder

    2. 在 [ 擴充器] 下拉式清單中,按一下 [ 下拉式 ESB 服務延伸模組]。

    3. [BizTalk 應用程式 ] 下拉式清單中,按一下 [GlobalBank.ESB]。

    4. 在 [ 傳送埠 ] 下拉式清單中,按一下 [DynamicResolutionOneWay]。

  3. 從 [工具箱] 中,將 [行程服務 ] 模型專案拖曳至設計介面,然後將它放在 ReceiveNAOrder 模型元素與 SendNAOrder 模型元素之間。 在 [ItineraryService1 屬性] 視窗中,設定下列屬性:

    1. 按一下 [名稱] 屬性,然後輸入 RouteMessage

    2. 在 [ 路線服務延伸模組 ] 下拉式清單中,按一下 [ 下拉式路線服務延伸模組]。

    3. 在 [ 關閉坡形 ] 下拉式清單中,展開 [SendNAOrder],然後按一下 [ 傳送處理常式]。

  4. 以滑鼠右鍵按一下RouteMessage模型專案的Resolver集合,然後按一下 [新增解析程式]。 在Resolver1屬性視窗中,設定下列屬性:

    1. 按一下 [名稱] 屬性,然後輸入 StaticResolver

    2. 在 [ 解析程式實作 ] 下拉式清單中,按一下 [靜態解析程式延伸模組]。

    3. 在 [ 傳輸名稱] 下拉式清單中,按一下 [檔案]。

    4. 按一下 [傳輸位置] 屬性,然後輸入 C:\HowTos\Out\West%MessageID%.xml

  5. 在 [工具箱] 中,按一下 [連接器]。 將 連線從 ReceiveNAOrder 模型專案拖曳至 RouteMessage 模型專案。

  6. 在 [工具箱] 中,按一下 [連接器]。 將 連線從 RouteMessage 模型專案拖曳至 SendNAOrder 模型專案。

將 GlobalBank West 模型匯出至路線資料庫

  1. 在 Visual Studio 中,以滑鼠右鍵按一下 GlobalBankWestItinerary 路線的設計介面,然後按一下 [ 匯出模型]。

    注意

    路線已匯出至路線資料庫,現在可以由 [路線選取器] 元件使用。

  2. 儲存所有專案成品。

建立 GlobalBank East 訊息的 ESB 路線 DSL 模型

  1. Visual Studio中,開啟 C:\HowTos\Patterns.sln。

  2. 在方案總管中,以滑鼠右鍵按一下[行程][程式庫] 專案,指向 [新增],然後按一下 [新增路線]。

  3. 在 [ 新增專案 ] 對話方塊的 [範本] 窗格中,按一下 [路線][Dsl]。

  4. 在 [ 名稱] 方塊中,輸入 GlobalBankEastItinerary,然後按一下 [ 新增]。

設定 GlobalBank 東部路線的屬性

  1. 在 Visual Studio 中,按一下 GlobalBankEastItinerary.行程的設計介面。 在GlobalBankEastItinerary屬性視窗中,設定下列屬性:

    1. 在 [ 模型匯出工具] 下拉式清單中,按一下 [資料庫路線匯出工具]。

    2. 按一下 [路線資料庫 ] 屬性旁的省略號按鈕 (...) 。

    3. 在 [連線屬性] 對話方塊中,選擇裝載路線存放庫資料庫的SQL Server,然後指定資料庫的名稱, (預設名稱為EsbItineraryDb) 。

  2. 在 [ 路線狀態 ] 下拉式清單中,按一下 [已部署]。

    注意

    此步驟可讓您將路線匯出至中央存放庫;收到訊息時,可以從此存放庫選取並附加路線。 您稍後會設定路線選取器管線元件,以使用 BRI 解析程式來評估輸入訊息,並從此存放庫選取適當的路線。

定義 GlobalBank East 路線的結構

  1. 從 [工具箱] 中,將 On-Ramp 模型專案拖曳至設計介面。 在OnRamp1屬性視窗中,設定下列屬性:

    1. 按一下 [名稱] 屬性,然後輸入 ReceiveNAOrder

    2. 在 [ 擴充器] 下拉式清單中,按一下 [ On-Ramp ESB 服務延伸模組]。

    3. [BizTalk 應用程式 ] 下拉式清單中,按一下 [Microsoft.Practices.ESB]。

    4. 在 [ 接收埠 ] 下拉式清單中,按一下 [OnRamp.行程]。

  2. 從 [工具箱] 中,將 Off-Ramp 模型專案拖曳至設計介面,然後將它放在 ReceiveNAOrder 模型元素的右邊。 在OffRamp1屬性視窗中,設定下列屬性:

    1. 按一下 [名稱] 屬性,然後輸入 SendNAOrder

    2. 在 [ 擴充器] 下拉式清單中,按一下 [ 下拉式 ESB 服務延伸模組]。

    3. [BizTalk 應用程式 ] 下拉式清單中,按一下 [GlobalBank.ESB]。

    4. 在 [ 傳送埠 ] 下拉式清單中,按一下 [DynamicResolutionOneWay]。

  3. 從 [工具箱] 中,將 [行程服務 ] 模型專案拖曳至設計介面,然後將它放在 ReceiveNAOrder 模型元素與 SendNAOrder 模型元素之間。 在ItineraryService1屬性視窗中,設定下列屬性:

    1. 按一下 [名稱] 屬性,然後輸入 RouteMessage

    2. 在 [ 路線服務延伸模組 ] 下拉式清單中,按一下 [ 下拉式路線服務延伸模組]。

    3. 在 [ 關閉坡形 ] 下拉式清單中,展開 [SendNAOrder],然後按一下 [ 傳送處理常式]。

  4. 以滑鼠右鍵按一下RouteMessage模型專案的Resolver集合,然後按一下 [新增解析程式]。 在Resolver1屬性視窗中,設定下列屬性:

    1. 按一下 [名稱] 屬性,然後輸入 StaticResolver

    2. 在 [ 解析程式實作 ] 下拉式清單中,按一下 [靜態解析程式延伸模組]。

    3. 在 [ 傳輸名稱] 下拉式清單中,按一下 [檔案]。

    4. 按一下 [傳輸位置] 屬性,然後輸入 C:\HowTos\Out\East%MessageID%.xml

  5. 在 [工具箱] 中,按一下 [連接器]。 將 連線從 ReceiveNAOrder 模型專案拖曳至 RouteMessage 模型專案。

  6. 在 [工具箱] 中,按一下 [連接器]。 將 連線從 RouteMessage 模型專案拖曳至 SendNAOrder 模型專案。

將 GlobalBank East 模型匯出至路線資料庫

  1. 在 Visual Studio 中,以滑鼠右鍵按一下 GlobalBankEastItinerary 路線的設計介面,然後按一下 [ 匯出模型]。

    注意

    路線已匯出至路線資料庫,現在可以由 [路線選取器] 元件使用。

  2. 儲存所有專案成品。

步驟

建立及設定 ESB 斜線

  1. 按一下工作列上的 [開始],指向 [所有程式]、指向[BizTalk Server],然後按一下[BizTalk Server系統管理]。

  2. 在 BizTalk Server 管理主控台中,依序展開[BizTalk 群組]、[應用程式] 和[Microsoft.Practices.ESB]。

  3. 以滑鼠右鍵按一下 [接收位置],指向 [ 新增],然後按一下 [單向接收位置]。

  4. 在 [ 選取接收埠 ] 對話方塊中,按一下 [OnRamp.行程],然後按一下 [ 確定]。

  5. 在 [ 接收位置屬性] 對話方塊的 [ 名稱 ] 方塊中,輸入 OnRamp.Itinerary.HowTo

  6. 在 [ 類型 ] 下拉式清單中,按一下 [ 檔案], 然後按一下 [ 設定]。

  7. 在 [ 檔案傳輸屬性] 對話方塊的 [ 接收資料夾 ] 方塊中,輸入 C:\HowTos\DropFolder,然後按一下 [ 確定]。

設定路線選取器管線元件

  1. 在 [接收位置屬性] 對話方塊中,按一下 [接收管線] 下拉式清單中的[行程][選取][ReceiveXml],然後按一下省略號按鈕 (...) 。

  2. 使用 [ 設定管線 ] 對話方塊來設定下列 路線選取器 元件屬性:

    1. 按一下 [行程][FactKey ] 屬性,然後輸入 Resolver.Itinerary

    2. 按一下 ResolverConnectionString 屬性,然後輸入 BRI:\\policy=ResolveItineraryBasedOnCustomer;useMsg=true;recognizeMessageFormat=true;

    3. 按一下 [確定 ] 關閉 [ 設定管線 ] 對話方塊。

      注意

      因為這個接收位置正在反組譯 XML 交換,所以不需要 XML 反組譯程式元件組態。

  3. 按一下 [確定 ] 關閉 [ 接收位置屬性 ] 對話方塊。

  4. 在 BizTalk Server 管理主控台中,以滑鼠右鍵按一下OnRamp.Itinerary.HowTo接收位置,然後按一下 [啟用]。

測試路線選取器和商務規則

  1. 在 Windows 檔案總管中,流覽至 C:\HowTos。

  2. 複製 (不會將) Batch.xml 移至 DropFolder 資料夾。

  3. 流覽至 C:\HowTos\Out。確認一個 West%MessageID%.xml 訊息和兩個 East%MessageID%.xml 訊息已寫入目錄。

    注意

    雖然訊息除了客戶元素的值之外相同,但會根據路線選取器管線元件的解析,使用不同的路線來處理這些訊息。

  4. 在 BizTalk Server 管理主控台中,以滑鼠右鍵按一下 OnRamp.Itinerary.HowTo 接收位置,然後按一下 [停用]。

  5. 停用 OnRamp.Itinerary.HowTo接收位置之後,請以滑鼠右鍵按一下它,然後按一下 [刪除]。 在 [ 確認刪除接收位置] 對話方塊中,按一下 [ ]。

其他資源

如需詳細資訊,請參閱下列相關主題: