如何:使用商務規則原則選取路線
目標
本節示範如何建立商務規則,以根據所接收訊息的內容來選取路線,以及如何在一般路線內設定路線選取器管線元件,以呼叫這些規則。 本節說明根據客戶所在的區域,以不同的方式路由傳送訊息的商務案例。
在此操作說明主題中,您將完成下列步驟:
客戶 Global Bank 的西歐和東部部門模型路線。
建立商務規則原則,以用來選取處理要求的路線。
設定路線選取器管線元件,以使用商務規則原則來選取適當的路線。
必要條件
本操作說明主題中的程式需要完成 開發活動的必要條件。
開始之前
請先完成下列工作,再執行本操作說明主題稍後的步驟:
建立 GlobalBank West 測試訊息。
建立 GlobalBank East 測試訊息。
下列程式描述如何執行這些動作。
建立 GlobalBank West 測試訊息
在 Windows 檔案總管中,流覽至 C:\HowTos。
建立 NAOrderDoc.xml 複本,然後將複本命名為 West.xml。
在 [記事本] 中開啟 West.xml,然後將 customerName 元素的值變更為 GlobalBankWest。
將 West.xml 儲存為 UTF-8,然後關閉 [記事本]。
建立 GlobalBank East 測試訊息
在 Windows 檔案總管中,流覽至 C:\HowTos。
建立 NAOrderDoc.xml 複本,然後將複本命名為 East.xml。
在 [記事本] 中開啟 East.xml,然後將 customerName 元素的值變更為 GlobalBankEast。
將 East.xml 儲存為 UTF-8,然後關閉 [記事本]。
步驟
若要建立商務規則引擎 (BRE) 原則,以使用自訂訊息屬性選取路線
按一下工作列上的 [開始],指向 [所有程式],指向[BizTalk Server],然後按一下 [商務規則編輯器]。
在 [原則總管] 中,以滑鼠右鍵按一下 [ 原則],然後按一下 [ 新增原則]。 將原則命名為 ResolveItineraryBasedOnCustomer。
注意
本操作說明主題使用與 如何:使用不同路線將產生的訊息分割至多個檔案位置主題中建立的相同商務規則原則和路線。 如果您已經完成該區段,您可以跳至本主題稍後的「若要建立及設定 ESB 隨選」程式。
新增客戶 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 的訊息。
新增 Customer GlobalBank East 的選取規則
在 [原則總管] 中,以滑鼠右鍵按一下 SetGlobalBankWestItinerary 規則,然後按一下 [ 複製]。
以滑鼠右鍵按一下 [版本 1.0] (未儲存) ,然後按一下 [ 貼上]。
在 [ 新增規則名稱] 對話方塊中,輸入 SetGlobalBankEastItinerary,然後按一下 [ 確定]。
在 [原則總管] 中,按一下 SetGlobalBankEastItinerary 規則。
在 [ 條件] 區段中,以滑鼠右鍵按一下 GlobalBankWest,然後按一下 [ 重設引數]。
按一下 argument2,然後輸入 GlobalBankEast。
在 [ 動作] 區段中,以滑鼠右鍵按一下 GlobalBankWestItinerary,然後按一下 [ 重設引數]。
按一下< 空字串 >,然後輸入GlobalBankEastItinerary。
注意
稍後在操作說明主題中,您將建立此路線來處理 GlobalBank East 的訊息。
發佈和部署原則
在 [原則總管] 的 ResolveItineraryBasedOnCustomer 原則下,以滑鼠右鍵按一下 [版本 1.0] (未儲存) ,然後按一下 [ 發佈]。
在 [原則總管] 的 ResolveItineraryBasedOnCustomer 原則下,以滑鼠右鍵按一下 [版本 1.0 - 已發佈],然後按一下 [ 部署]。
建立全域銀行西部訊息的 ESB 路線特定語言 (DSL) 模型
在 Visual Studio 中,開啟 C:\HowTos\Patterns\Patterns.sln。
在方案總管中,以滑鼠右鍵按一下[行程][程式庫] 專案,指向 [新增],然後按一下 [新增路線]。
在 [ 新增專案 ] 對話方塊的 [範本] 窗格中,按一下 [路線][Dsl]。
在 [ 名稱] 方塊中,輸入 GlobalBankWestItinerary,然後按一下 [ 新增]。
設定 GlobalBank West 路線的屬性
在 Visual Studio 中,按一下 GlobalBankWestItinerary.行程的設計介面。 在GlobalBankWestItinerary屬性視窗中,設定下列屬性:
在 [ 模型匯出工具] 下拉式清單中,按一下 [資料庫路線匯出工具]。
按一下 [路線資料庫 ] 屬性旁的省略號按鈕 (...) 。
在 [連線屬性] 對話方塊中,選擇裝載路線存放庫資料庫的SQL Server,然後指定資料庫的名稱, (預設名稱為EsbItineraryDb) 。
在 [ 路線狀態 ] 下拉式清單中,按一下 [已部署]。
注意
此步驟可讓您將路線匯出至中央存放庫;路線可以在訊息接收時從此存放庫選取並附加。 您稍後會設定路線選取器管線元件,以使用商務規則引擎解析程式 (BRI) 來評估輸入訊息,並從此存放庫選取適當的路線。
定義路線的結構
從 [工具箱] 中,將 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 模型專案。
將模型匯出至路線資料庫
在 Visual Studio 中,以滑鼠右鍵按一下 GlobalBankWestItinerary 路線的設計介面,然後按一下 [ 匯出模型]。
注意
路線已匯出至路線資料庫,現在可以由 [路線選取器] 元件使用。
儲存所有專案成品。
建立 GlobalBank East 訊息的 ESB 路線 DSL 模型
在 Visual Studio 中,開啟 C:\HowTos\Patterns.sln。
在方案總管中,以滑鼠右鍵按一下[行程][程式庫] 專案,指向 [新增],然後按一下 [新增路線]。
在 [ 新增專案 ] 對話方塊的 [範本] 窗格中,按一下 [路線][Dsl]。
在 [ 名稱] 方塊中,輸入 GlobalBankEastItinerary,然後按一下 [ 新增]。
設定 GlobalBank 東部路線的屬性
在 Visual Studio 中,按一下 GlobalBankEastItinerary.行程的設計介面。 在GlobalBankEastItinerary屬性視窗中,設定下列屬性:
在 [ 模型匯出工具] 下拉式清單中,按一下 [資料庫路線匯出工具]。
按一下 [路線資料庫 ] 屬性旁的省略號按鈕 (...) 。
在 [連線屬性] 對話方塊中,選擇裝載路線存放庫資料庫的SQL Server,然後指定資料庫的名稱, (預設名稱為EsbItineraryDb) 。
在 [ 路線狀態 ] 下拉式清單中,按一下 [已部署]。
注意
此步驟可讓您將路線匯出至中央存放庫;收到訊息時,可以從此存放庫選取並附加路線。 您稍後會設定路線選取器管線元件,以使用 BRI 解析程式來評估輸入訊息,並從此存放庫選取適當的路線。
定義路線的結構
從 [工具箱] 中,將 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 模型專案。
將模型匯出至路線資料庫
在 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;
按一下 [確定 ] 關閉 [ 設定管線 ] 對話方塊。
按一下 [確定 ] 關閉 [ 接收位置屬性 ] 對話方塊。
在 BizTalk Server 管理主控台中,以滑鼠右鍵按一下OnRamp.Itinerary.HowTo接收位置,然後按一下 [啟用]。
測試路線選取器和商務規則
在 Windows 檔案總管中,流覽至 C:\HowTos。
複製 (不會將檔案 East.xml 和 West.xml 移至 DropFolder 資料夾) 。
流覽至 C:\HowTos\Out。確認 East%MessageID%.xml 和 West%MessageID%.xml 訊息已寫入目錄。
注意
雖然除了客戶元素的值之外,訊息會根據路線選取器管線元件的解析,使用不同的路線來處理。
在 BizTalk Server 管理主控台中,以滑鼠右鍵按一下OnRamp.Itinerary.HowTo接收位置,然後按一下 [停用]。
停用 OnRamp.Itinerary.HowTo接收位置之後,請以滑鼠右鍵按一下它,然後按一下 [刪除]。 在 [ 確認刪除接收位置] 對話方塊中,按一下 [ 是]。
其他資源
如需詳細資訊,請參閱下列相關主題: