内容


实现无代码化!在 IBM App Connect 中创建一个 API 并从 IBM Business Process Manager 调用它

作为业务流程的一部分,在 Salesforce 中创建一个联系人

Comments

创建流程应用程序时,您希望专注于业务价值,而不是专注于底层技术的复杂性。对于集成,通常必须了解一些您不知道的细节。但是,基于云的现代应用程序(比如 Salesforce)通常提供了基于 Web 的 API,以期让集成变得更容易。实际上,在最近几年,IBM® Business Process Manager (BPM) 在对 REST API 的支持上取得了巨大进步。但是,API 的使用通常很复杂,伴随着精细的错误处理过程和相对复杂的数据模型。开发人员常常想要 API 的某个特定的简单用例,这个用例仅是 API 的完整功能的一个很小的子集。

因为 IBM BPM 支持采用无代码形式创建流程,所以您可能也想以无代码方式创建和扩展与外部服务的连接,这时 IBM App Connect 就可以派上用场。您可以将 IBM App Connect 视为 IBM BPM 的“云连接器”,简化与基于云的应用程序的集成。通过使用 IBM App Connect,可以在一个无代码的流设计器中创作 API。还可以为大量常见的软件即服务 (SaaS) 应用程序(包括 Salesforce)提供连接器,就像本教程的示例中使用的连接器一样。

本教程将演示 IBM App Connect 如何简化使用 Salesforce 创建联系人的任务。IBM App Connect 中的连接器不只是技术连接器。例如,Salesforce 连接器被设计为与 Salesforce 建立安全连接并管理许多常见的错误条件。它还会检测使用众多 Salesforce API 中的哪一个来执行所有常见操作,以及有哪些常见对象,比如一个类似联系人的对象。通过了解本教程中的示例,您将学会如何在 IBM App Connect 中使用 Salesforce 功能,以无代码方式实现一个简化的 API,以供 IBM BPM 使用。您还将了解如何借助 IBM BPM 中的 REST 功能来使用该 API。

本教程有两个关键任务。首先,学习如何在 App Connect 中创建 API。其次,创建一个可重用的外部服务在 IBM BPM 中调用该 API。如果您已经知道如何执行第一个任务,可以跳过它,开始学习第二个任务来创建外部服务。

试用 IBM App Connect试用 IBM BPM

前提条件

  • IBM App Connect 帐户
  • Salesforce 开发人员帐户

    有了 Salesforce 开发人员帐户,您就可以使用自己的 IBM App Connect 用户 ID 和密码进行登录,从而调用 Salesforce API。Salesforce 开发人员帐户不同于普通的 Salesforce 用户帐户。

在 App Connect 中创建 API

在这一部分中,将创建并公开一个简单 API,以便在 Salesforce 中创建一个联系人。下面这个示例展示了在您创建这个新联系人后,它在 Saleforce 中的外观。

基于一个简单 API 实现在 Salesforce 中新建一个联系人
基于一个简单 API 实现在 Salesforce 中新建一个联系人

这个示例是您可以创建的最简单的 API。尽管如此,您可以看到,借助一个更简单的数据模型,您可以使用该 API 公开一个更复杂的 Salesforce API。这个 API 还提供了一个占位符,让您以后可以向它添加更复杂的功能。开始之前,请登录您的 Salesforce 帐户

  1. 主页登录 IBM App Connect。您会看到包含您的集成的仪表板。如果是第一次使用 App Connect,您的仪表板将会是空的。
  2. 单击 New。您会看到两个选项:
    • Event-driven flow。您的集成将会使用其内置连接器来监听一个事件来源(比如向 Marketo 中的一个营销活动添加新客户),并在每次发生某个事件时运行该流。
    • Create flows for an API。该流将自身公开为 API,并等待使用应用程序启动它。
  3. 要实现该 API,请选择 Create flows for an API事件驱动的流和 API 流选项
    事件驱动的流和 API 流选项

    流中的相似性这个示例中的基础流看起来类似于事件驱动的流,并使用了相同的可视工具,比如流编辑器、连接器和数据映射。但是,该流有一些细微的差别。例如,在事件驱动的流中,必须首先配置一个与触发应用程序相连的连接器。初始数据模型是通过触发事件的发生来执行的。另外,不存在“响应”的概念,因为整个流是异步的。而且也没有“调用方”等待来自流的响应。在这个示例中,您创建了一个 API,您可以定义该 API 将用于请求和响应的数据的形式(“模型”)。最后,该流为调用方提供了一个“响应”。

  4. 要公开一个 API,需要确定您希望用于该 API 的请求数据具有何种形式。可以使用下面的简单表格手动输入请求模型。 创建 API 数据模型
    创建 API 数据模型

    在许多情况下,可以根据您在执行该流期间调用的一个系统来创建 API。在本例中,该系统为 Salesforce。

  5. 单击 Select properties from applications,选择 Salesforce,然后选择字段定义。
  6. 确定您想要该 API 执行哪些操作。在这个示例中,您想要在 Salesforce 中创建一个联系人。单击 Create contact。您可以在以后添加 Retrieve contact by ID 和 Replace or create contact 选项。 选择您想要实现的操作
    选择您想要实现的操作
  7. 单击 Implement flow实现一个流
    实现一个流

    您现在看到了一个基本的流程图,其中包含一个请求和一个响应步骤,以及一个加号 (+),以便您可以在该流中添加更多操作。

    显示了一个示例请求对象的基本流程图
    显示了一个示例请求对象的基本流程图

    您还看到了该 API 的调用方必须提供的 JSON 的示例。

  8. 设置该流将要执行的下一个操作 - 调用 Salesforce 来创建一个新联系人:
    1. 单击 + 加号查看 App Connect 可连接到的应用程序列表。
    2. 向下滚动,并单击 Salesforce。您现在看到了可在 Salesforce 上执行的操作的列表。
    3. 单击 Create Contact。小心不要选择“Create Contract”选项,这是一个不同的操作。 选择 Create Contact on Salesforce
      选择 Create Contact on Salesforce
    4. 在显示您可以发送到 Create Contact on Salesforce 的数据字段的表格中,在这些字段中填入来自您之前创建的请求模型的数据。如果使用类似的名称,可以单击 Auto match fields 来自动预先填充该表格。如果向下滚动,可以看到相关字段均已填充。 包含要发送到 Salesforce 的数据的表格
      包含要发送到 Salesforce 的数据的表格

      如果您要映射的对象有不同的名称,您可以手动映射它们。在后面准备响应数据时,会看到一个手动映射的示例。

      在列表顶部,可以看到 Salesforce 中的 Account ID 字段,来自请求模型的 ID 字段会自动映射到该字段。

      自动映射的 Contact ID 字段
      自动映射的 Contact ID 字段
    5. 将 Create Contact 步骤中的 Account ID 字段留空,因为在这个示例中,API 的调用方没有 Account ID。Salesforce 会创建 Account ID 并将它返回给您。 清除 ID 字段,以便在 Salesforce 中的 Create Contact 步骤中填充它
      清除 ID 字段,以便在 Salesforce 中的 Create Contact 步骤中填充它
    6. 单击 Response 并确定您想要该响应具有何种形式。之前已经提到过,Salesforce 在执行“Create Contact”操作期间创建了 Account ID。因此,要将 Account ID 数据映射回响应中。
    7. 单击 ID 字段右侧的列表图标来显示 References 列表。在这个列表中,可以映射来自前面的流的任何部分的数据。在这个示例中,可以从原始请求或您从我们在 Salesforce 上执行的 Create Contact 所收到的响应中获取数据。从来自 Salesforce 的响应中选择 Contact ID映射来自 Salesforce 的响应
      映射来自 Salesforce 的响应

      如果单击 ID 字段右侧的 fx 图标,可以执行更复杂的操作来创建要映射到该字段的数据。此详细程度已超出了本教程的目标。

      映射来自 Salesforce 的响应中的 Contact ID
      映射来自 Salesforce 的响应中的 Contact ID
  9. 单击 Manage 查看可用的信息。您还不需要此信息,但是您需要知道以后在何处找到它。 显示了一个 API 调用方的信息的 Manage 选项卡
    显示了一个 API 调用方的信息的 Manage 选项卡

    在此页上,Download API 按钮可以下载 API 定义,调用应用程序(在本教程中为 IBM BPM)将需要它。IBM App Connect 采用了行业标准的 Open API Specification 格式,该格式以前称为 Swagger

    默认情况下,API 总是设置一种基本的身份验证机制,比如 https 和用户凭证。如果许多应用程序将重用一个 API,该 API 需要一个更复杂的网关,即 Manage API with IBM API Connect 按钮。可以使用此按钮添加更多安全机制(比如 OAuth),并执行流量管理来控制针对 API 的请求吞吐量,以保护下游系统。也可以设置不同的 API 使用计划。IBM API Connect 还提供了一个开发人员门户,您可以直接使用它来了解如何使用该 API,自助管理您想要使用的计划,并通过可自定义的分析来监控您的使用情况。您甚至可以通过为每个计划收取不同的费用从该 API 中获利。

    出于安全原因,API 定义文件不包含调用此 API 的人所需的 URL、用户名和密码。此信息是单独在该页面上提供的,可通过一种简单机制将它们复制到剪贴板。

  10. 为该 API 输入一个您将在仪表板中使用的名称。可以在创建流期间的任何时刻添加此名称。单击 Done 返回到仪表板。

    在仪表板上,会看到一个显示为图标摘要的新流,这表明它是一个 API(而不是一个事件驱动的流)并连接到 Salesforce。该 API 默认情况下处于 Stopped 状态。

  11. 单击流右侧的 More actions(3 个点)图标,然后单击 Start API启动 API
    启动 API

您现在拥有一个受保护且公开可用的 API,它已准备好用于任何拥有凭证的应用程序中。

在 IBM BPM 中创建一种外部服务配置

现在,在 IBM BPM 中的一个流程内使用您在 IBM App Connect 中创建的 API。设置它,以便更容易在流程的多个部分和应用程序的其他流程中重用它。

本教程是为不熟悉 IBM App Connect 但熟悉 IBM BPM 的用户编写的。因此,本节详细介绍了如何设置与 IBM App Connect 的连接。

要从 IBM BPM 连接到任何 API,必须在 IBM BPM 中创建一个外部服务。外部服务定义操作、操作的输入和输出数据,以及一个包含关于如何连接到主机服务器信息的服务器配置。在本教程中,服务器定义包含 IBM App Connect 上的 API 的连接细节(URL、端口、凭证等)。在运行时,可以在流程经历各种环境(比如测试、暂存和生产)时更改这些细节。管理员可以在运行时更改服务器定义 - 比如在端点 URL 不同的情况下。

在本节中,您创建了一个外部服务来包含您在 App Connect 中创建的 REST API 的操作、输入和输出,以及服务器配置。

  1. 登录到 IBM BPM Web Process Designer。
  2. 创建一个 Process Application 或 Toolkit。
  3. 创建一个外部服务。选择 Services-> External Service创建一个外部服务
    创建一个外部服务
  4. 选择 JavaRESTWeb Service 来发现该 REST API。
  5. 返回到 IBM App Connect Manage 页面,将 API 定义下载到您的本地存储上。API 定义文件是一个使用 OpenAPI 2.0 规范的 YAML 文件,通常称为 Swagger 文档
  6. 将下载到硬盘中的 YAML 文件重命名为适合外部服务的逻辑名称,比如 Salesforce New Contact
  7. 在下一页上,选择该操作。在这个示例中,您仅在 IBM App Connect 中创建了一个操作。如果您完成了所有操作,就会在这里看到它们。
  8. 当 IBM BPM 提示时,创建一个新服务器。

    服务器配置。在这一步,服务器用于表示服务器配置,而不是创建新的 BPM 服务器。这更像一个包含这个特定外部服务的凭证和 URL 的绑定定义。该名称源于一个事实:早期的绑定凭证会提交给外部“服务器”,比如 IBM Operational Decision Manager (ODM) 和 Content Management。IBM BPM 预先填充了一个基于您的外部服务名称的名称。通过这个服务器概念,您可以根据不同环境执行各种不同的设置,例如:将开发、测试和生产环境的 API URL 和凭证分开。在 IBM App Connect 中管理不同的 API 实现版本是另一个 IBM API Connect 可以提供帮助的领域。您可以控制将每个版本路由到哪些 API 实现,还可以控制谁能访问每个实现。

  9. 要在 IBM BPM 中查看您的外部服务的定义,可以展开 OperationsInputOutput。IBM BPM 会自动创建 Business Object 工件,这些工件与 API 的 YAML 文件中定义的 JSON 结构相对应。
  10. 选择外部服务的顶级名称,并单击 Binding。外部服务的绑定(服务器)定义将打开。 浏览外部服务的定义
    浏览外部服务的定义
  11. 在这里添加 API 的凭证。在 App Connect 中的 Manage 选项卡中,填充默认凭证(将它们复制到剪贴板)。(出于安全原因,这些凭证未包含在 swagger 定义文件中。)
  12. 创建一个 BPM 服务流(一个不与人类交互的流)来容纳该集成。可以将这个流放在一个工具包中,并在多个应用程序中重用它。
  13. 添加一个服务任务,将它从开始节点连接到结束节点。
    1. Implementation 选项卡上,选择您之前创建的外部服务操作,以提供该 API 的调用机制。 包含使用该外部服务的服务任务活动的服务流
      包含使用该外部服务的服务任务活动的服务流
    2. Data Mapping 选项卡上,将 IBM BPM 设置为根据 API 定义自动创建服务流的输入和输出变量。 建立数据与外部服务调用的映射
      建立数据与外部服务调用的映射
    3. 在服务流的 Variables 选项卡上,展开输入变量。单击 Has Default,输入姓名和电子邮箱地址。 将测试数据输入到输入对象的默认值中
      将测试数据输入到输入对象的默认值中
  14. 测试它。单击 debug,然后单击 play。新的 Salesforce Contact Id 将会返回并显示在调试器中。 在测试后,创建了新的 Salesforce Id 并显示在调试器中
    在测试后,创建了新的 Salesforce Id 并显示在调试器中

    可以在 Salesforce 用户界面中看到结果。

    Salesforce 中的新联系人
    Salesforce 中的新联系人

结束语

在本教程中,您学习了如何通过 Salesforce 简化 IBM App Connect 与 IBM BPM 的交互。然后可以扩展这个简化的 API,通过 Salesforce 提供更复杂的功能,或者通过来自其他应用程序的信息来扩充数据。例如,您可以确保自己不会在 Salesforce 中创建重复数据。可以在其他系统中创建一个新联系人。或者,可以通过电子邮箱或 SaaS 工具(比如 Slack)发送通知,告知团队您创建了一个新的联系人。存在无限的可能。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Middleware
ArticleID=1052410
ArticleTitle=实现无代码化!在 IBM App Connect 中创建一个 API 并从 IBM Business Process Manager 调用它
publish-date=11222017