如何:使用已知消息类型的业务规则策略实现基于内容的路由

目标

本部分演示如何使用业务规则策略创建基于已知消息类型(部署到 Microsoft BizTalk Server 配置数据库的架构)动态路由消息的路线。

在本指南中,你将完成以下步骤:

  • 创建一个业务规则策略,用于基于内容路由消息。

  • 使用 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 消息的架构,它被用于创建您将用于测试的 West 和 East 消息。

  4. 在事实资源管理器中,单击 NAOrderDoc.xsd,然后在“属性”窗格中单击 “文档类型” 属性,然后键入 GlobalBank.ESB.DynamicResolution.Schemas.NAOrderDoc

    注释

    这是模式的完全限定名称。

  5. 在Facts浏览器中,展开 NAOrderDoc.xsd,然后展开 OrderDoc

  6. 在“规则”窗口中,右键单击 “条件”,指向 谓词,然后单击“ 等于”。

  7. 从事实资源管理器中,将 customerName 元素拖到条件下的 argument1 节点。

  8. 单击 参数 2 节点,然后键入 GlobalBankWest

  9. 在“事实资源管理器”中,单击“ 词汇 ”选项卡,展开 ESB。EndPointInfo,然后展开 版本 1.0

    注释

    Microsoft BizTalk ESB 工具包包含多个词汇,可用于创建规则以在 ESB 中使用。 其中一些应该用自己的词汇替换或扩充。 例如, DynamicRunTimeMaptypes 具有 GlobalBank 示例中提供的映射的定义。

  10. 从事实资源管理器中,将 “设置终结点出站传输位置” 定义拖到 “操作”

  11. 单击 <空字符串> ,然后键入 C:\HowTos\Out\West%MessageID%.xml

  12. 从事实资源管理器中,将“设置终结点出站传输类型”定义拖动到“操作”

  13. 在“Facts Explorer”中,展开 ESB.TransportTypes,展开 Version 1.0,然后将 Adaptor Providers 定义拖动到 <empty string>

  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. 单击参数2节点,然后输入GlobalBankWest。

  7. 在“规则”窗口中,右键单击“AND”,指向谓词,然后单击“NotEqual”。

  8. 从事实资源管理器中,将 customerName 元素拖到条件下的 argument1 节点。

  9. 单击参数2节点,然后键入 GlobalBankEast。

  10. 在“事实资源管理器”中,单击“词汇”选项卡,展开 ESB。EndPointInfo,然后展开版本 1.0。

  11. 从“事实资源管理器”中,将“设置终结点出站传输位置”定义拖到“操作”。

  12. 单击 <空字符串>,然后键入 C:\HowTos\Out\CustomerUnknown%MessageID%.xml。

  13. 从事实资源管理器中,将“设置终结点出站传输类型定义”拖动到“操作”。

  14. 在“Facts Explorer”中,展开 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. 单击 Name 属性,然后键入 ReceiveNAOrder

    2. “扩展程序 ”下拉列表中,单击“ On-Ramp ESB 扩展程序”。

    3. BizTalk 应用程序 下拉列表中,单击 Microsoft.Practices.ESB

    4. 接收端口下拉列表中,单击OnRamp.Itinerary

  2. 从工具箱中,将 Off-Ramp 模型元素拖到设计图面,然后将其置于 ReceiveNAOrder 模型元素右侧。 在 OffRamp1 “属性”窗口中,配置以下属性:

    1. 单击 Name 属性,然后键入 SendRegionalOrders

    2. “扩展程序 ”下拉列表中,单击 Off-Ramp ESB 扩展程序

    3. BizTalk 应用程序 下拉列表中,单击 GlobalBank.ESB

    4. “发送端口 ”下拉列表中,单击 DynamicResolutionOneWay

  3. 从工具箱中,将 “路线服务 ”模型元素拖到设计图面,然后将其放在 ReceiveNAOrder 模型元素和 SendRegionalOrders 模型元素之间。 在 “ItineraryService1 属性”窗口中,配置以下属性:

    1. 单击 Name 属性,然后键入 SendPortFilter

    2. “行程服务扩展程序 ”下拉列表中,单击 Off-Ramp 扩展程序

    3. Off-Ramp 下拉列表中,展开 SendRegionalOrders,然后单击“ 发送处理程序”。

  4. 右键单击 SendPortFilter 模型元素的 Resolver 集合,然后单击“添加新冲突解决程序”。 在 Resolver1 “属性”窗口中,配置以下属性:

    1. 单击 Name 属性,然后键入 RouteRegionalOrders

    2. “传输名称 ”下拉列表中,单击 BRE

    3. “解析程序实现 ”下拉列表中,单击 “Bre Resolver 扩展”。

    4. “策略 ”下拉列表中,单击 “RouteBasedOnCustomerKnownType”。

    5. “识别消息格式 ”下拉列表中,单击 “True”。

    6. UseMsg 下拉列表中,单击 “True”。

      注释

      如果使用协调中的 BRE 解析程序扩展,则必须将 recognizeMessageFormat 属性设置为 False

  5. 在工具箱中,单击“ 连接器”。 将 ReceiveNAOrder 模型元素的连接拖到 SendPortFilter 模型元素。

  6. 在工具箱中,单击“ 连接器”。 将连接从 SendPortFilter 模型元素拖到 SendRegionalOrders 模型元素。

导出模型以用于路线测试客户端

  1. 在 Visual Studio 中,右键单击 CbrKnownType 路线的设计图面,然后单击“ 导出模型”。

    注释

    将在 Visual Studio 中打开行程的 XML 版本。

  2. 保存所有项目工件。

  3. 在 Windows 资源管理器中,浏览到 C:\HowTos\Itineraries and notice the creation of your itinerary 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. Verify that the West%MessageID%.xml 消息写入的目录。

  9. 使用 East.xml 消息重复测试过程。

  10. 在 Windows 资源管理器中,浏览到已将 C:\HowTos\Out. Verify that the East%MessageID%.xml 消息写入的目录。

  11. 使用 NAOrderDoc.xml 消息重复测试过程。

  12. 在 Windows 资源管理器中,浏览到已将 C:\HowTos\Out. Verify that the CustomerUnknown%MessageID%.xml 消息写入的目录。

其他资源

有关详细信息,请参阅下列相关主题: