如何:使用业务规则策略选择路线

目标

本部分演示如何创建业务规则,这些规则可用于根据收到的消息的内容选择路线,以及如何在通用行程范围内配置路线选择器管道组件来调用这些规则。 本部分介绍一种业务方案,根据客户所在的区域以不同的方式路由消息。

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

  • 客户全球银行西部和东部部门的模型行程。

  • 创建将用于选择处理请求的路线的业务规则策略。

  • 配置行程选择器管道组件以使用业务规则策略来选择适当的行程。

先决条件

本作指南主题中的过程需要完成 开发活动的先决条件

在您开始之前

请先完成下列任务,之后再执行本指南后面的步骤。

  • 创建 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. 在策略资源管理器中,右键单击“ 策略”,然后单击“ 添加新策略”。 将策略 ResolveItineraryBasedOnCustomer 命名。

    注释

    本操作指南主题使用与在主题如何拆分交换,并使用不同的路线将生成的消息路由到多个文件位置中创建的业务规则策略和线路相同的策略和行程。 如果已完成该部分,可以跳到本主题后面的“创建和配置 ESB on-ramp”的过程。

为客户 GlobalBank West 添加筛选规则

  1. ResolveItineraryBasedOnCustomer 策略中,右键单击 版本 1.0(未保存),然后单击“ 添加新规则”。 将规则 SetGlobalBankWestItinerary 命名。

  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.计划词汇,展开版本 1.1,然后将设置路线名称定义拖动到操作

  10. 单击 <空字符串>,然后键入 GlobalBankWestItinerary

    注释

    在本指南的后面部分,您将创建此流程来处理来自 GlobalBank West 的消息。

为客户 GlobalBank East 添加筛选规则

  1. 在策略资源管理器中,右键单击 SetGlobalBankWestItinerary 规则,然后单击“ 复制”。

  2. 右键单击 版本 1.0(未保存),然后单击“ 粘贴”。

  3. 在“ 新建规则名称 ”对话框中,键入 SetGlobalBankEastItinerary,然后单击“ 确定”。

  4. 在策略资源管理器中,单击 SetGlobalBankEastItinerary 规则。

  5. “条件 ”部分中,右键单击 GlobalBankWest,然后单击“ 重置”参数

  6. 单击 argument2,然后键入 GlobalBankEast

  7. “操作” 部分中,右键单击 GlobalBankWestItinerary,然后单击 “重置参数”

  8. 单击 <空字符串> ,然后键入 GlobalBankEastItinerary

    注释

    稍后在指南主题中,你将创建此计划来处理 GlobalBank East 的信息。

发布和部署该策略

  1. 在策略资源管理器的 ResolveItineraryBasedOnCustomer 策略下,右键单击 版本 1.0(未保存),然后单击“ 发布”。

  2. 在策略资源管理器的 ResolveItineraryBasedOnCustomer 策略下,右键单击 版本 1.0 - 已发布,然后单击“ 部署”。

为 GlobalBank West 消息创建特定于域的 ESB 行程语言 (DSL) 模型

  1. 在 Visual Studio 中,打开 C:\HowTos\Patterns\Patterns.sln。

  2. 在解决方案资源管理器中,右键单击 “行程库 ”项目,指向 “添加”,然后单击“ 新建路线”。

  3. 在“ 添加新项 ”对话框中的“模板”窗格中,单击“ 行程Dsl”。

  4. “名称 ”框中,键入 GlobalBankWestItinerary,然后单击“ 添加”。

配置 GlobalBank West 的行程属性

  1. 在 Visual Studio 中,单击 GlobalBankWestItinerary.行程的设计视图。 在 GlobalBankWestItinerary 属性窗口中,配置以下属性:

    1. “模型导出程序 ”下拉列表中,单击 “数据库行程导出程序”。

    2. 单击 “行程数据库 ”属性旁边的省略号按钮(...)。

    3. 在“ 连接属性 ”对话框中,选择承载行程存储库数据库的 SQL Server,然后指定数据库的名称(默认名称为 EsbItineraryDb)。

  2. 在“行程状态”下拉列表中,单击“已部署”。

    注释

    此步骤使你可以将行程导出到中央存储库;消息接收后,可以从此存储库中选择并附加路线。 稍后将路线选择器管道组件配置为使用业务规则引擎解析程序(BRI)评估入站消息,并从此存储库中选择适当的行程。

定义行程的结构

  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 属性,然后键入 SendNAOrder

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

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

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

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

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

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

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

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

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

    2. “解析程序实现 ”下拉列表中,单击 “静态解析程序扩展”。

    3. “传输名称 ”下拉列表中,单击“ 文件”。

    4. 单击 “传输位置” 属性,然后键入 C:\HowTos\Out\West%MessageID%.xml

  5. 在工具箱中,单击“ 连接器”。 从ReceiveNAOrder模型元素拖动连接到RouteMessage模型元素。

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

