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

目标

本部分演示如何使用业务规则策略,根据部署到 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 消息的架构,用于创建用于测试的“西部”和“东部”消息。

  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”,指向“谓词”,然后单击“不相等”。

  4. 在“事实资源管理器”中,单击“XML 架构”选项卡,展开“NAOrderDoc.xsd”,然后展开“OrderDoc”。

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

  6. 单击 argument2 节点,然后键入 GlobalBankWest。

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

  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. 单击 Name 属性,然后键入 ReceiveNAOrder

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

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

    4. “接收端口 ”下拉列表中,单击“ OnRamp.行程”。

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

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

    2. “扩展程序 ”下拉列表中,单击“ 关闭渐变 ESB 扩展程序”。

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

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

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

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

    2. “行程服务扩展程序 ”下拉列表中,单击“ 非斜坡扩展程序”。

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

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

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

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

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

    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,并注意创建行程 XML (CbrKnownType.xml) 。

测试行程和业务规则

  1. 使用开发 活动的先决条件 (C:\HowTos\ESB.Itinerary.Test.exe - 快捷方式) 中创建的快捷方式打开路线测试客户端示例应用程序。

  2. 在“行程测试客户端”中,清除“使用 WCF 服务检查”框,然后单击“加载路线”。

  3. “打开路线文件 ”对话框中,浏览到 C:\HowTos\Itineraries。 选择 “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 消息是否已写入目录。

其他资源

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