转载

使用 WebSphere Cast Iron 为 Web 服务端点开发一个插件连接器: 第 2 部分:实现 TestConnection 编排

Introduction

本系列教程的第 1 部分向您展示了如何使用 Cast Iron CDK 向导为 Salesforce.com 应用程序创建和配置一个新的插件连接器,配置连接器属性,并生成活动编排。第 2 部分将向您展示如何实现 TestConnection 编排,以及如何为 Connector Endpoint 面板开发 TestConnection 特性。

实现 TestConnection 编排

当您在 Connector Endpoint 面板上单击 Test Connection 时,就会调用 TestConnection 编排。因此,您需要在此编排中实现 TestConnection 逻辑,以便提取 connection 字段,连接到目标应用程序,并根据您的设计进行身份验证。

当您打开 Cast Iron studio 中已生成的 TestConnection 编排时,就会看见两个预先配置的活动,如图 1 所示:

图 1. 已生成的 TestConnection 模板编排

使用 WebSphere Cast Iron 为 Web 服务端点开发一个插件连接器: 第 2 部分:实现 TestConnection 编排
  • Provide Service (TestConnection) – Provide Service 活动是 TestConnection 操作的入口点,当您单击 Connector Endpoint 面板上的 Test Connection 时会调用该活动。在这个活动中,您可以访问 Map Outputs 部分中的所有的 connection 字段,如图 1 所示。这些 connection 字段是生成编排时在 CDK 向导中配置的字段。
  • Send Reply (Send Reply) – Send Reply 活动将 TestConnection 结果发送回连接器。

为了测试到 Salesforce.com 的连接并进行身份验证,Salesforce.com 在 partner.wsdl 中提供了一个 SOAP API 登录操作。因此,Salesforce.com 的 TestConnection 编排实现涉及使用 Cast Iron WebService Invoke Service 活动来调用 Salesforce.com 登录操作,并将结果发送回连接器。下面的步骤为 Salesforce.com 实现了 TestConnection 编排:

配置 Provide Service 活动

  1. 单击编排中的 Provide Service 活动,然后单击 Map Outputs
  2. 单击 Copy ,这将输出参数列表中的变量 header,然后单击 Create ,如图 2 所示。connectionFields 被从 header 参数复制到其他活动可以使用的编排变量。

    图 2. 将 header connectionFields 参数复制到一个编排变量

    使用 WebSphere Cast Iron 为 Web 服务端点开发一个插件连接器: 第 2 部分:实现 TestConnection 编排
  3. 双击 To Orchestration 中的 header 变量,并将它重新命名为 SalesforceConnectionFields ,如图 3 所示,然后按下 Enter

    图 3. 将变量标头重新命名为 SalesforceConnectionFields

    使用 WebSphere Cast Iron 为 Web 服务端点开发一个插件连接器: 第 2 部分:实现 TestConnection 编排

配置 Salesforce Login 活动

  1. 接下来,您需要创建一个 WebService 端点来调用 Salesforce.com。在右手边的 Projects 选项卡中,右键单击 Endpoints => Create Endpoint 并选择 WebService

    图 4. 创建一个 WebService 端点

    使用 WebSphere Cast Iron 为 Web 服务端点开发一个插件连接器: 第 2 部分:实现 TestConnection 编排
  2. 在 WebService Endpoint 面板中,单击 WSDL Name 字段的 Browse 并选择 partner.wsdl ,将 Salesforce.com partner.wsdl 加载到此 WebService 端点。该端点表示了一个 Salesforce.com 端点,您可以使用该端点,通过 partner.wsdl 中定义的 Web 服务来调用 Salesforce.com。
  3. 要将这个新创建的 WebService 端点重新命名为 SalesforceEndpoint ,请右键单击它并选择 Rename
  4. SalesforceEndpoint 拖放到编排,并选择 Invoke Service 活动,如图 5 所示。您可以使用此活动对 Salesforce.com 应用程序调用一个 Web 服务。

    图 5. 创建一个 WebService Invoke Service 活动

    使用 WebSphere Cast Iron 为 Web 服务端点开发一个插件连接器: 第 2 部分:实现 TestConnection 编排
  5. 单击编排中新创建的 Invoke Service 活动。一个活动清单会在底部打开。
  6. 转到 Summary 部分,将活动重新命名为 Salesforce Login ,并按下 Enter
  7. 转到 Configure 部分并从 WSDL 操作列表中选择 login 操作。您可以配置此活动来执行一个 Salesforce.com 登录 Web 服务调用。
  8. 转到 Map Inputs 部分。您会看到两个名为 usernamepassword 的字段,它们是 Salesforce.com 登录操作所需的字段。
  9. URL 字段是此活动的一个可选参数。因此,您需要通过添加可选参数来启用它,如图 6 所示。右键单击 To Activity 一边的空白地方并选择 Show Optional Parameters 。此活动的所有可选参数都将显示,您会看到一个 location 字段,您需要将 URL 从 Connection 字段映射到该字段。

    图 6. 启用 WebService Invoke Service 活动 Map Inputs 中的可选参数

    使用 WebSphere Cast Iron 为 Web 服务端点开发一个插件连接器: 第 2 部分:实现 TestConnection 编排
  10. 将 Salesforce connection 字段映射到此活动输入。单击 Select Inputs ,选择 SalesforceConnectionFields 变量,然后单击 OK 。将连接字段映射到 Salesforce Login 活动,如图 7 所示:

    图 7. 从 Connection 字段映射到 WebService Invoke Service 活动输入

    使用 WebSphere Cast Iron 为 Web 服务端点开发一个插件连接器: 第 2 部分:实现 TestConnection 编排
  11. 转到 Map Outputs 部分,将 body 复制到右边的一个新变量,然后将该变量重新命名为 loginResponse

