如何:使用业务规则策略根据消息上下文动态路由消息

目标

本部分演示如何使用 BizTalk Server 业务规则引擎(BRE)策略创建基于消息上下文属性确定消息终结点的路线,然后使用 BizTalk Server FILE 适配器路由消息。

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

  • 创建业务规则策略以评估消息类型。

  • 使用业务规则策略创建行程单,以实现动态路由。

  • 使用“行程测试客户端”示例应用程序测试行程。

先决条件

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

步骤

使用消息上下文属性创建 BRE 策略以路由消息

  1. 单击任务栏上的“ 开始 ”,指向 “所有程序”,指向 BizTalk Server,然后单击“ 业务规则编辑器”。

  2. 在策略资源管理器中,右键单击“ 策略”,然后单击“ 添加新策略”。 将策略 RouteBasedOnMessageType 命名。

    为北美订单添加路由规则

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

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

  5. 在 Facts Explorer 中,展开 ESB.ContextInfo 词汇,展开 Version 1.0,然后将 Context Message Type 事实拖动到 Conditions 下的 argument1 节点。

    注释

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

  6. 单击 argument2 节点,然后键入 http://globalbank.esb.dynamicresolution.com/northamericanservices/#OrderDoc

  7. 在“事实资源管理器”中,展开 ESB.EndPointInfo 词汇,展开 版本 1.0,然后将 “设置终结点出站传输位置” 定义拖动到 “操作”

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

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

  10. 在“事实资源管理器”中,展开 ESB.TransportTypes 词汇,展开 Version 1.0,然后将 适配器提供程序 定义拖动到 <空字符串>

  11. 在“操作”窗格中,展开适配器提供程序下拉列表,然后单击文件

    发布和部署策略

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

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

    创建特定于域的 ESB 行程语言 (DSL) 模型

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

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

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

    配置行程的属性

  17. 在 Visual Studio 中,单击 MessageType.行程的设计界面。 在 MessageType 属性窗口中,配置以下属性:

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

    2. “扩展程序设置” 部分中,单击 “行程 XML 文件 ”属性旁边的省略号按钮(...)。

    3. “选择 XML 文件 ”对话框中的 “文件名 ”框中,键入 C:\HowTos\Itineraries\MessageType,然后单击“ 保存”。

      注释

      此步骤使你可以将行程导出为 XML 到本地文件位置。 将行程导出到本地文件位置,而不是导出到行程数据库,可以使用 ESB 测试客户端应用程序测试行程。 稍后将完成本作说明主题中的此过程。

    定义行程的结构

  18. 从工具箱中,将 On-Ramp 模型元素拖到设计图面。 在 OnRamp1 “属性”窗口中,配置以下属性:

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

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

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

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

  19. 从工具箱中,将 “路线服务” 模型元素拖到设计图面,然后将其置于 On-Ramp 模型元素的右侧。 在 “ItineraryService1 属性”窗口中,配置以下属性:

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

    2. “行程服务扩展程序 ”下拉列表中,单击“ 消息传递扩展程序”。

      注释

      此属性定义进程将在管道(消息传送)中发生。 或者,如果进程将在业务流程中进行,请将 行程服务扩展程序 属性设置为 业务流程扩展程序

    3. 容器下拉列表中,展开ReceiveOrders,然后单击接收处理程序

    4. “服务名称 ”下拉列表中,单击 Microsoft.Practices.ESB.Services.Routing

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

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

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

    3. “策略 ”下拉列表中,单击 RouteBasedOnMessageType v 1.0

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

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

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

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

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

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

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

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

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

    3. Off-Ramp 下拉列表中,展开 SendBasedOnType,然后单击发送处理函数

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

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

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

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

    注释

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

  27. 保存所有项目工件。

  28. 在 Windows 资源管理器中,浏览到 C:\HowTos\Itineraries and notice the creation of your itinerary XML (MessageType.xml)。

    测试行程

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

  30. 在“路线测试客户端”中,清除“ 使用 WCF 服务 ”复选框,然后单击“ 加载路线”。

  31. “打开路线文件 ”对话框中,浏览到 C:\HowTos\行程。 选择 MessageType.xml,然后单击“ 打开 ”加载行程。

  32. 单击“ 确定 ”以清除“ 成功加载路线 ”消息。

  33. 在“行程测试客户端”中,单击 “加载消息 ”框旁边的省略号按钮(...)。

  34. “选择要加载的 XML 文档 ”对话框中,浏览到 C:\HowTos。 选择 NAOrderDoc.xml,然后单击“ 打开 ”以加载测试消息。

  35. 单击“ 提交请求 ”按钮。 测试完成后,单击“ 确定 ”以消除出现的确认。

  36. 在 Windows 资源管理器中,浏览到 C:\HowTos\Out\。 验证 NorthAmerica%MessageID%.xml 消息是否已写入目录。

其他资源

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