在上一步中,你已创建并部署了 BizTalk Server 应用程序,以便将 Salesforce 通知接收到 BizTalk Server 中,并将详细信息插入到本地 SQL Server 数据库中。 在此步骤中,我们将在 BizTalk Server 管理控制台中配置应用程序。 配置应用程序主要涉及创建对应于我们在业务流程中创建的逻辑端口的物理端口。 它还涉及将物理端口绑定到逻辑端口。 我们将执行以下步骤来配置 BizTalk Server 应用程序:
- 配置请求-响应 WCF-BasicHttpRelay 接收位置,以接收来自 Salesforce 的机会通知。 
- 配置请求-响应 WCF-WebHttp 发送端口以向 Salesforce 发送查询,以检索与收到的机会通知相关的产品详细信息。 此发送端口还会从 Salesforce 接收查询响应。 
- 配置单向 WCF-SQL 发送端口,以将 Salesforce 的查询响应插入到本地 SQL Server 数据库中。 
- 通过将业务流程中的逻辑端口与 BizTalk Server 管理控制台中创建的物理端口相关联来配置 BizTalk Server 应用程序。 
配置 WCF-BasicHttpRelay 接收位置
- 打开 BizTalk Server 管理控制台。 展开“应用程序”节点并查找 SalesforceIntegration 应用程序。 从 Visual Studio 部署 BizTalk Server 项目时,会创建此应用程序。 
- 展开 SalesforceIntegration 应用程序,右键单击 “接收端口”,指向“ 新建”,然后单击“ Request-Response 接收端口”。 将端口名称指定为 - ReceiveOppNotification,然后在左窗格中单击 “接收位置”。
- 在“接收位置属性”对话框中,指定以下值: - 参数 - 价值 - 名称 - 输入 - ReceiveOppNotification。- 类型 - 选择 WCF-BasicHttpRelay - 接收处理程序 - 选择 BizTalkServerApplication - 接收管道 - 选择 XMLReceive - 发送管道 - 选择 PassThruTransmit - 针对端口类型单击“ 配置 ”。 
- 在“WCF-BasicHttpRelay 传输属性”对话框中,指定以下值: - 在“ 常规 ”选项卡上,对于 “地址”(URI),请输入 - https://btssalesforce.servicebus.windows.net/notifications/opportunity。 在这里, btssalesforce 是在 步骤 1 中创建的命名空间:创建服务总线命名空间。 此处指定的 URL 与在 步骤 2:设置 Salesforce 系统中创建工作流时指定的 URL 相同。 你设置了一个工作流,每次机会阶段设置为“已关闭的获胜”时,Salesforce 都会向 URL- https://btssalesforce.servicebus.windows.net/notifications/opportunity发送通知。 此处指定相同的 URL 作为此接收位置配置的一部分。 启用接收位置后,会在 Azure Microsoft中创建 URL 指定的中继终结点。
- 在“ 安全 ”选项卡上,指定以下内容: - 对于 安全模式,请选择 “传输 ”,对于 中继客户端身份验证类型,请选择“ 无”。 
- 选中“ 启用服务发现 ”复选框以在 服务注册表中发布服务行为。 指定用于表示服务发布到注册表时使用的名称的显示名称。 可以将 发现模式 设置为公共模式或专用模式。 对于本教程,请将显示名称 - SF Outbound Notification设置为“公共”,并将“发现”模式设置为“公共”。
- 在“访问控制服务”框中,单击“ 编辑”。 对于 访问控制服务 STS URI,请输入 - https://btssalesforce-sb.accesscontrol.windows.net/。 对于颁发者名称和颁发者密钥,请输入在步骤 1 中保存的值:为默认用户和默认密钥字段创建服务总线命名空间。
 
- 单击 “确定 ”,直到退出所有打开的对话框。 
 
配置 WCF-WebHttp 发送端口
- 展开 SalesforceIntegration 应用程序,右键单击 “发送端口”,指向“ 新建”,然后单击“ 静态 Solicit-Response 发送端口。 
- 在“发送端口属性”对话框中,指定以下值: - 参数 - 价值 - 名称 - 输入 - SalesforceREST。- 类型 - 选择 WCF-WebHttp - 发送处理器 - 选择 BizTalkServerApplication - 发送管道 - 选择 PassThruTransmit - 接收管道 - 选择 AddNamespace ,然后单击管道旁的省略号按钮以配置管道。 
 - 在 阶段 1 下:对NamespaceBase 进行解码,输入- http://BtsSalesforceIntegration.QueryResult。 这是在步骤 3b 中创建的 QueryResult.xsd 架构的命名空间 :使用 WCF-WebHttp 适配器从 Salesforce 检索商机详细信息。 当 AddNamespace 接收管道从 Salesforce 接收响应时,它会将此命名空间添加到响应消息中。 默认情况下,Salesforce 的响应消息不包含任何命名空间。
 对于 NamespacePrefix,请输入- sf。
 - 在 阶段 2:拆卸,接受默认值,然后单击确定。- 在“发送端口属性”对话框中,单击“针对端口类型 配置 ”。 
