Salesforce 触发器

借助 Salesforce 触发器,您可以监听变更数据捕获 (CDC) 事件或企业消息传递平台事件。使用此触发器,您可以根据 Salesforce 实例中的任何 CDC 事件(Create、Update、Delete 或 Undelete)或平台事件来启动集成。

准备工作

本部分概述了连接和配置 Salesforce 实例以使用变更数据捕获 (CDC)平台事件以发布/订阅方式将变更流式传输到您的 Apigee Integration 所需的步骤。在 Apigee 中配置任何与 Salesforce 相关的任务或触发器之前,必须完成以下步骤:

设置集成用户

按照以下步骤设置集成用户:

  1. 使用您的 sysadmin 凭据登录您的 Salesforce 实例。
  2. 点击齿轮图标,然后选择 Setup,如下图所示:显示 Setup 页面的图片显示 Setup 页面的图片
  3. Administration 菜单中,点击 Users > Users
  4. Users 窗格中,选择 New User 按钮。
  5. User Edit 对话框中,填写以下详细信息:
    1. First Name:集成用户的名字。
    2. Last Name:集成用户的姓氏。
    3. Email Address:集成用户的电子邮件地址。最好是群组电子邮件地址。
    4. Username:符合任何组织级命名规则的用户名。

      如果您要创建新的集成用户,请使用以下格式:EMAIL.SALESFORCE_ORG_NAME.SANDBOX_NAME

      如果您已有集成用户,请确认已在此处输入用户名。

    5. Role:从选项下拉菜单中选择。
    6. User License:输入 Salesforce;如果使用试用组织,则输入 Salesforce Platform
    7. Profile:从下拉菜单中选择集成用户的权限配置文件。

      我们建议不向配置文件分配任何权限,以防止集成用户 Salesforce 访问权限被未经授权地使用。

    8. 点击保存
  6. 如需更新新集成用户的密码,请按以下步骤操作:
    1. 点击 Users 窗格中的 Reset password(s)。系统会将一封重置密码电子邮件发送到与该用户关联的电子邮件地址。
    2. 按照电子邮件账号中的重置密码流程操作。记下新密码,因为您将在后续步骤中用到它。

配置权限集

如果您已有适合集成用户的权限集,则可以跳过此步骤并转到设置安全令牌步骤。否则,请按照以下步骤为集成用户和 Salesforce 对象配置权限集。

如需为集成用户配置权限集,请执行以下操作:

  1. Setup 菜单中,点击 Users > Permission Sets
  2. Permission Sets 窗格中,点击 New 按钮。
  3. Permission Sets 对话框中,输入以下详细信息:
    • Label:输入权限集的名称。
    • License:从 License 下拉菜单中选择 Salesforce
    • 点击保存
  4. System 设置选项列表中,向下滚动并选择 System Permissions
  5. System Permissions 页面上,点击 Edit 按钮。
  6. 向下滚动可用权限列表,并选中 API Enabled 复选框。

    Api Only User 权限也是必需的,但在所需的安全令牌重置之前无法启用该权限。此权限将在后续步骤中添加。

  7. (可选)滚动并选中 Modify All DataView All Data。这些权限不是必需的,但如果您希望自动向集成用户授予新对象的访问权限,则这些权限很有用。我们建议您仅在沙盒中启用这些权限用于测试。
  8. 滚动到权限列表的顶部,然后点击 Save
  9. 确认设置,然后点击 Save

要为 Salesforce 对象配置权限集,请执行以下操作:

  1. 点击 Permission Set Overview 以返回主 Permissions Set 配置页面。
  2. Permissions Set 窗格的 Apps 部分,选择 Object Settings
  3. 向下滚动并选择需要权限集的 Salesforce 对象。本示例使用 Opportunity 对象。
  4. 点击对象详情页面上的 Edit 按钮。
  5. 选中记录类型的复选框。如果您知道哪些记录类型是必需的,请选择相应的记录类型。如果您不知道哪些记录类型是必需的,请选择所有记录类型。
  6. 选中要启用的 Object Permissions 对应的复选框。建议选择 ReadView All
  7. 通过选中 Read AccessEdit Access 复选框,为每个对象字段授予相应的权限。
  8. 滚动到页面顶部,然后点击 Save