配置 Send Reply 活动

这一节将向您展示如何配置 Send Reply 活动来将 Salesforce TestConnection 结果发送回连接器。根据登录响应是否成功,您需要将一份成功响应消息或失败响应消息发送回连接器。要检查这种情况,可以使用 Cast Iron If..Then 活动并配置 Send Reply 活动,如图 8 所示:

图 8. 用 passwordExpired Boolean 字段配置 If... Then 活动

使用 WebSphere Cast Iron 为 Web 服务端点开发一个插件连接器: 第 2 部分:实现 TestConnection 编排
  1. 从 Activities 选项卡的 Logic 部分,将 If...Then 活动拖放到编排。
  2. 单击编排中的 If 活动。
  3. 单击底部的 按钮。Select XPath 窗口将会打开。
  4. 选择 Variables 组合框中的 loginResponse 变量。
  5. 选择 passwordExpired 字段并单击 OK
  6. 选择 Op 列中的操作符 = ,并在 Right Hand Expression 列中输入 false()
  7. Send Reply 活动拖放到 If 条件中。将此活动重新命名为 Send Success Reply
  8. 单击 Send Reply 活动。
  9. 为 Success 字段提供默认值 true
  10. 为 Message 字段提供默认值 TestConnection Successful
  11. 将另一个 Send Reply 活动从 SalesforceEndpoint 拖放到 Else 条件。将此活动重新命名为 Send Failure Reply
  12. 对于 Send Failure Reply 活动,可以提供 false 作为 Success 字段的默认值,提供 Password expired. TestConnection Failed 作为 Message 字段的默认值。

现在,您已经配置了一个有效的 TestConnection 编排。最佳实践是向整个编排添加一个 Try-Catch 块,以便处理错误条件。

配置 Try-Catch 块

  1. 右键单击初始编排镜像 使用 WebSphere Cast Iron 为 Web 服务端点开发一个插件连接器: 第 2 部分:实现 TestConnection 编排 并选择 Add Catch Branch 。这将为整个编排添加一个 catch block。
  2. 将另一个 Send Reply 活动从 SalesforceEndpoint 拖放到 CatchAll 块。将这个活动重新命名为 Send Fault Reply
  3. 转到此 Send Fault Reply 活动的 Map Inputs 部分,并输入 false 作为 Success 字段的默认值。
  4. 单击 Select Inputs ,从列表中选择 faultInfo xml 变量,然后单击 OK
  5. message 字段从 faultInfo 变量连接到右手边的 message 字段。最后,您会看到完整的编排,如图 9 所示:

    图 9. 完整的 TestConnection 编排

    使用 WebSphere Cast Iron 为 Web 服务端点开发一个插件连接器: 第 2 部分:实现 TestConnection 编排

验证 TestConnection 编排

您可以使用实用工具 Invoke Service 来验证此 TestConnection 编排:

  1. 在 Orchestration 菜单中,单击 Invoke Service ,如图 10 所示。编排将会启动,而且还会打开 Service 窗口。

    图 10. 从 Orchestration 菜单中选择 Invoke Service 实用程序

    使用 WebSphere Cast Iron 为 Web 服务端点开发一个插件连接器: 第 2 部分:实现 TestConnection 编排
  2. 在 UserName、Password 和 URL 字段中提供您的 Salesforce.com 凭据并单击 Execute 。TestConnection 编排会被调用,并会获得结果。
  3. 单击右边的 Show Response 。您会在右边窗口中看到来自此编排的响应: Executing Invoke Service utility for TestConnection orchestration

为了验证负面情况,我们提供了一些无效的凭据,请注意来自编排的响应。

结束语

本系列教程的第 2 部分展示了如何使用 Salesforce.com 登录操作来实现插件连接器 TestConnection 编排。在第 3 部分中,您将学习如何构建一个 ListObjects 模板编排来实现连接器的对象浏览功能。

Acknowledgments

作者非常感谢 IBM India 的 Sarath K. Ambadas 和 Srihari Na Kumar 对本教程的审校和为本教程提供的宝贵建议。

正文到此结束
Loading...