共用方式為


如何:使用已知訊息類型的商務規則原則來實作根據訊息內容決定路由

目標

本節示範如何使用商務規則原則,根據部署至 Microsoft BizTalk Server Configuration 資料庫) 的已知訊息類型 (架構內容,建立動態路由傳送訊息的路線。

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

  • 建立商務規則原則,以根據內容路由傳送訊息。

  • 使用 BRE 解析程式建立路線傳閱名單,以動態路由傳送訊息。

  • 使用路線測試用戶端範例應用程式測試路線。

必要條件

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

開始之前

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

  • 建立 GlobalBank West 測試訊息。

  • 建立 GlobalBank East 測試訊息。

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

建立 GlobalBank West 測試訊息

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

  2. 建立 NAOrderDoc.xml 複本,然後將複本命名為 West.xml。

  3. 在 [記事本] 中開啟 West.xml,然後將 customerName 元素的值變更為 GlobalBankWest

  4. 將 West.xml 儲存為 UTF-8,然後關閉 [記事本]。

建立 GlobalBank East 測試訊息

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

  2. 建立 NAOrderDoc.xml 複本,然後將複本命名為 East.xml。

  3. 在 [記事本] 中開啟 East.xml,然後將 customerName 元素的值變更為 GlobalBankEast

  4. 將 East.xml 儲存為 UTF-8,然後關閉 [記事本]。

步驟

若要使用自訂訊息屬性建立要路由的 BRE 原則

此規則會使用客戶的名稱來動態設定用來路由訊息的端點。

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

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

新增客戶 GlobalBank West 的路由規則

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

  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]。EndPointInfo,然後展開 [版本 1.0]。

    注意

    Microsoft BizTalk ESB 工具組包含數個詞彙,可用來建立規則以用於 ESB。 其中一些應該以您自己的詞彙取代或增強。 例如, DynamicRunTimeMaptypes 具有 GlobalBank 範例中提供之地圖的定義。

  10. 從 [事實總管] 中,將 [設定端點輸出傳輸位置 ] 定義拖曳至 [動作]。

  11. 按一下< 空字串 >,然後輸入C:\HowTos\Out\West%MessageID%.xml

  12. 從 [事實總管] 中,將 [設定端點輸出傳輸類型 定義] 拖曳至 [動作]。

  13. 在 [事實總管] 中,展開[ESB]。TransportTypes,展開1.0版,然後將配接器提供者定義拖曳至< 空字串 >

  14. 在 [ 動作 ] 窗格中,展開 [ 配接器提供者] 下拉式清單,然後按一下 [ 檔案]。

新增客戶 GlobalBank East 的路由規則

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

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

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

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

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

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

  7. 在 [ 動作] 區段中,以滑鼠右鍵按一下 C:\HowTos\Out\West%MessageID%.xml,然後按一下 [ 重設引數]。

  8. 按一下< 空字串 >,然後輸入C:\HowTos\Out\East%MessageID%.xml

為未知的客戶新增路由規則

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

  2. 在 [規則] 視窗中,以滑鼠右鍵按一下 [條件],然後按一下 [新增邏輯 AND]。

  3. 在 [規則] 視窗中,以滑鼠右鍵按一下 [AND],指向 [述詞],然後按一下 [NotEqual]。

  4. 在 [事實總管] 中,按一下 [XML 架構] 索引標籤,展開 [NAOrderDoc.xsd],然後展開 [OrderDoc]。

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

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

  7. 在 [規則] 視窗中,以滑鼠右鍵按一下 [AND],指向 [述詞],然後按一下 [NotEqual]。

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

  9. 按一下 argument2 節點,然後輸入 GlobalBankEast。

  10. 在 [事實總管] 中,按一下 [詞彙] 索引標籤,展開 [ESB]。EndPointInfo,然後展開 [版本 1.0]。

  11. 從 [事實總管] 中,將 [設定端點輸出傳輸位置] 定義拖曳至 [動作]。

  12. 按一下 < 空字串 > ,然後輸入 C:\HowTos\Out\CustomerUnknown%MessageID%.xml。

  13. 從 [事實總管] 中,將 [設定端點輸出傳輸類型定義] 拖曳至 [動作]。

  14. 在 [事實總管] 中,展開 [ESB]。TransportTypes,展開 1.0 版,然後將配接器提供者定義拖曳至 < 空字串 > 。

  15. 在 [動作] 窗格中,展開 [配接器提供者] 下拉式清單,然後按一下 [檔案]。

