目标
本部分演示如何使用 BizTalk Server 业务规则引擎(BRE)策略创建基于消息上下文属性确定消息终结点的路线,然后使用 BizTalk Server FILE 适配器路由消息。
在本指南中,你将完成以下步骤:
创建业务规则策略以评估消息类型。
使用业务规则策略创建行程单,以实现动态路由。
使用“行程测试客户端”示例应用程序测试行程。
先决条件
本作指南主题中的过程需要完成 开发活动的先决条件。
步骤
使用消息上下文属性创建 BRE 策略以路由消息
单击任务栏上的“ 开始 ”,指向 “所有程序”,指向 BizTalk Server,然后单击“ 业务规则编辑器”。
在策略资源管理器中,右键单击“ 策略”,然后单击“ 添加新策略”。 将策略 RouteBasedOnMessageType 命名。
为北美订单添加路由规则
在 RouteBasedOnMessageType 策略中,右键单击 版本 1.0(未保存),然后单击“ 添加新规则”。 将规则 SetNAOrderEndpoint 命名。
在“规则”窗口中,右键单击 “条件”,指向 谓词,然后单击“ 等于”。
在 Facts Explorer 中,展开 ESB.ContextInfo 词汇,展开 Version 1.0,然后将 Context Message Type 事实拖动到 Conditions 下的 argument1 节点。
注释
Microsoft BizTalk ESB 工具包包括多个可用于创建规则的词汇。 其中一些应该用自己的词汇替换或扩充。 例如, DynamicRunTimeMaptypes 策略具有 GlobalBank 示例中提供的映射的定义。
单击 argument2 节点,然后键入 http://globalbank.esb.dynamicresolution.com/northamericanservices/#OrderDoc
在“事实资源管理器”中,展开 ESB.EndPointInfo 词汇,展开 版本 1.0,然后将 “设置终结点出站传输位置” 定义拖动到 “操作”。
单击 <空字符串>,然后键入 C:\HowTos\Out\NorthAmerica%MessageID%.xml
从事实资源管理器中,将“设置终结点出站传输类型”定义拖动到“操作”。
在“事实资源管理器”中,展开 ESB.TransportTypes 词汇,展开 Version 1.0,然后将 适配器提供程序 定义拖动到 <空字符串>。
在“操作”窗格中,展开适配器提供程序下拉列表,然后单击文件。
发布和部署策略
在策略资源管理器的 RouteBasedOnMessageType 策略下,右键单击 版本 1.0(未保存),然后单击“ 发布”。
在策略资源管理器的 RouteBasedOnMessageType 策略下,右键单击 版本 1.0 - 已发布,然后单击“ 部署”。
创建特定于域的 ESB 行程语言 (DSL) 模型
在 Visual Studio 中,打开 C:\HowTos\Patterns\Patterns.sln。
在解决方案资源管理器中,右键单击 “行程库 ”项目,指向 “添加”,然后单击“ 新建路线”。
在 “名称 ”框中,键入 MessageType,然后单击“ 添加”。
配置行程的属性
在 Visual Studio 中,单击 MessageType.行程的设计界面。 在 MessageType 属性窗口中,配置以下属性:
在 “模型导出程序 ”下拉列表中,单击“ XML 行程导出程序”。
在 “扩展程序设置” 部分中,单击 “行程 XML 文件 ”属性旁边的省略号按钮(...)。
在 “选择 XML 文件 ”对话框中的 “文件名 ”框中,键入 C:\HowTos\Itineraries\MessageType,然后单击“ 保存”。
注释
此步骤使你可以将行程导出为 XML 到本地文件位置。 将行程导出到本地文件位置,而不是导出到行程数据库,可以使用 ESB 测试客户端应用程序测试行程。 稍后将完成本作说明主题中的此过程。
定义行程的结构
从工具箱中,将 On-Ramp 模型元素拖到设计图面。 在 OnRamp1 “属性”窗口中,配置以下属性:
单击 Name 属性,然后键入 ReceiveOrders。
在 “扩展程序 ”下拉列表中,单击“ On-Ramp ESB 扩展程序”。
在 BizTalk 应用程序 下拉列表中,单击 Microsoft.Practices.ESB。
在接收端口下拉列表中,单击OnRamp.Itinerary。
从工具箱中,将 “路线服务” 模型元素拖到设计图面,然后将其置于 On-Ramp 模型元素的右侧。 在 “ItineraryService1 属性”窗口中,配置以下属性:
单击 Name 属性,然后键入 BreRoute。
在 “行程服务扩展程序 ”下拉列表中,单击“ 消息传递扩展程序”。
注释
此属性定义进程将在管道(消息传送)中发生。 或者,如果进程将在业务流程中进行,请将 行程服务扩展程序 属性设置为 业务流程扩展程序。
在容器下拉列表中,展开ReceiveOrders,然后单击接收处理程序。
在 “服务名称 ”下拉列表中,单击 Microsoft.Practices.ESB.Services.Routing。
右键单击 BreRoute 模型元素的 Resolver 集合,然后单击“添加新冲突解决程序”。 在 Resolver1 “属性”窗口中,配置以下属性:
单击 Name 属性,然后键入 ByMessageType。
在 “解析程序实现 ”下拉列表中,单击 “Bre Resolver 扩展”。
在 “策略 ”下拉列表中,单击 RouteBasedOnMessageType v 1.0。
在工具箱中,单击“ 连接器”。 将连接从 ReceiveOrders 模型元素拖动到 BreRoute 模型元素。
从工具箱中,将 Off-Ramp 模型元素拖到设计图面,然后将其置于 BreRoute 模型元素的右侧。 在 OffRamp1 “属性”窗口中,配置以下属性:
单击 Name 属性,然后键入 SendBasedOnType。
在 “扩展程序 ”下拉列表中,单击 Off-Ramp ESB 扩展程序。
在 BizTalk 应用程序 下拉列表中,单击 GlobalBank.ESB。
在 “发送端口 ”下拉列表中,单击 DynamicResolutionOneWay。
从工具箱中,将 “路线服务” 模型元素拖到设计图面,然后将其放置在 BreRoute 模型元素和 SendBasedOnType 模型元素之间。 在 “ItineraryService1 属性”窗口中,配置以下属性:
单击 Name 属性,然后键入 SendPortFilter。
在 “行程服务扩展程序 ”下拉列表中,单击 Off-Ramp 扩展程序。
在 Off-Ramp 下拉列表中,展开 SendBasedOnType,然后单击发送处理函数。
在工具箱中,单击“ 连接器”。 将连接从 BreRoute 模型元素拖动到 SendPortFilter 模型元素。
在工具箱中,单击“ 连接器”。 将连接从 SendPortFilter 模型元素拖到 SendBasedOnType 模型元素。
导出模型以用于路线测试客户端
在 Visual Studio 中,右键单击 MessageType 路线的设计图面,然后单击“ 导出模型”。
注释
将在 Visual Studio 中打开行程的 XML 版本。
保存所有项目工件。
在 Windows 资源管理器中,浏览到 C:\HowTos\Itineraries and notice the creation of your itinerary XML (MessageType.xml)。
测试行程
使用在 开发活动的先决条件 (C:\HowTos\ESB.Itinerary.Test.exe - 快捷方式)中创建的快捷方式打开行程测试客户端示例应用程序。
在“路线测试客户端”中,清除“ 使用 WCF 服务 ”复选框,然后单击“ 加载路线”。
在 “打开路线文件 ”对话框中,浏览到 C:\HowTos\行程。 选择 MessageType.xml,然后单击“ 打开 ”加载行程。
单击“ 确定 ”以清除“ 成功加载路线 ”消息。
在“行程测试客户端”中,单击 “加载消息 ”框旁边的省略号按钮(...)。
在 “选择要加载的 XML 文档 ”对话框中,浏览到 C:\HowTos。 选择 NAOrderDoc.xml,然后单击“ 打开 ”以加载测试消息。
单击“ 提交请求 ”按钮。 测试完成后,单击“ 确定 ”以消除出现的确认。
在 Windows 资源管理器中,浏览到 C:\HowTos\Out\。 验证 NorthAmerica%MessageID%.xml 消息是否已写入目录。
其他资源
有关详细信息,请参阅下列相关主题: