共用方式為


如何:使用訊息內容屬性實作根據訊息內容決定路由

目標

本節示範如何使用 Microsoft BizTalk ESB 工具組路線Designer來建立根據郵件內容屬性選取郵件收件者的路線,然後使用 Routey Broker 傳訊服務將郵件路由傳送至該收件者。

在本主題中,您將完成下列步驟:

  • 使用路線代理人和具有靜態解析程式的兩個路由服務來建立路線。

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

注意

目前實作中未提供協調流程型訊息代理程式服務。

必要條件

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

步驟

建立 ESB 路線 DSL 模型

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

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

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

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

設定路線的屬性

  1. 在 Visual Studio 中,按一下 ChoiceRouter 路線的設計介面。 在ChoiceRouter屬性視窗中,設定下列屬性:

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

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

    3. 在 [ 匯出模式 ] 屬性下拉式清單中,按一下 [ 嚴格]。

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

    注意

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

定義路線的結構

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

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

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

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

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

  2. 從 [工具箱] 中,將 [行程代理人服務 ] 模型專案拖曳至設計工具介面,然後將它放在 On-Ramp 模型元素的右側。 在 ItineraryBrokerService1中,設定下列屬性:

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

    2. 在 [ 擴充器] 下拉式清單中,按一下 [傳訊代理程式擴充程式]。

    3. 在 [ 容器 ] 下拉式清單中,展開 [ReceiveNAOrder],然後按一下 [ 接收處理常式]。

    4. 在 [ 服務名稱] 下拉式清單中,按一下 [Microsoft.Practices.ESB.Itinerary.Services.Broker.MessagingBroker]。

  3. 以滑鼠右鍵按一下 [篩選 ] 集合,然後按一下 [ 新增篩選]。 在Filter1屬性視窗中,設定下列屬性:

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

    2. 按一下 [ 篩選 實作] 下拉式清單,然後按一下 [XPath 篩選]。

    3. 按一下 [運算式 ] 屬性,然後輸入 count (/CoNtextProperties/Property[@name='InboundTransportLocation'][contains (., 'ProcessItinerary.asmx') ] > ) 0

  4. 以滑鼠右鍵按一下 [篩選 ] 集合,然後按一下 [ 新增篩選]。 在Filter1屬性視窗中,設定下列屬性:

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

    2. 按一下 [ 篩選實作] 下拉式清單,然後按一下 [XPath 篩選]。

    3. 按一下 [運算式 ] 屬性,然後輸入 count (/CoNtextProperties/Property[@name='InboundTransportLocation'][contains (., 'ESB]。ItineraryServices.WCF') ]) > 0

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

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

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

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

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

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

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

      注意

      這個屬性會定義進程會在管線中 (傳訊) 進行。 或者,如果進程將在協調流程中進行,請將 [路線服務擴充器 ] 屬性設定為 Orchestration Extender

    3. 在 [ 容器 ] 下拉式清單中,展開 [ReceiveNAOrder],然後按一下 [ 接收處理常式]。

    4. 在 [ 服務名稱] 下拉式清單中,按一下 [Microsoft.Practices.ESB.Services.Routing]。

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

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

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

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

    4. 按一下 [傳輸位置] 屬性,然後輸入 c:\howtos\out\asmx%MessageId%.xml

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

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

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

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

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

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

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

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

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

  11. 在 [工具箱] 中,按一下 [連接器]。 將連線從 RouteToFileFromASMX 模型元素拖曳至 SendPortFilterASMX 模型元素。

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

  13. 從 [工具箱] 中,將 [行程服務 ] 模型專案拖曳至設計介面,然後將它放在 RouteBrokerService 模型元素的右邊。 在ItineraryService1屬性視窗中,設定下列屬性:

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

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

      注意

      這個屬性會定義進程會在管線中 (傳訊) 進行。 或者,如果進程將在協調流程中進行,請將 [路線服務擴充器 ] 屬性設定為 Orchestration Extender

    3. 在 [ 容器 ] 下拉式清單中,展開 [ReceiveNAOrder],然後按一下 [ 接收處理常式]。

    4. 在 [ 服務名稱] 下拉式清單中,按一下 [Microsoft.Practices.ESB.Services.Routing]。

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

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

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

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

    4. 按一下 [傳輸位置] 屬性,然後輸入 c:\howtos\out\wcf%MessageId%.xml

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

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

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

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

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

  16. 從 [工具箱] 中,將 [路線服務 ] 模型專案拖曳至設計介面,然後將它放在 RouteToFileFromWCF 模型元素和 SendWCFOrder 模型元素之間。 在ItineraryService1屬性視窗中,設定下列屬性:

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

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

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

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

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

  19. 從 [工具箱] 中,將 Routey Outport 模型專案拖曳至 RouteBrokerService的右框線。 在[行程][BrokerOutPort1] 屬性視窗中,設定下列屬性:

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

    2. 在 [ 篩選] 下拉式清單中,按一下 [WCFFilter]。

    3. 在 [ 解析程式 ] 下拉式清單中,按一下 [ResolverBrokerRoute]。

  20. 從 [工具箱] 中,將 Routey Outport 模型元素拖曳至 RouteBrokerService的下框線。 在[行程][BrokerOutPort1] 屬性視窗中,設定下列屬性:

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

    2. 在 [ 篩選] 下拉式清單中,按一下 [ASMXFilter]。

    3. 在 [ 解析程式 ] 下拉式清單中,按一下 [ResolverBrokerRoute]。

  21. 在 [工具箱] 中,按一下 [連接器]。 將 連線從 WCF 埠 模型專案拖曳至 RouteToFileFromWCF 模型專案。

  22. 在 [工具箱] 中,按一下 [連接器]。 將 連線從 ASMX 埠 模型專案拖曳至 RouteToFileFromASMX 模型專案。

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

注意

您必須匯出行程兩次:一次在 XML 中,一次到資料庫,以透過訊息代理程式測試路由。

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

    注意

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

  2. 在 Windows 檔案總管中,流覽至 C:\HowTos\行程,然後注意到建立您的路線 XML (ChoiceRouter.xml) 。

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

  4. 在屬性視窗中,按一下[模型匯出工具] 下拉式清單中的[資料庫路線匯出工具]。

  5. 在屬性視窗中,將[路線資料庫] 屬性設定為連接字串指向路線資料庫。

  6. 在 [ 路線狀態] 屬性下拉式清單中,選取 [ 已部署]。

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

測試路線

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

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

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

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

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

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

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

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

  9. 按一下 [路線測試用戶端 使用 WCF 服務 ] 核取方塊。 在 [ 路線名稱] 方塊中,輸入 ChoiceRouter,然後按一下 [ 提交要求] 按鈕。 測試完成時,按一下 [ 確定 ] 以關閉確認訊息。

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

其他資源

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