设置安全令牌

如果您之前已经为集成用户创建了安全令牌并重置了密码,系统会自动发送包含新安全令牌的电子邮件。您可以使用新令牌并跳至创建关联的应用

否则,请按照以下步骤重置集成用户的安全令牌:

  1. 使用上一步中设置的用户名和密码,以集成用户的身份登录 Salesforce。
  2. 在主菜单中点击配置文件图片,然后点击 Settings
  3. Settings 菜单中,选择 Reset My Security Token 以打开 Reset Security Token 窗格。
  4. 点击 Reset Security Token 按钮。
  5. 查看与该集成用户关联的电子邮件账号,寻找包含新的安全令牌的电子邮件。记下新的安全令牌,因为您将在后续步骤中用到它。
  6. (可选)为您的权限集启用 System Permissions 中的 Api User Only 权限,如上文的配置权限集步骤所述。

创建关联的应用

您必须拥有系统管理权限才能设置关联的应用。如果您目前以集成用户身份登录,请务必退出并以 sysadmin 身份重新登录。

按照以下步骤设置关联的应用:

  1. 点击齿轮图标,然后选择 Setup
  2. Setup 菜单中,搜索并选择 App Manager,如下图所示:显示 Setup 页面的图片显示 Setup 页面的图片
  3. 点击 New Connected App
  4. 在配置窗格中,提供以下详细信息:
    • Connected App Name:输入关联的应用的名称。
    • API Name:输入 API 的名称。
    • Contact email:输入关联的应用的电子邮件地址,最好是群组电子邮件别名。
    • API (Enable OAuth Settings):选择 Enable OAuth Settings。然后设置以下各项:
      1. (可选)Callback URL:仅当您希望外部服务执行验证时,才需要设置此项。如果您选择提供回调,请确保添加 http(s):// 前缀。
      2. Selected OAuth Scopes:选择:
        • Access and manage your data (api)
        • Perform requests on your behalf at any time (refresh_token, offline_access)
  5. 点击保存
  6. 点击继续。您需要使用发送到您的电子邮件地址的验证码重新授权。
  7. 成功验证该验证码后,下一页上会显示使用方密文使用方密钥。请记下这些值,因为在设置 Apigee 的身份验证模块时会用到它们。
  8. 点击管理按钮。
  9. 进入 Connected App Detail 页面后,点击 Edit Policies 按钮。
  10. OAuth Policies 部分,将 Permitted Users 下拉菜单中的值更改为 Admin approved users are pre-authorized
  11. 点击保存
  12. 滚动到页面的 ProfilesPermission Sets 部分,选择要应用于关联应用的配置文件或权限集。
  13. 选择所需的配置文件或权限集。
  14. 点击保存

使用 CDC 事件的前提条件步骤

在配置您的 Apigee 触发器以使用 CDC 事件之前,请确保将配置的对象添加到 Salesforce 中的 CDC:

  1. sysadmin 身份登录 Salesforce。
  2. 点击齿轮图标,然后点击 Setup
  3. 使用左侧导航栏搜索并选择 Change Data Capture
  4. Change Data Capture 设置页面上,在 Available Entities 列中找到要使用的 Salesforce 对象,并将其拖到 Selected Entities 列。
  5. 点击保存

使用平台事件的前提条件步骤

在配置您的 Apigee 触发器以使用平台事件之前,请在 Salesforce 中完成以下步骤:

  • 创建平台事件
  • 更新平台事件的权限

创建平台事件

如需创建平台事件,请执行以下步骤:

  1. 使用您的 sysadmin 凭据登录您的 Salesforce 实例。
  2. 点击齿轮图标,然后选择设置
  3. 在导航窗格中,搜索平台,然后点击平台事件
  4. 显示新平台事件的图片显示新平台事件的图片
  5. 平台事件页面中,点击新建平台事件并设置以下属性:
  • 标签
  • 复数标签 (Plural Label)
  • 对象名称(此字段自动填充)
  • 发布行为 (Publish Behavior) 选择以下任一值:
    • 提交后发布 (Publish After Commit):如果不满足条件,则还原事件流式传输。
    • 立即发布 (Publish Immediately):立即触发事件,不等待任何验证。
    如需详细了解发布行为,请参阅平台事件和事务
  • 部署状态(可选):如果事件已准备好进行部署,请选择已部署
  • 点击保存
  • 显示平台事件的标签和发布行为设置的图片显示平台事件的标签和发布行为设置的图片
  • 创建自定义字段。如需创建自定义字段,请点击“自定义字段和关系”部分中的新建,然后选择自定义字段类型。您可以根据需要创建任意数量的自定义字段。
  • 创建自定义字段后,请注意平台事件页面中的 API 名称字段的值。对象名称以 _e 结尾,这表示对象是平台事件对象。对于 CDC 对象,对象名称以 _c 结尾。

    显示已保存平台事件的详细信息的图片显示已保存平台事件的详细信息的图片

    更新平台事件的权限

    必须更新权限集,才能允许集成用户访问新创建的平台事件。

    如需更新权限,请执行以下步骤:

    1. Setup 菜单中,点击 Users > Permission Sets
    2. 权限集 (Permission Sets) 页面中,点击之前创建的权限。
    3. 点击对象设置 (Object Settings) > Plural Label of the Platform Event
    4. 对象权限部分,启用读取创建权限。
    5. 点击保存
    6. 显示平台事件权限的图片显示平台事件权限的图片

    添加 Salesforce 触发器

    如需将 Salesforce 触发器添加到新的或现有的集成中,请按以下步骤操作:
    1. Apigee 界面中,选择您的 Apigee 组织
    2. 点击开发 > 集成
    3. 选择现有集成,或通过点击创建集成来创建新集成。

      要创建新的集成,请执行以下操作:

      1. 创建 Integrations对话框中输入名称和说明。
      2. 从支持的区域列表中选择集成的区域
      3. 点击创建

      这将在集成设计器中打开集成。

    4. 集成设计器导航栏中,点击 + 添加任务/触发器 > 任务以查看可用任务列表。
    5. 选择现有集成或点击创建集成
    6. 在集成编辑器中,点击 + 添加任务/触发器 > 触发器以查看可用的触发器
    7. 点击 Salesforce 触发器元素并将其放入设计器。

    配置 Salesforce 触发器

    如需配置 Salesforce 触发器,请执行以下步骤:

    1. 点击集成编辑器中的 Salesforce 触发器以查看触发器配置窗格。
    2. Salesforce 实例配置 (Salesforce instance configuration) 下拉列表中选择 Salesforce 实例。

      如果您没有 Salesforce 实例,请创建一个新实例。如需了解详情,请参阅创建新的 Salesforce 实例

    3. Salesforce 渠道配置 (Salesforce channel configuration) 下拉列表中选择 Salesforce 渠道。

      如果您没有 Salesforce 渠道,请创建一个新渠道。如需了解详情,请参阅创建新的 Salesforce 渠道

    4. 如果您选择了 CDC 事件类型,请选择以下任一操作:
      • Create
      • Update
      • Delete
      • Undelete

      触发器仅在特定操作或间隔操作发生时才运行。

      只能为一个操作配置 Salesforce 触发器。如果要为多个操作运行触发器,请为每个操作创建一个 Salesforce 触发器

    创建新的 Salesforce 实例

    如需配置新的 Salesforce 实例,请执行以下步骤:

    1. 在触发器的可修改属性中,点击选择 Salesforce 实例配置 (Select a Salesforce instance configuration) > + 添加新的 Salesforce 实例配置 (Add new Salesforce instance configuration)。
    2. 添加 Salesforce 实例配置对话框中,设置以下属性:
      • Salesforce 实例连接名称 (Salesforce instance connection name):输入实例的名称。

        配置完成后,您将使用此名称来引用 Salesforce 实例。

      • Salesforce 网域:输入实例的服务授权方。您可以在 Salesforce 账号中找到该网域。例如 instance.my.salesforce.com。下图显示了 Salesforce 网域:

        在 Salesforce 实例中获取 Salesforce 网域 在 Salesforce 实例中获取 Salesforce 网域

      • 身份验证配置文件:选择身份验证配置文件。

        如果您没有身份验证配置文件,请创建 OAuth 2.0 资源所有者密码凭据身份验证类型的新配置文件。下图展示了创建身份验证配置文件所需的字段:

        OAuth 2.0 资源所有者密码凭据 OAuth 2.0 资源所有者密码凭据

        如需了解这些字段,请参阅 OAuth 2.0 资源所有者密码凭据。对于 Salesforce 实例,请输入以下值:
        • 客户端 ID:输入您在设置关联的应用时记下的使用方密钥。
        • 密文:输入您在设置关联的应用时记下的使用方密文。
        • 密码:使用 USER_PASSWORDSECURITY_TOKEN 格式输入用户密码。替换以下内容: 例如,如果 USER_PASSWORDtest-passwordSECURITY_TOKEN737K27NCa3O6,则密码将为 test-password737K27NCa3O6
  • Salesforce 组织 ID:输入 Salesforce 实例的组织 ID。您可以从 Salesforce 管理员处获取该 ID。
  • 点击添加
  • 创建新的 Salesforce 渠道

    如需配置新的 Salesforce 渠道,请执行以下步骤:

    1. 在触发器的可修改属性中,点击选择 Salesforce 渠道配置 (Select a Salesforce channel configuration) > + 添加新的 Salesforce 渠道配置 (Add new Salesforce channel configuration)。
    2. 添加 Salesforce 渠道配置 (Add Salesforce channel configuration) 对话框中,输入 Salesforce 对象名称 (Salesforce object name) 属性的对象名称。

      如果您不确定对象名称,请与您的 Salesforce 管理员联系。

    3. 点击添加

    输出变量

    您可以在输出变量中找到 Salesforce 触发器的响应。

    下表介绍了 CDC 事件的输出变量:

    变量 数据类型 说明
    SalesforceTriggerCdcPayload JSON 更改事件的详细信息。
    SalesforceTriggerEvent JSON 包含事件的 replayId
    SalesforceTriggerSchema 字符串 触发器架构。
    SalesforceTriggerCdcSnapshot JSON 更改事件发生后对象的快照。此字段仅适用于 UpdateCreate 操作。
    SalesforceTriggerCdcRecordId 字符串 包含已更新或已添加记录的 recordIdrecordId 是已更改的 Salesforce 对象的标识符。

    下表介绍了平台事件的输出变量:

    变量 数据类型 说明
    SalesforceTriggerPEPayload JSON 更改事件的详细信息。
    SalesforceTriggerEvent JSON 包含事件的 replayId
    SalesforceTriggerSchema 字符串 触发器架构。
    此触发器的输出参数是 CdcTriggerPayload JSON 变量。JSON 变量包含更新后的记录对象。

    最佳做法

    如果您想使用 Salesforce 通知来触发集成,而无需编写自定义代码来发布 Salesforce 事件,建议使用 Salesforce 触发器。 Salesforce 案例中的任何微小更改都会触发 Salesforce CDC 事件,从而触发集成,这会导致明显的集成噪声。请考虑使用更改事件过滤条件,以仅过滤触发集成所需的 CDC 事件。使用更改事件过滤条件有助于减少集成噪声并确保符合许可限制。

    同样,当不再需要集成时,我们建议使用此触发器取消发布集成。集成将持续侦听 Salesforce CDC 和平台事件,直到取消发布或删除为止。

    注意事项

    在使用 Salesforce 触发器运行集成之前,请考虑以下事项:

    • 通常,Salesforce 每天最多可以发送 10 万个 CDC 和平台事件。在为集成触发器选择 CDC 事件之前,请与您的 Salesforce 管理员联系以了解许可限制。
    • 如果您打算批量上传到 Salesforce,请考虑暂停 CDC,以减少集成噪音并确保符合许可限制。
    • Salesforce 可以发布的事件消息大小上限为 1 MB。如需了解详情,请参阅变更数据捕获分配
    • Apigee 不支持以下 minicluster 区域的 Salesforce CDC 事件:
      • asia-northeast1
      • asia-south1
      • australia-southeast1
      • europe-west2
      • europe-west3
      • europe-west6
      • northamerica-northeast1
      • southamerica-east1
      • us-east4
      • us-west2