- 在“WCF-WebHttp 传输属性”对话框中,指定以下值: - 在常规选项卡上,执行以下操作: - 对于 地址(URI),请输入 - https://<Salesforce_instance_name>.salesforce.com/services/data/v24.0。 可以通过在打开 Salesforce.com 门户的地址栏中复制 https:// 和 Salesforce.com 之间的文本来检索 Salesforce 实例名称。 例如,如果 Salesforce 门户中的 URL https://na15.salesforce.com/home/home.jsp,则 Salesforce 实例名称为 na15。
- 在 “HTTP 方法和 URL 映射 ”框下,指定以下内容: - <BtsHttpUrlMapping> <Operation Method="GET" Url="/query?q={VAR}" /> </BtsHttpUrlMapping>- 下面介绍了此设置的使用方式 — 若要查询 Salesforce 以检索有关机会通知的详细信息,我们必须对 Salesforce REST 终结点(在 地址 字段中指定)执行 GET作,并追加查询以检索机会详细信息。 因此,URL 应如下所示: - https://na15.salesforce.com/services/data/v24.0/query?q=<query_string>- 我们已将 Salesforce REST 终结点作为 “地址”(URI) 字段的一部分。 因此,作为 HTTP 方法和 URL 映射 属性的一部分,我们指定了使用 GET 方法并将 {VAR} 追加为变量。 
- 在 “变量映射 ”框中,单击“ 编辑”。 在此框中,指定在运行时如何推断 {VAR} 变量的值。 - 在 步骤 3b:使用 WCF-WebHttp Adapter 从 Salesforce 检索商机详细信息 中,我们提升了 查询 属性,这导致创建了 PropertySchema.xsd。 我们将使用该架构中的 Query 元素通过将该元素映射到 URL 中的 {VAR} 变量来传递查询字符串。 - 在“变量映射”对话框中, “变量 ”列列出了前面指定的变量的名称,例如 VAR。 在 “属性名称 ”列中,指定要传递给变量的查询字符串的提升属性的名称。 在本教程中,该属性名称为 Query。 最后,对于 属性命名空间,指定 PropertySchema.xsd 的命名空间,即 - https://BtsSalesforceIntegration.PropertySchema。 单击 “确定” 。  
 
- 在 “安全 ”选项卡上,对于 安全模式,选择“ 传输”。 
- 在“ 行为 ”选项卡上,使用在步骤 3d 中创建的自定义行为 :使 BizTalk Server 能够从 Salesforce 发送和接收消息 ,以便向 Salesforce 进行身份验证。 若要使用该行为,请执行以下操作: - 右键单击 EndpointBehavior ,然后选择 “添加扩展”。 
- 在“ 选择行为扩展 ”对话框中,选择 Microsoft.BizTalk.Adapter.Behaviors.Demo.Salesforce。 我们在将行为添加到 machine.config时使用了此行为名称。 
- 选择新添加的行为,然后指定以下值: - 参数 - 价值 - consumerKey (必需) - 指定 Salesforce 帐户的使用者密钥。 您可以通过转到 Salesforce 连接应用程序(在 步骤 2:设置 Salesforce 系统 中创建)来检索客户密钥。 - consumerSecret (必需) - 从在步骤 2 中创建的 Salesforce 连接应用程序中检索使用者机密 :设置 Salesforce 系统。 - 密码(必需) - 指定 Salesforce 帐户的密码。 若要从第三方应用程序连接到 Salesforce,必须在密码格式中指定密码,后跟安全令牌。 例如,如果密码是 密码 ,并且令牌为 XXXXXX,则必须输入 - passwordXXXXXX。- 会话超时 - 默认值为 300。 - 用户名(必需) - 指定 Salesforce 开发人员登录帐户。   
 
- 在“消息”选项卡下的“出站消息”框中,对于“动词隐藏正文”,请输入 - GET。 这可确保对于 GET 方法,请求中没有消息有效负载发送到 Salesforce。
- 单击 “确定 ”,直到退出所有打开的对话框。 
 
配置 WCF-SQL 发送端口
- 展开 SalesforceIntegration 应用程序,右键单击 “发送端口”,指向“ 新建”,然后单击“ 静态单向发送端口”。 
- 在“发送端口属性”对话框中,指定以下值: - 参数 - 价值 - 名称 - 输入 - SendToSQL。- 类型 - 选择 WCF-SQL - 发送处理程序 - 选择 BizTalkServerApplication - 发送管道 - 选择 XMLTransmit - 在“发送端口属性”对话框中,单击“针对端口类型 配置 ”。 
- 在“WCF-SQL 传输属性”对话框中,指定以下值: - 在常规选项卡上,执行以下操作: - 在 - Endpoint Address下,单击配置。 对于 InitialCatalog 属性,请指定包含必须输入 Salesforce 响应数据的表的数据库名称。 对于本教程,请输入此值。- Orders对于 Server 属性,请输入安装 SQL Server 数据库的服务器名称。
- 在SOAP动作头下,指定要用于插入OrderDetails表的动作。 必须输入 - TableOp/Insert/dbo/OrderDetails。
 
- 在“凭据”选项卡上,如果将所有内容留空,适配器将使用 Windows 身份验证连接到 SQL Server 数据库。 如果要使用任何其他形式的身份验证,可以指定相关值。 
- 单击 “确定 ”,直到退出所有打开的对话框。 
 
配置 BizTalk Server 应用程序
- 在 BizTalk Server 管理控制台中,右键单击 SalesforceIntegration 应用程序,然后单击“ 配置”。 
- 在“配置应用程序”对话框中,选择 NotificationServiceClient 业务流程,然后从右窗格中执行以下操作: - 对于主机,请选择 BizTalkServerApplication。 
- 将逻辑接收端口 SalesforceNotificationPort 映射到物理接收端口 ReceiveOppNotification。 
- 将逻辑发送端口 SalesforceRESTInterface 映射到物理发送端口 SalesforceREST。 
- 将逻辑发送端口 SendToSQL 映射到物理发送端口 SendToSQL。 - 单击 “确定” 。 
 
- 右键单击 SalesforceIntegration 应用程序,然后单击“ 开始”。 这会启动 NotificationServiceClient 业务流程,启用接收位置,并启动发送端口。 - 在本主题中,我们完成了在 BizTalk Server 管理控制台中配置解决方案,方法是将业务流程中的逻辑端口与物理端口相关联。