步骤 3c:将机会详细信息插入到 SQL Server 数据库
迄今,我们已构建用于将查询发送到 Salesforce 并接收响应的业务流程。 在本部分中,我们将更新该业务流程,以将来自 Salesforce 的响应插入到本地SQL Server数据库 Orders 中的 OrderDetails 表。 为此,我们将执行以下广泛的步骤:
在本地 SQL Server 数据库中的 Orders 数据库中创建 OrderDetails 表。
使用 BizTalk 适配器包提供的“使用适配器服务加载项”,为 OrderDetails 表上的“插入”操作生成架构。
创建一个映射,将 Salesforce 响应消息转换为要插入到 SQL Server 中的 OrderDetails 表中的消息。
更新业务流程以使用转换将响应消息插入 OrderDetails 表。
创建 SQL Server 数据库和表
创建数据库和表
打开 SQL Server Management Studio 并以管理员身份连接。
右键单击“ 数据库” 节点,然后单击“ 新建数据库”。 将数据库名称指定为
Orders
并指定其他详细信息以创建新数据库。打开查询编辑器并运行以下查询,在 Orders 数据库中创建 OrderDetails 表:
USE [Orders] GO /****** Object: Table [dbo].[OrderDetails] Script Date: 07-12-2012 22:15:47 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[OrderDetails]([ID] [int] IDENTITY(1,1) NOT NULL, [TITLE] [varchar](200) NULL, [ProductName] [varchar](200) NULL, [Quantity] [float] NULL, [Amount] [float] NULL, PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY] GO SET ANSI_PADDING OFF GO
创建用于对 OrderDetails 表执行 Insert 操作的架构
安装 BizTalk 适配器包提供了一个“使用适配器服务加载项”,可在BizTalk Server项目中用于为 OrderDetails 表上的“插入”操作生成架构。 本部分提供创建消息架构时要执行的步骤。
创建用于 Insert 操作的架构
右键单击 BtsSalesforceIntegration 项目,指向 “添加”,然后单击“ 添加生成的项”。 在“ 添加生成的项 ”对话框中,单击“ 使用适配器服务”,然后单击“ 添加”。
在“使用适配器服务加载项”的“选择绑定”下拉列表中,单击“ sqlBinding”,然后单击“ 配置”。
在“配置适配器”对话框中的“安全”选项卡下,对于“客户端凭据类型”,选择“Windows”以使用Windows 身份验证连接到SQL Server数据库。
在“ 配置适配器 ”对话框的“ URI 属性 ”选项卡下,为 “初始目录 ”指定要连接到 (Orders) 的数据库名称。 对于“服务器”,请指定要在其中安装连接到SQL Server的计算机名称。 如果SQL Server数据库与 BizTalk Server 项目位于同一台计算机上,则只需将句点 (.) 。 单击 “确定” 。
在“使用适配器服务加载项”中,单击“ 连接”。 建立连接后,选择协定类型作为 客户端 (出站操作) 。 在 “选择类别 ”框下,展开“ 表”,单击“ OrderDetails 表”,然后在右窗格中单击“ 插入 ”,然后单击“ 添加”。
如果要为生成的架构添加标识符前缀,请指定 文件名 前缀。 在本教程中,我们将前缀指定为 InsertOrders ,然后单击“ 确定”。
此时,多个架构将添加到项目中。 用于将消息插入 OrderDetails 表的架构是 InsertOrdersTableOperation.dbo.OrderDetails.xsd。
映射 Salesforce 响应架构和插入架构
现在,我们有了来自 Salesforce 的 (响应和插入 OrderDetails) 的架构,我们必须将 Salesforce 的响应架构映射到 OrderDetails 的插入架构中,以便 Salesforce 的响应消息可以插入到 SQL Server 数据库表中。
映射架构
右键单击 BtsSalesforceIntegration 项目,指向 “添加”,单击“ 新建项”,然后单击“ 映射”。 将映射名称指定为
QueryResult_Orders.btm
,然后单击“ 添加”。在映射图面上,对于源架构,选择“ QueryResult ”,对于目标架构,选择“ InsertOrdersTableOperation.dbo.OrderDetails.xsd ”,然后在该图面中选择 “插入” 节点。
映射这两个架构,如下面的屏幕快照中所示:
请注意,地图在记录和 OrderDetails 链接之间使用循环 functoid。 这可确保 记录 下的所有一个或多个节点匹配项都映射到 OrderDetails 下的类似节点匹配项。
保存对映射所做的更改。
更新业务流程,以将消息插入到 SQL Server
在此部分中,我们将在业务流程中使用映射,将 Salesforce 响应消息转换为用于将订单详细信息插入到 SQL Server 表的消息。 我们还将添加用于将该消息发送到 SQL Server 的端口。
更新业务流程
为插入架构创建消息变量。 在业务流程视图中,右键单击“ 消息 ”节点,然后单击“ 新建消息”。 将消息名称设置为 InsertOrders ,将消息类型设置为 BtsSalesforceIntegration.InsertOrdersTableOperation_dbo_OrderDetails.Insert。
在 ReceiveQueryResult 形状之后添加构造消息形状。 将形状的名称设置为
ConstructOrders
,并将 Messages Constructed 属性设置为 InsertOrders。在 ConstructOrders 形状中,添加 转换 形状。 双击“转换”形状以打开“转换配置”对话框。 在对话框中,选择 “现有映射 ”选项,然后从下拉列表中选择 “BtsSalesforceIntegration.QueryResult_Orders”。 将 “源 ”设置为 “QueryResultMsg”,将 “目标 ”设置为“ InsertOrders”,然后单击“ 确定”。
在 ConstructOrders 形状之后,添加发送形状。 为形状
SendOrders
命名,并将消息类型设置为 InsertOrders。添加用于将订单详细信息插入到 Salesforce 的端口。 在“端口配置”向导中,选择以下选项:
将端口名称指定为
SendToSQL
。选择用于创建新的端口类型的选项。
将 通信模式 设置为 单向。
将 “通信的端口方向 ”设置为 “我始终在此端口上发送消息 ”,并将 “端口绑定 ”设置为 “稍后指定”。
将端口的请求操作连接到 SendOrders Send 形状以完成业务流程。 以下屏幕快照描述了已完成的业务流程(端到端)。
向项目添加强名称密钥文件,并保存对项目所做的更改。
使用本主题中的步骤,我们已经完成业务流程,以接收来自 Salesforce 的机会通知,查询 Salesforce 以获取有关机会的详细信息,然后将查询响应插入到 SQL Server 数据库中。 在随后的主题中,我们将构建此解决方案的其他一些关键组件,这些组件用于向 Salesforce 进行身份验证,并在 BizTalk Server 内处理 Salesforce 响应。