完成时间: 10 分钟
目的: 在此步骤中,你将对现有 vPrev BizTalk 项目进行以下更改:
使用基于 WCF 的 SQL 适配器对 Customer 表进行 Insert 操作生成元数据。
将用于执行插入操作的请求消息从使用 vPrev SQL 适配器映射到使用基于 WCF 的 SQL 适配器的请求消息。
将使用基于 WCF 的 SQL 适配器收到的响应消息映射到使用 vPrev SQL 适配器收到的响应消息。
先决条件
必须有一个 vPrev BizTalk 项目才能在 SQL Server 数据库中的 Customer 表上执行插入操作。
修改 vPrev BizTalk 项目
使用基于 WCF 的 SQL 适配器对 Customer 表进行 Insert 操作生成元数据。 可以使用“Consume Adapter Service BizTalk Project 加载项”生成元数据。
有关如何生成元数据的说明,请参阅 使用 SQL 适配器在 Visual Studio 中获取 SQL Server 操作的元数据。 生成架构后,会将名称类似于 TableOperation.dbo.Customer.xsd 的文件添加到 BizTalk 项目。 此文件包含用于通过基于 WCF 的 SQL 适配器向 SQL Server 数据库中的 Customer 表发送执行插入操作的消息架构。
生成 Insert操作的元数据还会创建一个端口绑定文件。 在下一步中,此绑定文件将用于创建 WCF-Custom 发送端口以将消息发送到 SQL Server 数据库。 该操作的 SOAP 动作也被设置为据其生成的元数据的操作。 例如,如果为 Insert 操作生成元数据,则发送端口上的 SOAP 操作中的操作名称将为“Insert”。 但是,作为业务流程一部分创建的逻辑发送端口上的作名称可能有所不同,例如“Operation_1”。 因此,使用发送端口将消息发送到 SQL Server 数据库时,会收到错误。 若要防止出现这种情况,请确保业务流程中逻辑发送端口上的操作名称与生成元数据的操作名称相同。
在本教程中,由于您为 Insert 操作生成了元数据,因此请将逻辑发送端口操作的名称更改为“Insert”。
对于请求消息,请将使用 vPrev SQL 数据库适配器生成的架构映射到使用基于 WCF 的 SQL 适配器生成的架构。
将 BizTalk 映射器添加到 BizTalk 项目。 右键单击 BizTalk 项目,指向 “添加”,然后单击“ 新建项”。
在“ 添加新项 ”对话框中的左窗格中,选择“ 映射文件”。 在右窗格中,选择“映射”。 指定映射的名称,例如 RequestMap.btm。 单击 添加。
在“源架构”窗格中,单击“ 开放源代码架构”。
在 BizTalk 类型选取器 对话框中,展开项目名称,展开 “架构”,然后选择 vPrev SQL 适配器的请求消息的架构。 对于本教程,请选择 New_Migration.InsertCustomerService,然后单击“ 确定”。
在 “源架构的根节点 ”对话框中,选择“ 插入”,然后单击“ 确定”。
在“目标架构”窗格中,单击“ 打开目标架构”。
在 BizTalk 类型选取器 对话框中,展开项目名称、展开 “架构”,然后选择基于 WCF 的 SQL 适配器的请求消息的架构。 对于本教程,请选择 New_Migration.TableOperation.dbo.Customer,然后单击“ 确定”。
在 “目标架构的根节点 ”对话框中,选择“ 插入”,然后单击“ 确定”。
将这两个方案中的相应元素进行映射,如下图所示。
保存地图。
对于响应消息,请将使用 vPrev SQL 适配器生成的架构映射到使用基于 WCF 的 SQL 适配器生成的架构。
将 BizTalk 映射器添加到 BizTalk 项目。 右键单击 BizTalk 项目,指向 “添加”,然后单击“ 新建项”。
在“ 添加新项 ”对话框中的左窗格中,选择“ 映射文件”。 在右窗格中,选择“映射”。 为地图指定名称,例如 ResponseMap.btm,然后单击“ 添加”。
在“源架构”窗格中,单击“ 开放源代码架构”。
在 BizTalk 类型选取器 对话框中,展开项目名称、展开 “架构”,然后选择基于 WCF 的 SQL 适配器的响应消息的架构。 对于本教程,请选择 New_Migration.TableOperation.dbo.Customer,然后单击“ 确定”。
在 “源架构的根节点 ”对话框中,选择 “InsertResponse”,然后单击“ 确定”。
在“目标架构”窗格中,单击“ 打开目标架构”。
在 BizTalk 类型选取器 对话框中,展开项目名称、展开 “架构”,然后选择 vPrev SQL 适配器的响应消息的架构。 对于本教程,请选择 New_Migration.InsertCustomerService,然后单击“ 确定”。
在 “目标架构的根节点 ”对话框中,选择 InsertResponse,然后单击“ 确定”。
你会注意到两个适配器生成的响应架构之间存在一些差异。 可以按如下所述解释这些差异:
如果使用基于 WCF 的 SQL 适配器,如果将记录插入到包含主键(也是标识字段)的表中,则 Insert作的响应将返回插入行的标识字段的值。 因此,符合基于 WCF 的 SQL 适配器的响应消息的架构包含一个附加的 InsertResult 元素。 此元素包含一个数组,后者又包含插入行的标识字段。
如果使用 vPrev SQL 适配器,如果将记录插入表中,适配器仅返回空的“Success”元素作为响应消息的一部分。
因此,架构的映射方式是,将基于 WCF 的 SQL 适配器响应中标识字段的值“复制”为“Success”元素的一部分,而该“Success”元素是 vPrev SQL 适配器响应消息的一部分。 可以使用 Mass Copy 函数元将元素从一个架构复制到另一个架构中。
若要使用“质量复制”functoid,请从 工具箱中拖动“质量复制”functoid 并将其放在映射器网格上。 将源架构中的 InsertResult 元素连接到 functoid。 同样,将目标架构中的 Success 元素连接到 functoid。 下图演示了如何通过 functoid 映射这两个元素。
注释
有关 Mass Copy Functoid 的详细信息,请参阅 Mass Copy Functoid。
保存地图。
保存并生成 BizTalk 解决方案。 右键单击解决方案,然后单击“ 生成解决方案”。
部署解决方案。 右键单击解决方案,然后单击“ 部署解决方案”。
后续步骤
创建 WCF 自定义发送端口,并将其配置为使用在此步骤中创建的映射,如 步骤 2 中所述:使用 SQL 适配器在 BizTalk Server 管理控制台中配置业务流程。