如何:分割交換,並使用不同路線將產生的訊息路由至多個檔案位置
目標
本節示範如何建立使用 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 模型匯出至路線資料庫。
下列程式描述如何執行這些動作。
若要建立必要的成品
在 Windows 檔案總管中,流覽至 C:\HowTos。
建立名為 OrderDocEnvelope.xsd 的新文字檔。
在記事本中開啟 OrderDocEnvelope.xsd 架構。
使用下列程式碼編輯檔。
<?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>
將 OrderDocEnvelope.xsd 儲存為 UTF-8,然後關閉 [記事本]。
在 C:\HowTos 資料夾中,建立名為 Batch.xml 的新文字檔。
在 [記事本] 中,開啟 Batch.xml。
使用下列程式碼編輯檔。
<?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>
儲存並關閉 Batch.xml。
將架構專案新增至 Patterns 方案
在 Visual Studio 中,開啟 C:\HowTos\Patterns\Patterns.sln。
在方案總管中,以滑鼠右鍵按一下 [方案 'Patterns'],指向 [新增],然後按一下 [新增專案]。
在 [ 新增專案 ] 對話方塊的 [專案類型] 窗格中,按一下 [BizTalk 專案],然後執行下列動作:
在 [範本] 窗格中,按一下 [空白] BizTalk Server [專案]。
在 [ 名稱] 方塊中,輸入 Patterns.Schemas,然後按一下 [ 確定]。
在 方案總管中,以滑鼠右鍵按一下[Patterns.Schemas],然後按一下 [屬性]。
在屬性視窗的 [簽署] 索引標籤上,選取 [簽署元件] 核取方塊。
在 [選擇強式名稱金鑰檔案] 下拉式清單中,按一下 [< 新增... >]。
在 [ 建立強式名稱金鑰 ] 對話方塊中,設定下列屬性:
在 [ 金鑰檔案名] 方塊 中,輸入 [分割]。
清除 [ 使用密碼保護我的金鑰檔案 ] 核取方塊,然後按一下 [ 確定]。
在 [屬性視窗] 的 [部署] 索引標籤的 [應用程式名稱] 方塊中,輸入Microsoft.Practices.ESB。
關閉 [屬性] 視窗。
將成品新增至架構專案
在 方案總管中,以滑鼠右鍵按一下[Patterns.Schemas],然後按一下 [新增參考]。
在 [新增參考]對話方塊的 [流覽] 索引標籤上,流覽至並選取 [C:\Projects\Microsoft.Practices.ESB\Source\Samples\DynamicResolution\Source\ESB.DynamicResolution.Schemas\bin\Debug\GlobalBank.ESB.DynamicResolution.Schemas.dll],然後按一下 [確定]。
在 方案總管中,以滑鼠右鍵按一下[Patterns.Schemas],指向 [新增],然後按一下 [現有專案]。
在 [ 新增現有專案 ] 對話方塊中,流覽至 C:\HowTos\OrderDocEnvelope.xsd,然後按一下 [ 新增]。
儲存所有解決方案成品。
在方案總管中,以滑鼠右鍵按一下[Patterns.Schemas],然後按一下 [部署]。
注意
本操作說明主題使用與 如何:使用商務規則原則選取路線 主題中所建立的相同商務規則原則和路線。 如果您尚未完成該區段,請完成下列其他步驟。 如果您已完成該區段,請直接移至 [步驟] 區段。
若要建立商務規則引擎 (BRE) 原則,以使用自訂訊息屬性選取路線
按一下工作列上的 [開始],指向 [所有程式],指向[BizTalk Server],然後按一下 [商務規則編輯器]。
在 [原則總管] 中,以滑鼠右鍵按一下 [ 原則],然後按一下 [ 新增原則]。 將原則命名為 ResolveItineraryBasedOnCustomer。
新增客戶 GlobalBank West 的選取規則
在 ResolveItineraryBasedOnCustomer 原則中,以滑鼠右鍵按一下 [版本 1.0] (未儲存) ,然後按一下 [ 新增規則]。 將規則命名為 SetGlobalBankWestItinerary。
在 [事實總管] 中,按一下 [ XML 架構] 索引標籤,以滑鼠右鍵按一下 [ 架構],然後按一下 [ 流覽]。
在 [ 架構檔案 ] 對話方塊中,流覽至 C:\Projects\Microsoft.Practices.ESB\Source\Samples\DynamicResolution\Source\ESB。DynamicResolution.Schemas,選取 NAOrderDoc.xsd,然後按一下 [ 開啟]。
注意
這是定義 NAOrderDoc.xml 訊息的架構,用來建立您將用於測試的西部和東部訊息。
在 [事實總管] 中,按一下 [NAOrderDoc.xsd],按一下 [屬性] 窗格中的 [檔案類型 ] 屬性,然後輸入 GlobalBank.ESB.DynamicResolution.Schemas.NAOrderDoc。
注意
這是架構的完整名稱。
在 [事實總管] 中,展開 [NAOrderDoc.xsd],然後展開 [OrderDoc]。
在 [規則] 視窗中,以滑鼠右鍵按一下 [ 條件],指向 [ 述詞],然後按一下 [ 等於]。
從 [事實總管] 中,將customerName元素拖曳至[條件] 下的argument1節點。
按一下 argument2 節點,然後輸入 GlobalBankWest。
在 [事實總管] 中,按一下 [ 詞彙] 索引卷 標。展開 ESB。路線 詞彙,展開 [版本 1.1],然後將 [ 設定路線名稱 ] 定義拖曳至 [動作]。
按一下< 空字串 >,然後輸入GlobalBankWestItinerary。
注意
稍後在本操作說明主題中,您將建立此路線來處理 GlobalBank West 的訊息。
新增客戶 GlobalBank East 的選取規則
在 [原則總管] 中,以滑鼠右鍵按一下 SetGlobalBankWestItinerary 規則,然後按一下 [ 複製]。
以滑鼠右鍵按一下 [版本 1.0] (未儲存) ,然後按一下 [ 貼上]。
在 [ 新增規則名稱] 對話方塊中,輸入 SetGlobalBankEastItinerary,然後按一下 [ 確定]。
在 [原則總管] 中,按一下 SetGlobalBankEastItinerary 規則。
在 [ 條件] 區段中,以滑鼠右鍵按一下 GlobalBankWest,然後按一下 [ 重設引數]。
按一下 argument2,然後輸入 GlobalBankEast。
在 [ 動作] 區段中,以滑鼠右鍵按一下 GlobalBankWestItinerary,然後按一下 [ 重設引數]。
按一下< 空字串 >,然後輸入GlobalBankEastItinerary。
注意
稍後在本操作說明主題中,您將建立此路線來處理 GlobalBank East 的訊息。
發佈和部署原則
在 [原則總管] 的 ResolveItineraryBasedOnCustomer 原則下,按一下 [ 版本 1.0] (未儲存) ,然後按一下 [ 發佈]。
在 [原則總管] 的 ResolveItineraryBasedOnCustomer 原則下,按一下 [版本 1.0 - 已發佈],然後按一下 [ 部署]。
建立 GlobalBank West 訊息的 ESB 路線 DSL 模型
在 Visual Studio中,開啟 C:\HowTos\Patterns\Patterns.sln。
在方案總管中,以滑鼠右鍵按一下[行程][程式庫] 專案,指向 [新增],然後按一下 [新增路線]。
在 [ 新增專案 ] 對話方塊的 [範本] 窗格中,按一下 [路線][Dsl]。
在 [ 名稱] 方塊中,輸入 GlobalBankWestItinerary,然後按一下 [ 新增]。
設定 GlobalBank West 路線的屬性
在 Visual Studio 中,按一下 GlobalBankWestItinerary.行程的設計介面。 在GlobalBankWestItinerary屬性視窗中,設定下列屬性:
在 [ 模型匯出工具] 下拉式清單中,按一下 [資料庫路線匯出工具]。
按一下 [路線資料庫 ] 屬性旁的省略號按鈕 (...) 。
在 [連線屬性] 對話方塊中,選擇裝載路線存放庫資料庫的SQL Server,然後指定資料庫的名稱, (預設名稱為EsbItineraryDb) 。
在 [ 路線狀態 ] 下拉式清單中,按一下 [已部署]。
注意
此步驟可讓您將路線匯出至中央存放庫;收到訊息時,可以從此存放庫選取並附加路線。 您稍後會設定路線選取器管線元件,以使用 BRI 解析程式來評估輸入訊息,並從此存放庫選取適當的路線。
定義 GlobalBank West 路線的結構
從 [工具箱] 中,將 On-Ramp 模型專案拖曳至設計介面。 在OnRamp1屬性視窗中,設定下列屬性:
按一下 [名稱] 屬性,然後輸入 ReceiveNAOrder。
在 [ 擴充器] 下拉式清單中,按一下 [ On-Ramp ESB 服務延伸模組]。
在 [BizTalk 應用程式 ] 下拉式清單中,按一下 [Microsoft.Practices.ESB]。
在 [ 接收埠 ] 下拉式清單中,按一下 [OnRamp.行程]。
從 [工具箱] 中,將 Off-Ramp 模型專案拖曳至設計介面,然後將它放在 ReceiveNAOrder 模型元素的右邊。 在OffRamp1屬性視窗中,設定下列屬性:
按一下 [名稱] 屬性,然後輸入 SendNAOrder。
在 [ 擴充器] 下拉式清單中,按一下 [ 下拉式 ESB 服務延伸模組]。
在 [BizTalk 應用程式 ] 下拉式清單中,按一下 [GlobalBank.ESB]。
在 [ 傳送埠 ] 下拉式清單中,按一下 [DynamicResolutionOneWay]。
從 [工具箱] 中,將 [行程服務 ] 模型專案拖曳至設計介面,然後將它放在 ReceiveNAOrder 模型元素與 SendNAOrder 模型元素之間。 在 [ItineraryService1 屬性] 視窗中,設定下列屬性:
按一下 [名稱] 屬性,然後輸入 RouteMessage。
在 [ 路線服務延伸模組 ] 下拉式清單中,按一下 [ 下拉式路線服務延伸模組]。
在 [ 關閉坡形 ] 下拉式清單中,展開 [SendNAOrder],然後按一下 [ 傳送處理常式]。
以滑鼠右鍵按一下RouteMessage模型專案的Resolver集合,然後按一下 [新增解析程式]。 在Resolver1屬性視窗中,設定下列屬性:
按一下 [名稱] 屬性,然後輸入 StaticResolver。
在 [ 解析程式實作 ] 下拉式清單中,按一下 [靜態解析程式延伸模組]。
在 [ 傳輸名稱] 下拉式清單中,按一下 [檔案]。
按一下 [傳輸位置] 屬性,然後輸入 C:\HowTos\Out\West%MessageID%.xml。
在 [工具箱] 中,按一下 [連接器]。 將 連線從 ReceiveNAOrder 模型專案拖曳至 RouteMessage 模型專案。
在 [工具箱] 中,按一下 [連接器]。 將 連線從 RouteMessage 模型專案拖曳至 SendNAOrder 模型專案。
將 GlobalBank West 模型匯出至路線資料庫
在 Visual Studio 中,以滑鼠右鍵按一下 GlobalBankWestItinerary 路線的設計介面,然後按一下 [ 匯出模型]。
注意
路線已匯出至路線資料庫,現在可以由 [路線選取器] 元件使用。
儲存所有專案成品。
建立 GlobalBank East 訊息的 ESB 路線 DSL 模型
在 Visual Studio中,開啟 C:\HowTos\Patterns.sln。
在方案總管中,以滑鼠右鍵按一下[行程][程式庫] 專案,指向 [新增],然後按一下 [新增路線]。
在 [ 新增專案 ] 對話方塊的 [範本] 窗格中,按一下 [路線][Dsl]。
在 [ 名稱] 方塊中,輸入 GlobalBankEastItinerary,然後按一下 [ 新增]。
設定 GlobalBank 東部路線的屬性
在 Visual Studio 中,按一下 GlobalBankEastItinerary.行程的設計介面。 在GlobalBankEastItinerary屬性視窗中,設定下列屬性:
在 [ 模型匯出工具] 下拉式清單中,按一下 [資料庫路線匯出工具]。
按一下 [路線資料庫 ] 屬性旁的省略號按鈕 (...) 。
在 [連線屬性] 對話方塊中,選擇裝載路線存放庫資料庫的SQL Server,然後指定資料庫的名稱, (預設名稱為EsbItineraryDb) 。
在 [ 路線狀態 ] 下拉式清單中,按一下 [已部署]。
注意
此步驟可讓您將路線匯出至中央存放庫;收到訊息時,可以從此存放庫選取並附加路線。 您稍後會設定路線選取器管線元件,以使用 BRI 解析程式來評估輸入訊息,並從此存放庫選取適當的路線。
定義 GlobalBank East 路線的結構
從 [工具箱] 中,將 On-Ramp 模型專案拖曳至設計介面。 在OnRamp1屬性視窗中,設定下列屬性:
按一下 [名稱] 屬性,然後輸入 ReceiveNAOrder。
在 [ 擴充器] 下拉式清單中,按一下 [ On-Ramp ESB 服務延伸模組]。
在 [BizTalk 應用程式 ] 下拉式清單中,按一下 [Microsoft.Practices.ESB]。
在 [ 接收埠 ] 下拉式清單中,按一下 [OnRamp.行程]。
從 [工具箱] 中,將 Off-Ramp 模型專案拖曳至設計介面,然後將它放在 ReceiveNAOrder 模型元素的右邊。 在OffRamp1屬性視窗中,設定下列屬性:
按一下 [名稱] 屬性,然後輸入 SendNAOrder。
在 [ 擴充器] 下拉式清單中,按一下 [ 下拉式 ESB 服務延伸模組]。
在 [BizTalk 應用程式 ] 下拉式清單中,按一下 [GlobalBank.ESB]。
在 [ 傳送埠 ] 下拉式清單中,按一下 [DynamicResolutionOneWay]。
從 [工具箱] 中,將 [行程服務 ] 模型專案拖曳至設計介面,然後將它放在 ReceiveNAOrder 模型元素與 SendNAOrder 模型元素之間。 在ItineraryService1屬性視窗中,設定下列屬性:
按一下 [名稱] 屬性,然後輸入 RouteMessage。
在 [ 路線服務延伸模組 ] 下拉式清單中,按一下 [ 下拉式路線服務延伸模組]。
在 [ 關閉坡形 ] 下拉式清單中,展開 [SendNAOrder],然後按一下 [ 傳送處理常式]。
以滑鼠右鍵按一下RouteMessage模型專案的Resolver集合,然後按一下 [新增解析程式]。 在Resolver1屬性視窗中,設定下列屬性:
按一下 [名稱] 屬性,然後輸入 StaticResolver。
在 [ 解析程式實作 ] 下拉式清單中,按一下 [靜態解析程式延伸模組]。
在 [ 傳輸名稱] 下拉式清單中,按一下 [檔案]。
按一下 [傳輸位置] 屬性,然後輸入 C:\HowTos\Out\East%MessageID%.xml。
在 [工具箱] 中,按一下 [連接器]。 將 連線從 ReceiveNAOrder 模型專案拖曳至 RouteMessage 模型專案。
在 [工具箱] 中,按一下 [連接器]。 將 連線從 RouteMessage 模型專案拖曳至 SendNAOrder 模型專案。
將 GlobalBank East 模型匯出至路線資料庫
在 Visual Studio 中,以滑鼠右鍵按一下 GlobalBankEastItinerary 路線的設計介面,然後按一下 [ 匯出模型]。
注意
路線已匯出至路線資料庫,現在可以由 [路線選取器] 元件使用。
儲存所有專案成品。
步驟
建立及設定 ESB 斜線
按一下工作列上的 [開始],指向 [所有程式]、指向[BizTalk Server],然後按一下[BizTalk Server系統管理]。
在 BizTalk Server 管理主控台中,依序展開[BizTalk 群組]、[應用程式] 和[Microsoft.Practices.ESB]。
以滑鼠右鍵按一下 [接收位置],指向 [ 新增],然後按一下 [單向接收位置]。
在 [ 選取接收埠 ] 對話方塊中,按一下 [OnRamp.行程],然後按一下 [ 確定]。
在 [ 接收位置屬性] 對話方塊的 [ 名稱 ] 方塊中,輸入 OnRamp.Itinerary.HowTo。
在 [ 類型 ] 下拉式清單中,按一下 [ 檔案], 然後按一下 [ 設定]。
在 [ 檔案傳輸屬性] 對話方塊的 [ 接收資料夾 ] 方塊中,輸入 C:\HowTos\DropFolder,然後按一下 [ 確定]。
設定路線選取器管線元件
在 [接收位置屬性] 對話方塊中,按一下 [接收管線] 下拉式清單中的[行程][選取][ReceiveXml],然後按一下省略號按鈕 (...) 。
使用 [ 設定管線 ] 對話方塊來設定下列 路線選取器 元件屬性:
按一下 [行程][FactKey ] 屬性,然後輸入 Resolver.Itinerary。
按一下 ResolverConnectionString 屬性,然後輸入 BRI:\\policy=ResolveItineraryBasedOnCustomer;useMsg=true;recognizeMessageFormat=true;
按一下 [確定 ] 關閉 [ 設定管線 ] 對話方塊。
注意
因為這個接收位置正在反組譯 XML 交換,所以不需要 XML 反組譯程式元件組態。
按一下 [確定 ] 關閉 [ 接收位置屬性 ] 對話方塊。
在 BizTalk Server 管理主控台中,以滑鼠右鍵按一下OnRamp.Itinerary.HowTo接收位置,然後按一下 [啟用]。
測試路線選取器和商務規則
在 Windows 檔案總管中,流覽至 C:\HowTos。
複製 (不會將) Batch.xml 移至 DropFolder 資料夾。
流覽至 C:\HowTos\Out。確認一個 West%MessageID%.xml 訊息和兩個 East%MessageID%.xml 訊息已寫入目錄。
注意
雖然訊息除了客戶元素的值之外相同,但會根據路線選取器管線元件的解析,使用不同的路線來處理這些訊息。
在 BizTalk Server 管理主控台中,以滑鼠右鍵按一下 OnRamp.Itinerary.HowTo 接收位置,然後按一下 [停用]。
停用 OnRamp.Itinerary.HowTo接收位置之後,請以滑鼠右鍵按一下它,然後按一下 [刪除]。 在 [ 確認刪除接收位置] 對話方塊中,按一下 [ 是]。
其他資源
如需詳細資訊,請參閱下列相關主題: