步骤 4:配置 BizTalk Server 解决方案

在上一步中,你创建并部署了一个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 接收位置

  1. 打开 BizTalk Server 管理控制台。 展开“应用程序”节点并查找 SalesforceIntegration 应用程序。 此应用程序是在从 Visual Studio 部署 BizTalk Server 项目时创建的。

  2. 展开 SalesforceIntegration 应用程序,右键单击“ 接收端口”,指向 “新建”,然后单击“ 请求-响应接收端口”。 将端口名称指定为 ReceiveOppNotification ,在左窗格中单击“ 接收位置”。

  3. 在“接收位置属性”对话框中,指定以下值:

    参数
    名称 输入 ReceiveOppNotification
    类型 选择 WCF-BasicHttpRelay
    接收处理程序 选择 BizTalkServerApplication
    接收管道 选择 XMLReceive
    发送管道 选择 PassThruTransmit

    单击“针对端口类型 配置 ”。

  4. 在“WCF-BasicHttpRelay 传输属性”对话框中,指定以下值:

    1. 在“ 常规 ”选项卡上,对于“ 地址 (URI) ”,输入 https://btssalesforce.servicebus.windows.net/notifications/opportunity。 此处, btssalesforce 是在 步骤 1:创建服务总线命名空间中创建的命名空间。 此处指定的 URL 与在 步骤 2:设置 Salesforce 系统中创建工作流时指定的 URL 相同。 你设置了一个工作流,在该工作流中,每次将商机的阶段设置为“已结束”时,Salesforce 都会向 URL https://btssalesforce.servicebus.windows.net/notifications/opportunity发送通知。 我们在此处指定与接收位置配置部分相同的 URL。 启用接收位置后,会在 Microsoft Azure 中创建 URL 指定的中继终结点。

    2. 在“ 安全 ”选项卡上,指定以下内容:

      • 对于 “安全模式”,请选择“ 传输 ”,对于 “中继客户端身份验证类型”,请选择“ ”。

      • 选中“启用服务发现检查框以在服务注册表中发布服务行为。 指定表示将服务发布到注册表时使用的名称的 显示 名称。 可以将 发现模式 设置为公共或专用。 对于本教程,请将 “显示名称” 设置为 SF Outbound Notification ,将 “发现模式” 设置为 “公共”。

      • 在“访问控制服务”框中,单击“ 编辑”。 对于“访问控制服务 STS URI”,请输入 https://btssalesforce-sb.accesscontrol.windows.net/。 对于“颁发者名称”和“颁发者密钥”,请输入在“步骤 1:为默认用户”和“默认密钥”字段创建服务总线命名空间中保存的值。

    3. 单击“ 确定” ,直到退出所有打开的对话框。

配置 WCF-WebHttp 发送端口

  1. 展开 SalesforceIntegration 应用程序,右键单击“ 发送端口”,指向 “新建”,然后单击“ 静态 Solicit-Response 发送端口”。

  2. 在“发送端口属性”对话框中,指定以下值:

    参数
    名称 输入 SalesforceREST
    类型 选择 WCF-WebHttp
    发送处理程序 选择 BizTalkServerApplication
    发送管道 选择 PassThruTransmit
    接收管道 选择“ AddNamespace ”,然后单击管道的省略号按钮以配置管道。

    - 在 “阶段 1:解码”下,对于 NamespaceBase,输入 http://BtsSalesforceIntegration.QueryResult。 这是在 步骤 3b:使用 WCF-WebHttp Adapter 从 Salesforce 检索商机详细信息中创建的 QueryResult.xsd 架构的命名空间。 当 AddNamespace 接收管道从 Salesforce 接收响应时,它会将此命名空间添加到响应消息中。 默认情况下,来自 Salesforce 的响应消息不包括任何命名空间。
    对于 NamespacePrefix,请输入 sf
    - 在 “阶段 2:反汇编”下,接受默认值,然后单击“ 确定”。

    在“发送端口属性”对话框中,单击“针对端口类型 配置 ”。

  3. 在“WCF-WebHttp 传输属性”对话框中,指定以下值:

    1. 在“常规”选项卡上,执行下列操作:

      • 对于 “地址 (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 检索商机详细信息中,我们升级了 Query 属性,从而创建了 PropertySchema.xsd。 我们将使用该架构中的 Query 元素,通过将该元素映射到 URL 中的 {VAR} 变量来传递查询字符串。

        在“变量映射”对话框中, “变量 ”列列出了前面指定的变量的名称,例如 VAR。 在 “属性名称” 列中,指定具有要传递给变量的查询字符串的已升级属性的名称。 在本教程中,该属性名称为 Query。 最后,对于 “属性命名空间”,请指定 PropertySchema.xsd 的命名空间,即 https://BtsSalesforceIntegration.PropertySchema。 单击 “确定”

        WCF-WebHttp 适配器BTS_SF_WebHttp_General的“常规”选项卡

    2. 在“ 安全 ”选项卡上,对于“ 安全模式”,选择“ 传输”。

    3. 在“行为”选项卡上,使用在步骤 3d:启用 BizTalk Server 以从 Salesforce 发送和接收消息中创建的自定义行为,以便向 Salesforce 进行身份验证。 若要使用该行为,请执行以下操作:

      • 右键单击“ EndpointBehavior ”,然后选择“ 添加扩展”。

      • “选择行为扩展 ”对话框中,选择“ Microsoft.BizTalk.Adapter.Behaviors.Demo.Salesforce”。 我们在将行为添加到 machine.config 时已使用此行为名称。

      • 选择新添加的行为,然后指定以下值:

        参数
        consumerKey(必需) 指定你的 Salesforce 帐户的使用者密钥。 可以通过转到在 步骤 2:设置 Salesforce 系统中创建的 Salesforce 连接应用程序来检索使用者密钥。
        consumerSecret(必需) 从在 步骤 2:设置 Salesforce 系统中创建的 Salesforce 连接应用程序中检索使用者机密。
        密码(必需) 指定 Salesforce 帐户的密码。 若要从第三方应用程序连接到 Salesforce,必须以密码后跟安全令牌的格式指定密码。 例如,如果密码为 密码 且令牌为 XXXXXX,则必须输入 passwordXXXXXX
        sessionTimeout 此项的默认值为 300。
        用户名(必需) 指定 Salesforce 开发人员登录帐户。

        WCF-WebHttp 适配器BTS_SF_WebHttp_Behavior的行为选项卡

    4. 在“ 消息 ”选项卡上的“ 出站消息 ”框下,对于 “禁止动词正文”,输入 GET。 对于 GET 方法,这可以确保在要发送给 Salesforce 的请求中没有任何消息负载。

    5. 单击“ 确定” ,直到退出所有打开的对话框。

配置 WCF-SQL 发送端口

  1. 展开 SalesforceIntegration 应用程序,右键单击“ 发送端口”,指向“ 新建”,然后单击“ 静态单向发送端口”。

  2. 在“发送端口属性”对话框中,指定以下值:

    参数
    名称 输入 SendToSQL
    类型 选择 WCF-SQL
    发送处理程序 选择 BizTalkServerApplication
    发送管道 选择 XMLTransmit

    在“发送端口属性”对话框中,单击“针对端口类型 配置 ”。

  3. 在“WCF-SQL 传输属性”对话框中,指定以下值:

    1. 在“常规”选项卡上,执行下列操作:

      • 在 下 Endpoint Address,单击“ 配置”。 对于 InitialCatalog 属性,请指定数据库名称,该名称包含必须输入来自 Salesforce 响应的数据的表。 对于本教程,输入此值作为 Orders。 对于“服务器属性”,输入安装SQL Server数据库的服务器名称。

      • SOAP 操作标头下,指定要用于插入 OrderDetails 表的操作。 必须输入 TableOp/Insert/dbo/OrderDetails

    2. 在“凭据”选项卡上,如果你将所有项留空,则适配器将使用 Windows 身份验证连接到 SQL Server 数据库。 如果你要使用任何其他形式的身份验证,则可以指定相关值。

    3. 单击“ 确定” ,直到退出所有打开的对话框。

配置 BizTalk Server 应用程序

  1. 在BizTalk Server管理控制台中,右键单击 SalesforceIntegration 应用程序,然后单击“配置”。

  2. 在“配置应用程序”对话框中,选择 NotificationServiceClient 业务流程,然后从右窗格中执行以下操作:

    1. 对于“主机”,选择“ BizTalkServerApplication”。

    2. 将逻辑接收端口 SalesforceNotificationPort 映射到物理接收端口 ReceiveOppNotification

    3. 将逻辑发送端口 SalesforceRESTInterface 映射到物理发送端口 SalesforceREST

    4. 将逻辑发送端口 SendToSQL 映射到物理发送端口 SendToSQL

      单击 “确定”

  3. 右键单击 SalesforceIntegration 应用程序,然后单击“ 开始”。 这会启动 NotificationServiceClient 业务流程、启用接收位置并启动发送端口。

    在本主题中,我们通过将业务流程中的逻辑端口与物理端口相关联,完成了在 BizTalk Server 管理控制台中配置解决方案。