發佈和部署原則

  1. 在 [原則總管] 的 [RouteBasedOnCustomerKnownType ] 原則下,以滑鼠右鍵按一下 [ 版本 1.0] (未儲存) ,然後按一下 [ 發佈]。

  2. 在 [原則總管] 的 [RouteBasedOnCustomerKnownType ] 原則下,以滑鼠右鍵按一下 [版本 1.0 - 已發佈],然後按一下 [ 部署]。

建立 ESB 路線 DSL 模型

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

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

  3. 在 [ 新增專案 ] 對話方塊的 [ 名稱 ] 方塊中,輸入 CbrKnownType,然後按一下 [ 新增]。

設定路線的屬性

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

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

    2. 在 [ 擴充設定 ] 區段中,按一下 [路線 XML 檔案 ] 屬性旁的省略號按鈕 (...) 。

    3. 在 [選取 XML 檔案] 對話方塊中,于 [檔案名] 方塊中輸入C:\HowTos\Itineraries\CbrKnownType,然後按一下 [儲存]。

      注意

      此步驟可讓您將路線匯出為 XML 至本機檔案位置。 藉由將路線匯出至本機檔案位置,而不是匯出至路線資料庫,即可使用 ESB 測試用戶端應用程式來測試路線。 您稍後將在本操作說明主題中完成此程式。

定義路線的結構

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

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

    2. 在 [ 擴充器 ] 下拉式清單中,按一下 [ On-Ramp ESB 擴充器]。

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

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

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

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

    2. 在 [ 擴充器] 下拉式清單中,按一下 [ 下拉式 ESB 擴充器]。

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

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

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

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

    2. 在 [ 路線服務擴充器 ] 下拉式清單中,按一下 [ 下拉式擴充器]。

    3. 在 [ Off-Ramp ] 下拉式清單中,展開 [SendRegionalOrders],然後按一下 [ 傳送處理常式]。

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

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

    2. 在 [ 傳輸名稱] 下拉式清單中,按一下 [BRE]。

    3. 在 [ 解析程式實作 ] 下拉式清單中,按一下 [Bre Resolver 擴充功能]。

    4. 在 [ 原則 ] 下拉式清單中,按一下 [ RouteBasedOnCustomerKnownType]。

    5. [辨識郵件格式 ] 下拉式清單中,按一下 [True]。

    6. [UseMsg] 下拉式清單中,按一下 [True]。

      注意

      如果您使用協調流程的 BRE Resolver 延伸模組, recognizeMessageFormat 屬性必須設定為 False

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

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

匯出模型以搭配路線測試用戶端使用

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

    注意

    路線的 XML 版本會在 Visual Studio 中開啟。

  2. 儲存所有專案成品。

  3. 在 Windows 檔案總管中,流覽至 C:\HowTos\行程,並注意建立您的路線 XML (CbrKnownType.xml) 。

測試路線和商務規則

  1. 使用開發 活動的必要條件 (C:\HowTos\ESB.Itinerary.Test.exe - 快捷方式) 期間建立的快捷方式,開啟 [路線測試用戶端應用程式] 範例應用程式。

  2. 在 [路線測試用戶端] 中,清除 [ 使用 WCF 服務 ] 核取方塊,然後按一下 [ 載入路線]。

  3. 在 [ 開啟路線檔案 ] 對話方塊中,流覽至 C:\HowTos\行程。 選取 [CbrKnownType.xml],然後按一下 [ 開啟 ] 以載入路線。

  4. 按一下 [確定 ] 清除 [ 成功載入路線] 訊息。

  5. 在 [路線測試用戶端] 中,按一下 [ 載入消息 ] 方塊旁的省略號按鈕 (...) 。

  6. 在 [ 選取要載入的 XML 檔 ] 對話方塊中,流覽至 C:\HowTos。 選取 West.xml,然後按一下 [ 開啟 ] 以載入測試訊息。

  7. 按一下 [ 提交要求] 按鈕。 測試完成時,按一下 [ 確定 ] 以關閉出現的確認。

  8. 在 Windows 檔案總管中,流覽至 C:\HowTos\Out。確認 West%MessageID%.xml 訊息已寫入目錄。

  9. 使用 East.xml 訊息重複測試程式。

  10. 在 Windows 檔案總管中,流覽至 C:\HowTos\Out。確認 East%MessageID%.xml 訊息已寫入目錄。

  11. 使用 NAOrderDoc.xml 訊息重複測試程式。

  12. 在 Windows 檔案總管中,流覽至 C:\HowTos\Out。確認 CustomerUnknown%MessageID%.xml 訊息已寫入目錄。

其他資源

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