将模型导出到行程数据库

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

    注释

    行程已导出到行程数据库,现在可以由行程选择器组件使用。

  2. 保存所有项目工件。

为 GlobalBank East 消息创建 ESB 路由 DSL 模型

  1. 在 Visual Studio 中,打开 C:\HowTos\Patterns.sln。

  2. 在解决方案资源管理器中,右键单击 “行程库 ”项目,指向 “添加”,然后单击“ 新建路线”。

  3. 在“ 添加新项 ”对话框中的“模板”窗格中,单击“ 行程Dsl”。

  4. “名称 ”框中,键入 GlobalBankEastItinerary,然后单击“ 添加”。

配置 GlobalBank East 行程的属性

  1. 在 Visual Studio 中,单击 GlobalBankEastItinerary.itinerary的设计视图。 在 GlobalBankEastItinerary 属性窗口中,配置以下属性:

    1. “模型导出程序 ”下拉列表中,单击 “数据库行程导出程序”。

    2. 单击 “行程数据库 ”属性旁边的省略号按钮(...)。

    3. 在“ 连接属性 ”对话框中,选择承载行程存储库数据库的 SQL Server,然后指定数据库的名称(默认名称为 EsbItineraryDb)。

  2. 在“行程状态”下拉列表中,单击“已部署”。

    注释

    此步骤使你可以将行程导出到中央存储库;收到消息时,可以从此存储库中选择并附加路线。 稍后将路线选择器管道组件配置为使用 BRI 解析程序评估入站消息,并从此存储库中选择适当的行程。

定义行程的结构

  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 属性,然后键入 SendNAOrder

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

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

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

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

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

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

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

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

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

    2. “解析程序实现 ”下拉列表中,单击 “静态解析程序扩展”。

    3. “传输名称 ”下拉列表中,单击“ 文件”。

    4. 单击 “传输位置” 属性,然后键入 C:\HowTos\Out\East%MessageID%.xml

  5. 在工具箱中,单击“ 连接器”。 从ReceiveNAOrder模型元素拖动连接到RouteMessage模型元素。

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

将模型导出到行程数据库

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

    注释

    行程已导出到行程数据库,现在可以由行程选择器组件使用。

  2. 保存所有项目工件。

创建和配置 ESB 入门配置

  1. 单击任务栏上的“ 开始 ”,指向 “所有程序”,指向 BizTalk Server,然后单击“ BizTalk Server 管理”。

  2. 在 BizTalk Server 管理控制台中,展开 BizTalk 组应用程序,然后展开 Microsoft.Practices.ESB

  3. 右键单击 “接收位置”,指向“ 新建”,然后单击 “单向接收位置”。

  4. “选择接收端口 ”对话框中,单击“ OnRamp.行程”,然后单击“ 确定”。

  5. “接收位置属性 ”对话框中的“ 名称 ”框中,键入 OnRamp.Itinerary.HowTo

  6. “类型 ”下拉列表中,单击“ 文件”,然后单击“ 配置”。

  7. “文件传输属性 ”对话框中的 “接收”文件夹 框中键入 C:\HowTos\DropFolder,然后单击“ 确定”。

配置路线选择器管道组件

  1. “接收位置属性” 对话框中的 “接收管道” 下拉列表中,单击 ItinerarySelectReceiveXml,然后单击省略号按钮(...)。

  2. 使用“ 配置管道 ”对话框配置以下 路线选择器 组件属性:

    1. 单击 “ItineraryFactKey ”属性,然后键入 Resolver.Itinerary

    2. 单击 ResolverConnectionString 属性,然后键入 BRI:\\policy=ResolveItineraryBasedOnCustomer;useMsg=true;recognizeMessageFormat=true;

    3. 单击“ 确定 ”关闭“ 配置管道 ”对话框。

  3. 单击“ 确定 ”关闭“ 接收位置属性 ”对话框。

  4. 在 BizTalk Server 管理控制台中,右键单击 OnRamp.Itinerary.HowTo 接收位置,然后单击“ 启用”。

测试行程选择器和商业规则

  1. 在 Windows 资源管理器中,浏览到 C:\HowTos。

  2. 请将文件 East.xml 和 West.xml 复制到 DropFolder 文件夹中,不要移动。

  3. 浏览到目录,C:\HowTos\Out. Verify that the East%MessageID%.xml and West%MessageID%.xml 消息已被写入。

    注释

    虽然消息除了客户元素的值不同外,其它部分是相同的,但根据“行程选择器”管道组件的选择,这些消息被使用不同的行程进行处理。

  4. 在 BizTalk Server 管理控制台中,右键单击 OnRamp.Itinerary.HowTo 接收位置,然后单击“ 禁用”。

  5. 禁用 OnRamp.Itinerary.HowTo 接收位置后,右键单击该位置,然后单击“删除”。 在“ 确认删除接收位置 ”对话框中,单击“ ”。

其他资源

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