在设计复杂的业务逻辑时,编排(Orchestration)是最佳的方法。然而,如果需要实现没有业务逻辑的简单转换,最佳的方法就是使用消息唯一的解决方案,这样可以避免往返消息框,提高解决方案的吞吐量。以下是创建一个不涉及编排的消息处理解决方案的步骤。
首先,需要创建一个BizTalk输入和输出架构。
// 打开Visual Studio 2010
// 创建一个新的BizTalk Server项目
// 将项目名称和解决方案名称重命名为MessageOnlySln
// 在解决方案资源管理器中,右键点击项目,选择添加 -> 新建项
// 选择架构并重命名为ReceiveSchema.xsd
// 创建一个新的架构,根元素为‘root’,将其重命名为‘Input’
// 创建两个子字段元素FirstName和LastName,数据类型为字符串(默认)
// 最终的ReceiveSchema应该如下所示
按照上述步骤2、3、4、5,创建一个SendSchema.xsd,其中包含一个子字段元素‘FullName’。
映射是BizTalk中的消息转换对象,ReceiveSchema和SendSchema的转换将在这里进行。映射内部是一个XSLT转换。
// 创建一个新的映射并命名为ConcatenateMap.btm
// 映射将创建带有链接的Open Source Schema和Open Destination Schema
// 点击这些链接并选择源(ReceiveSchema.xsd)和目标架构(SendSchema.xsd)
// 选择架构后,展开根节点以查看底层元素
// 将FirstName和LastName(源架构)进行简单连接到FullName(目标架构)
// 拖放字符串连接函数
// 函数是用于在映射中转换数据的现成逻辑函数
// 拖动FirstName和LastName元素的链接从源架构到连接函数的左侧,并将其结果(右侧)链接到输出架构的FullName元素
// 注意函数警告符号已经消失
如前所述,映射内部是一个XSLT...让看看这个映射是如何形成的XSLT。
// 右键点击ConcatenateMap.btm并点击验证映射
// 如果点击XSLT的输出链接
// 可以看到如下的XSLT:
通过这个,已经创建了功能。但在部署之前,应该进行单元测试,现在这部分跳过了。
要创建一个实例,请右键点击ReceiveSchema.xsd并生成实例。
// 生成的实例将位于位置
// 输出窗口将显示位置为:
// C:\Users\\AppData\Local\Temp\_SchemaData\ReceiveSchema_output.xml
// 打开实例文件
// 生成实例将默认字段名称和值,将其更改为所需的值
// 在测试之前准备好这个文件
已经完成了,让部署解决方案。
所有的BizTalk工件(架构、映射、编排)或完整的项目在部署之前必须进行强命名。
// 转到MessageOnlySln项目,在解决方案资源管理器中右键点击并点击属性
// 导航到左侧窗格中的签名选项卡
// 点击签名程序集并选择一个强命名密钥文件作为‘新’
// 给文件命名为‘MessageOnlySlnKey’并取消勾选‘用密码保护密钥文件’
// 解决方案资源管理器中将创建一个新的密钥
// 现在转到部署选项卡
// 创建应用程序名称为‘MessageOnlyAppln’,此名称将用于在BizTalk管理控制台中创建应用程序。如果没有指定,此解决方案将部署在默认应用程序(BizTalk Application 1)中
// 保存所有未保存的工件...
// 部署开始文本将在Visual Studio左下角显示
// 部署成功后,将在BizTalk管理控制台中形成一个新的应用程序MessageOnlyAppln
// 注意:如果出现错误,请确保BizTalk必要的服务正在运行
// 如果出现访问拒绝错误,请以管理员身份重启Visual Studio
// 还要确保没有错过上述提到的任何步骤
确保架构和映射在控制台的相应区域可用。
端口是BizTalk发布/订阅模型的来源。所有消息都通过BizTalk中的端口发布/订阅。
// 创建一个新的接收端口
// 在常规选项卡中重命名端口为InboundRcvPort
// 创建接收位置
// 点击同一个窗口中的接收位置并点击新建
// 配置接收位置如下
// 点击配置按钮并提供Inbound文件夹的位置
// 点击所有底层窗口中的确定
// 确保接收位置如下所示
消息将由文件基础的接收适配器拾取,然后传输到接收端口,并交付到消息框。
// 现在需要通过任何上下文属性(BTS.ReceivedFileName)订阅此交付的消息,以应用出站映射。这里,映射将在发送端口中应用
// 创建一个发送端口如下
// 点击静态单向发送端口并重命名为‘OutboundSendPort’,并进行以下所有配置
// 点击配置按钮并提供Outbound文件夹的位置
// 在发送端口中配置映射
// 点击同一个窗口左侧窗格中的出站映射
// 选择映射如下
// 点击应用
过滤器是订阅消息框中的消息的。
// 转到同一个窗口左侧窗格中的过滤器选项卡
// 从下拉菜单中选择上下文属性‘BTS.ReceivedPortName’
// 为属性提供值‘InboundRcvPort’
// 可以根据需要选择任何上下文属性(如BTS.MessageType)
// 应用所有设置并点击所有窗口中的确定
接收位置和发送端口将处于禁用状态,右键点击并启用。
确保主机实例BizTalkServerApplication正在运行。
已经完成了所有的配置部分,现在是测试整个解决方案的时候了。
// 复制在上一个任务中生成的实例文件
// 将文件放置在接收位置配置的Inbound文件夹中
// 文件将立即被拾取,输出将被转换并放置在输出文件夹中,文件名带有唯一的MessageID
// 输出文件将形成如下:
// Ha!!! ,已经完成了这个
// 解决方案按预期工作。
// 再次检查过滤器属性和配置的值
// 确保配置的发送位置有效
// 需要更多帮助,请查看挂起的服务实例以获取确切的问题