---
schema_version: "1"
id: 73115cb190edf4730324ba0b79bf1fb1282ca49c9194864584371962ac10bc89
title: 与 Salesforce 的数据集成
collection: architect
version: next
locale: zh-cn
portal_url: https://docs.salesforce.com/architect/next/zh-cn/decision-guides/guides/data-integration.md
canonical_url: https://staging.architect.salesforce.com/docs/architect/zh-cn/decision-guides/guide/data-integration.html
source_site: staging.architect.salesforce.com
content_type: documentation
content_hash: a84e9a24ea394f10ca17064b3366ca4793264e599b560894d637787657fc5b49
products:
  - 决策指南
  - Architect Site Content Repo
updated_at: 2025-10-01T00:00:00Z
---
## 指南概览

有多种方式可以在 Salesforce 和外部系统之间访问、同步和共享数据。但并非所有工具都适合您的特定项目。本指南介绍了 Salesforce 提供的数据集成工具。它还为特定用例下最合适的工具（或工具组合）提供了建议，以及特定场景下应避免的工具指南。

本决策指南侧重于涉及 Salesforce 的数据级集成。具体而言，它涵盖了以下数据集成用例：

- Salesforce 到外部系统
- Salesforce 的外部系统
- Salesforce 组织到 Salesforce 组织

这些只是 Salesforce Architects 面临的集成挑战的一部分，因此我们计划添加更多决策指南，重点关注事件驱动的集成，使用流程集成建立有效的面向客户或员工的工作流等。最后，必须指出，此处描述的许多工具和方法可用于解决更广泛的企业中的集成挑战，但这种使用超出了本指南的范围。

### 外卖

- **避免不必要的数据复制。**除非数据绝对需要驻留在 Salesforce 中，否则请考虑使用 Salesforce Connect 进行数据虚拟化。贵组织中的数据越多,最终将导致数据量越大,从而对[性能](/docs/architect/zh-cn/well-architected/guide/reliable#性能)产生不利影响,并增加技术债务。如果您的数据已经驻留在 Salesforce 中，并且您需要它位于外部系统中，请避免将其复制到外部系统，除非绝对必要。相反，让外部系统通过 Salesforce API 访问数据。
- **使用 MuleSoft 或其他 Enterprise Service Bus (ESB) 或 Extract-Transform-Load (ETL) 解决方案(如果可用)作为现有环境的一部分。**由于这些工具旨在帮助支持数据迁移和转换，因此它们通常具有强大的功能，使您能够在整个企业中重复使用集成，保持更强的治理，并集中管理集成。在本指南中，在推荐 MuleSoft Anypoint 时，请考虑现有 ESB/ETL 解决方案是否足够。
- **使用 Data 360 和 Data Cloud One 协调来自不同来源的数据。**通过 Customer 360 数据模型、身份解析、数据联合和其他功能，Data 360 会将 Salesforce 和其他外部系统的数据整合到客户的统一视图中。借助 [Data Cloud One](/docs/architect/zh-cn/fundamentals/guide/data360_integration_patterns_and_practices.html#unified-multi-org-data-platform-with-data-cloud-one)，其他 Salesforce 组织中的用户可以安全地访问通过数据空间从 Data 360 虚拟共享的数据。
- 使用 **Data 360 操作和激活在组织之间移动数据。**将数据从不同的组织接收到 Data 360 后，数据[操作和激活](/docs/architect/zh-cn/fundamentals/guide/data360_integration_patterns_and_practices.html#data-activation-patterns--data-outbound)可以将数据同步到另一个组织。这种方法对于与 Marketing Cloud 组织的集成非常有用。
- 使用 **MuleSoft Anypoint** 提取和移动数据 MuleSoft Anypoint 可用于使用连接 API 和数据图 API 从 Data 360 中提取数据，并将其移动到其他 Salesforce 组织。如果没有 Data 360，当需要在组织之间移动数据而不在 Data 360 中复制时，也可以使用 MuleSoft Anypoint。
- **如果您选择使用出站消息传递构建，请谨慎小心。**Salesforce 将继续在现有功能容量范围内支持出站消息传递，但不打算对此技术进行进一步投资。
- **对于所有集成，始终建议使用具有“仅 API”简档的集成用户许可证。**Salesforce 还建议使用外部客户端应用程序（支持连接的应用程序或 SOAP 登录）作为所有集成的适当允许的 AuthN 和 AuthZ 模式。

## 选择数据集成工具的常见注意事项

在深入了解可用的数据集成工具之前，在选择工具时，请记住一些常见注意事项非常重要。与架构的典型情况一样，没有针对每个业务挑战的规范性答案。如果您在做出集成选择时说了“这取决于”这个词，那么您就找对地方了。

<table>
    <thead>
        <tr>
            <th>要考虑的区域</th>
            <th>常见问题</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>现有工具和环境</td>
            <td>是否有现有的 ESB 或 ETL 解决方案？涉及的数据是否有监管或合规要求？您尝试集成的系统位于何处（在云中或本地）？</td>
        </tr>
        <tr>
            <td>数据流（时间、预期用户体验、方向性）</td>
            <td>数据是否需要同步、异步移动，或者是否可以批量/计划？是否需要数据复制？什么系统应该是真理的来源？什么是数据源？什么是目标目的地？是否需要用户交互？用户是否需要查看集成的结果？异常处理（重试、通知、失败）的需求是什么？系统的紧密耦合程度如何？</td>
        </tr>
        <tr>
            <td>实施</td>
            <td>对于非 Salesforce 系统，工作级别是多少？哪些团队负责交付集成？他们更喜欢使用哪些工具？</td>
        </tr>
        <tr>
            <td>可<a href="/docs/architect/zh-cn/well-architected/guide/intentional#可维护性">维护性</a></td>
            <td>哪些团队需要维护集成？他们目前拥有哪些技能？他们未来需要哪些技能？随着时间的推移，总拥有成本是多少？使用低代码或专业代码工具进行测试、调试和故障排除的能力有多重要？</td>
        </tr>
        <tr>
            <td><a href="/docs/architect/zh-cn/well-architected/guide/reliable#数据量">数据量</a></td>
            <td>集成涉及多少数据？您是否将使用<a href="https://trailhead.salesforce.com/content/learn/modules/large-data-volumes">大数据量</a> (LDV)？批量更改的频率如何？单一版本更新会产生什么影响？多久发生一次？</td>
        </tr>
        <tr>
            <td>限制</td>
            <td>数据是否需要进行复杂的转换？数据是否需要从几个源系统合并？每个用户多久集成一次？总共有多少用户？您是否预先计划了批量数据加载（例如：新实例的初始数据加载）？</td>
        </tr>
    </tbody>
</table>

## 产品比较

以下是可用于数据集成的工具的高级概览，以及开始评估每个选项的一些注意事项。以下部分包括深入的用例和有关这些工具功能的详细信息。

<table>
    <thead>
        <tr>
            <th></th>
            <th>从 Salesforce 到外部系统</th>
            <th>从外部系统到 Salesforce</th>
            <th>执行</th>
            <th>需要其他许可证</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><strong>Apex 操作</strong></td>
            <td class="guide-table-ok">可用</td>
            <td class="guide-table-ok">可用</td>
            <td class="guide-table-ok">服务器端</td>
            <td>没有</td>
        </tr>
        <tr>
            <td><strong>变更数据捕获</strong></td>
            <td class="guide-table-ok">可用</td>
            <td class="guide-table-no">不可用</td>
            <td class="guide-table-ok">服务器端</td>
            <td>否*</td>
        </tr>
        <tr>
            <td><strong>Custom Apex(REST和SOAP Web Services)</strong></td>
            <td class="guide-table-ok">可用</td>
            <td class="guide-table-ok">可用</td>
            <td class="guide-table-ok">服务器端</td>
            <td>没有</td>
        </tr>
        <tr>
            <td><strong>外部服务</strong></td>
            <td class="guide-table-ok">可用</td>
            <td class="guide-table-no">不可用</td>
            <td class="guide-table-ok">服务器端</td>
            <td>没有</td>
        </tr>
        <tr>
            <td><strong>Heroku Connect</strong></td>
            <td class="guide-table-ok">可用</td>
            <td class="guide-table-ok">可用</td>
            <td class="guide-table-ok">服务器端</td>
            <td>是</td>
        </tr>
        <tr>
            <td><strong>Data 360</strong></td>
            <td class="guide-table-ok">可用</td>
            <td class="guide-table-ok">可用</td>
            <td class="guide-table-ok">服务器端</td>
            <td>是</td>
        </tr>
        <tr>
            <td><strong>MuleSoft Anypoint</strong></td>
            <td class="guide-table-ok">可用</td>
            <td class="guide-table-ok">可用</td>
            <td class="guide-table-ok">服务器端</td>
            <td>是</td>
        </tr>
        <tr>
            <td><strong>本地 Salesforce API</strong></td>
            <td class="guide-table-no">不可用</td>
            <td class="guide-table-ok">可用</td>
            <td class="guide-table-ok">服务器端</td>
            <td>没有</td>
        </tr>
        <tr>
            <td><strong>Omniscript</strong></td>
            <td class="guide-table-ok">可用</td>
            <td class="guide-table-ok">可用</td>
            <td class="guide-table-no">客户端***</td>
            <td>是</td>
        </tr>
        <tr>
            <td><strong>OmniStudio 集成程序</strong></td>
            <td class="guide-table-ok">可用</td>
            <td class="guide-table-ok">可用</td>
            <td class="guide-table-ok">服务器端</td>
            <td>是</td>
        </tr>
        <tr>
            <td><strong>出站消息</strong></td>
            <td>不理想</td>
            <td class="guide-table-no">不可用</td>
            <td class="guide-table-ok">服务器端</td>
            <td>没有</td>
        </tr>
        <tr>
            <td><strong>平台事件</strong></td>
            <td class="guide-table-ok">可用</td>
            <td class="guide-table-ok">可用</td>
            <td class="guide-table-ok">服务器端</td>
            <td>否**</td>
        </tr>
        <tr>
            <td><strong>Salesforce Connect/外部对象</strong></td>
            <td class="guide-table-ok">可用</td>
            <td class="guide-table-ok">可用</td>
            <td class="guide-table-ok">服务器端</td>
            <td>是</td>
        </tr>
    </tbody>
</table>

[\* 高用量变更数据捕获事件用例所需的加载项](https://developer.salesforce.com/docs/atlas.en-us.change_data_capture.meta/change_data_capture/cdc_allocations.htm)

[\*\*高用量平台事件用例需要加载项](https://developer.salesforce.com/docs/atlas.en-us.platform_events.meta/platform_events/platform_event_limits.htm)

\*\*\*适用于业务逻辑可以在 Web 浏览器中运行的场合。

列图例：

- **可用**：适用于大多数用例
- **不理想**：可能，但请考虑替代工具
- **不可用**：未来 12 个月内没有支持的计划

### 将数据移入和移出 Salesforce 可能涉及的其他工具：

还有其他工具可以支持数据层集成的某些方面，但决不能被认为是解决集成问题的主要手段。现在，让我们快速看看这些工具。

**Lightning Web 组件**通常用于流程整合，但它们可以使用 JavaScript 功能进行标注，因此数据可能参与这些交易。

**Salesforce Flow**可用于通过外部服务或 Apex 操作编排外部标注。Salesforce 流本身不被视为独立的数据集成工具。

**数据导入向导和数据**加载器可用于同步、导入和迁移数据。虽然 Data Loader 命令也可以编写脚本来自动导入和导出数据，但[命令行界面](https://developer.salesforce.com/docs/atlas.en-us.dataLoader.meta/dataLoader/command_line_intro.htm)仅适用于 Windows，这两个工具都不是数据集成策略的推荐基础。相反，使用它们来补充您的数据管理和维护策略。

[**Salesforce CLI**](https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_force_data.htm) 数据命令可用于操作贵组织中的记录。命令可用于帮助您使用批量 API 和 SObject Tree Save API 导入和导出数据，并使用 REST API 对单个记录执行简单的 CRUD 操作。Salesforce CLI 本身不被视为独立的数据集成工具。

**OmniStudio 数据映射**器可用作声明性 ETL 工具，以在 Salesforce 对象和 JSON 数据结构之间移动数据。虽然为每个数据映射器接口自动创建 REST 接口，提供将数据从外部系统移动到 Salesforce 对象的声明性方式，但数据映射器独立版不是数据集成策略的推荐基础。数据映射器操作在 OmniStudio 集成程序中可用。

[**Dataloader.io**](http://dataloader.io/) 是另一个适用于 Salesforce 的数据加载器工具，由 MuleSoft Anypoint 平台提供支持，允许您快速安全地导入、导出和删除企业无限量的数据。Dataloader.io 不是数据集成策略的推荐基础。

## Salesforce 到外部系统（出站集成）

对于来自 Salesforce 的出站集成，您可以考虑不同类型的工具：低代码、专业代码或混合。以下部分提供了每种工具类型的指导，并提供示例解决方案。

- [出站集成的低代码工具](#salesforce-出站集成的低代码工具)
- [出站集成的混合工具](#salesforce-出站集成的混合工具)
- [适用于出站集成的专业代码工具](#适用于-salesforce-出站集成的专业代码工具)

### Salesforce 出站集成的低代码工具

<table>
    <thead>
        <tr>
            <th></th>
            <th>指导</th>
            <th>许可</th>
            <th>时间</th>
            <th>体积和规模</th>
            <th></th>
            <th>交付和维护</th>
            <th></th>
            <th></th>
            <th>隐私和安全</th>
            <th></th>
        </tr>
        <tr>
            <th></th>
            <th><strong>何时使用</strong></th>
            <th><strong>其他许可证</strong></th>
            <th><strong>同步（请求/回复）或异步（火灾/忘记）</strong></th>
            <th><strong>多对象支持</strong></th>
            <th><strong>LDV/批量</strong></th>
            <th><strong>测试和部署**</strong></th>
            <th><strong>调试</strong></th>
            <th><strong>内置错误处理/重试行为</strong></th>
            <th><strong>可与静态加密的数据一起使用</strong></th>
            <th><strong>身份验证协议</strong></th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><strong>变更数据捕获</strong></td>
            <td>当您需要将 Salesforce 中所做的记录级更改发布到外部系统并且不需要自定义负载时。</td>
            <td>必填</td>
            <td>异步</td>
            <td>没有</td>
            <td>没有</td>
            <td class="guide-table-ok">是</td>
            <td>使用专业代码工具</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td>OAuth</td>
        </tr>
        <tr>
            <td><strong>外部服务</strong></td>
            <td>当您使用 Flow、Apex、Einstein 机器人或 OmniStudio 来编排进程时，使用 OpenAPI 规范来描述外部系统 API。</td>
            <td>不需要</td>
            <td>同步</td>
            <td class="guide-table-ok">是</td>
            <td>没有</td>
            <td class="guide-table-ok">是</td>
            <td>使用专业代码工具</td>
            <td>没有</td>
            <td>N/A</td>
            <td>命名凭据</td>
        </tr>
        <tr>
            <td><strong>Heroku Connect</strong></td>
            <td>当您希望通过双向同步来扩展您的数据，以便在 Heroku 上启用移动和其他应用程序，并且您想要将数据也复制到 Salesforce 中时。</td>
            <td>必填</td>
            <td>异步</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td>没有</td>
            <td>使用专业代码工具</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是，通过 Shield Connect</td>
            <td>OAuth</td>
        </tr>
        <tr>
            <td><strong>OmniStudio 集成程序</strong></td>
            <td>当您需要在没有用户交互的情况下转换数据，并通过在服务器而不是浏览器上处理来提高性能时。</td>
            <td>必填</td>
            <td>两者</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td>声明性支持</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td>命名凭据</td>
        </tr>
        <tr>
            <td><strong>Salesforce Connect/外部对象</strong></td>
            <td>当您希望数据显示在 Salesforce UI 中，但希望数据存储在外部系统中时。数据不会复制到 Salesforce。</td>
            <td>必填</td>
            <td>同步</td>
            <td>没有</td>
            <td class="guide-table-ok">是*</td>
            <td class="guide-table-ok">是</td>
            <td>使用专业代码工具和声明性跟踪器</td>
            <td>没有</td>
            <td>N/A</td>
            <td>命名凭据</td>
        </tr>
        <tr>
            <td colspan="11">*Odata 适配器在版本 4.01 之前受标注限制。有关更多详细信息,请参阅 <a href="https://help.salesforce.com/s/articleView?id=platform.odata_general_limits.htm&type=5">Odata 标注率限制注意事项</a>。** 测试和部署是指在较低的环境中构建并通过<a href="https://developer.salesforce.com/docs/metadata-coverage/">元数据 API</a>、软件包或更改集部署到生产环境的能力。</td>
        </tr>
    </tbody>
</table>

### 用例：使用低代码工具的出站集成

> 赢得业务机会后，需要在公司的 ERP 系统或订单管理系统中创建相关产品的订单。

**变更数据捕获** 随着业务机会记录的更新,变更数据捕获发布包含对象更新的变更事件。变更事件通过 CometD 连接（或通过 MuleSoft 连接器）在客户一侧消耗，并用于更新客户的 ERP 或订单管理系统。可以丰富变更事件，以始终包含集成所需的外部记录 ID 或来自对象（例如区域）的其他数据。多个对象的变更事件流可以合并到*渠道中*，以简化订阅和流处理(因此您可以订阅和处理一个流，而不是多个流 ) 。

**外部服务** 如果您的 Web 服务支持 OpenAPI 2.0 或 3.0 规范，您可以在 Salesforce 中将操作和服务公开为外部服务。当业务机会的阶段更改为“已赢得”时，API 操作（例如创建订单）可以在使用 Flow Builder 构建的流中调用为可调用操作。

**Heroku Connect** Heroku Connect 通常用于保持 Heroku Postgres 数据库和 Salesforce 同步。如果客户使用 Heroku Postgres 作为其真相来源交易存储，您可以使用 Heroku Connect 将记录和更改从 Salesforce 同步到 Heroku Postgres。从那里，您可以使用 Heroku 串流连接器将这些更改发布到 Apache Kafka，并作为事件发送到下游应用程序，包括 ERP 或订单管理系统。

**OmniStudio 集成程序** 提交订单时，编排流程的 Omniscript 可以将订单详细信息发布到 ERP 或 MuleSoft 连接器。帖子可以直接由 Omniscript（客户端）执行，也可以通过集成程序（服务器端）间接执行。如果 ERP 系统抛出验证错误，Omniscript UI 必须通知用户，如有必要，为用户翻译和上下文化错误。

**Salesforce Connect/外部对象** 您可以在 Salesforce 中创建记录触发的流，在业务机会阶段更改为“已赢得”时将记录插入相关外部对象。由于这是一[个混合事务](https://help.salesforce.com/articleView?id=000328873&type=1&mode=1)，为了避免错误，请在业务机会更新和相关外部对象插入之间添加零秒的暂停元素，以便在开始新事务上下文之前关闭一个事务上下文。

### Salesforce 出站集成的混合工具

<table>
    <thead>
        <tr>
            <th></th>
            <th>指导</th>
            <th>许可</th>
            <th>时间</th>
            <th>体积和规模</th>
            <th></th>
            <th>交付和维护</th>
            <th></th>
            <th></th>
            <th>隐私和安全</th>
            <th></th>
        </tr>
        <tr>
            <th></th>
            <th><strong>何时使用</strong></th>
            <th><strong>其他许可证</strong></th>
            <th><strong>同步（请求/回复）或异步（火灾/忘记）</strong></th>
            <th><strong>多对象支持</strong></th>
            <th><strong>LDV/批量</strong></th>
            <th><strong>测试和部署**</strong></th>
            <th><strong>调试</strong></th>
            <th><strong>内置错误处理/重试行为</strong></th>
            <th><strong>可与静态加密的数据一起使用</strong></th>
            <th><strong>身份验证协议</strong></th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><strong>Apex 操作</strong></td>
            <td>当您希望通过 Salesforce 流自动调出另一个系统时。开发人员可以编写流可以调用的 Apex 类，或者您可以从 AppExchange 下载预构建的解决方案。</td>
            <td>不需要</td>
            <td>两者</td>
            <td class="guide-table-ok">是</td>
            <td>没有</td>
            <td class="guide-table-ok">是</td>
            <td>使用专业代码工具</td>
            <td>没有</td>
            <td class="guide-table-ok">是</td>
            <td>多个</td>
        </tr>
        <tr>
            <td><strong>事件中继</strong></td>
            <td>当您需要从 Salesforce 发送平台事件并将数据捕获事件更改为 Amazon EventBridge 时。事件中继仅连接到 AWS Eventbridge</td>
            <td>没有</td>
            <td>异步</td>
            <td class="guide-table-ok">是</td>
            <td>没有</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td>带 TLS 的 HTTP/1.1</td>
        </tr>
        <tr>
            <td><strong>出站消息</strong></td>
            <td>当工作流规则触发时，您需要通过 HTTP(S) 向指定的端点发送 SOAP 消息，并保证接收。</td>
            <td>不需要</td>
            <td>异步</td>
            <td>没有</td>
            <td>没有</td>
            <td class="guide-table-ok">是</td>
            <td>声明性支持</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td>双向 TLS</td>
        </tr>
        <tr>
            <td><strong>平台事件</strong></td>
            <td>当您需要自定义的结构化负载来近乎实时地更改 Salesforce 或外部系统时。</td>
            <td>不需要*</td>
            <td>异步</td>
            <td class="guide-table-ok">是</td>
            <td>没有</td>
            <td class="guide-table-ok">是</td>
            <td>使用专业代码工具</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td>OAuth</td>
        </tr>
        <tr>
            <td><strong>Salesforce Connect/外部对象（带有自定义 Apex 适配器）</strong></td>
            <td>当您希望数据显示在 Salesforce UI 中，但希望数据存储在无法使用 Odata 或 GraphQL 等标准协议的外部系统中时。</td>
            <td>必填</td>
            <td>两者</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td>使用专业代码工具</td>
            <td>没有</td>
            <td>N/A</td>
            <td>多个</td>
        </tr>
         <tr>
            <td><strong>Data 360</strong></td>
            <td>当您想要在一个数据存储中协调来自不同来源的数据时，或者您想要将数据复制到其他 Salesforce 组织或其他外部系统。</td>
            <td>必填</td>
            <td>两者</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td>多个</td>
        </tr>
    </tbody>
</table>

[\*](https://developer.salesforce.com/docs/atlas.en-us.platform_events.meta/platform_events/platform_event_limits.htm) 高用量用例必填。

\*\*测试和部署是指在较低的环境中构建并通过[元数据 API](https://developer.salesforce.com/docs/metadata-coverage/)、软件包或更改集部署到生产环境的能力。

### 用例：使用混合工具的出站集成

> 赢得业务机会后，需要在公司的 ERP 或订单管理系统中创建相关产品的订单。

**Apex 操作**基于业务机会状态的记录触发的流程可以在赢得业务机会时自动触发。该流执行可调用操作，该操作使用外部标注将订单提交到订单管理系统或 ERP 解决方案。Apex 批处理和队列机制处理高用量提交和多站点订单。

**出站消息传递** [在设置出站消息](https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_om_outboundmessaging_setting_up.htm)传递后，您可以定义由业务机会更新触发的工作流规则，通过 HTTP(S) 向托管监听器的指定端点 URL 发送 SOAP 消息。消息将包含创建出站消息时指定的字段。如果对象中的信息在通知排队后但在发送前发生变化，则只有更新后的信息将被传递，消息将保留在队列中，直到发送成功，或直到它们存在 24 小时。24 小时后，消息将从队列中删除。如果 ERP 系统需要其他数据，您可以在出站消息中传递 sessionId，以便外部系统可以发出回调请求。

**平台事件** 您可以定义包含自定义负载的平台事件，其中包含在外部系统中创建记录所需的数据。因为平台事件不会在记录更改时自动发布，所以当业务机会的阶段更改为“已赢得”时，您必须通过 Apex、Salesforce Flow 或 Process Builder 发布事件。外部服务使用 CometD（或 MuleSoft 连接器）监听平台事件渠道，并在外部系统中创建适当的记录。

**Salesforce Connect/外部对象(带有自定义 Apex 适配器)**基于 Salesforce Connect/外部对象的解决方案并不完全适合纯粹需要数据同步的用例。但是，此解决方案可以应用于 Salesforce 中的用户需要查看外部系统的数据并可能与外部系统进行交互，并且数据无法在 Salesforce 中复制的情况。如果企业资源规划或订单管理系统不支持 Odata 或 GraphQL 协议,那么开发团队可以使用 [Apex 连接器框架](https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_connector_start.htm)编写 Apex 类来处理通过支持的协议与外部系统的通信。

**Data 360** 基于 Data 360 的解决方案非常适合我们需要在一个数据存储中协调来自不同来源的数据的用例。当我们需要将数据从一个 Salesforce 组织复制到多个 Salesforce 组织或使用 Data 360 作为数据中心的其他外部系统时，也可以使用它。在源组织中赢得并更新业务机会时，业务机会数据将同步到 Data 360，其中可以使用不同的机制（例如操作、激活和 API）在其他系统中复制，包括 Salesforce 组织。同样，业务机会可以转诊，而无需使用 Data Cloud One 在其他 Salesforce 组织中复制数据。但是，Data Cloud One 不支持非 Salesforce 平台。

### 适用于 Salesforce 出站集成的专业代码工具

<table>
    <thead>
        <tr>
            <th></th>
            <th>指导</th>
            <th>许可</th>
            <th>时间</th>
            <th>体积和规模</th>
            <th></th>
            <th>交付和维护</th>
            <th></th>
            <th></th>
            <th>隐私和安全</th>
            <th></th>
        </tr>
        <tr>
            <th></th>
            <th><strong>何时使用</strong></th>
            <th><strong>其他许可证</strong></th>
            <th><strong>同步（请求/回复）或异步（火灾/忘记）</strong></th>
            <th><strong>多对象支持</strong></th>
            <th><strong>LDV/批量</strong></th>
            <th><strong>测试和部署**</strong></th>
            <th><strong>调试</strong></th>
            <th><strong>内置错误处理/重试行为</strong></th>
            <th><strong>可与静态加密的数据一起使用</strong></th>
            <th><strong>身份验证协议</strong></th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><strong>Custom Apex</strong></td>
            <td>当您需要的功能多于低代码工具时。</td>
            <td>不需要</td>
            <td>两者</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td>使用专业代码工具</td>
            <td>没有</td>
            <td class="guide-table-ok">是*</td>
            <td>多个</td>
        </tr>
        <tr>
            <td><strong>外部服务</strong></td>
            <td>使用 OpenAPI 规范描述了从代码与外部系统 API 的集成。</td>
            <td>不需要</td>
            <td>同步</td>
            <td class="guide-table-ok">是</td>
            <td>没有</td>
            <td class="guide-table-ok">是</td>
            <td>使用专业代码工具</td>
            <td>没有</td>
            <td>N/A</td>
            <td>多个</td>
        </tr>
        <tr>
            <td><strong>MuleSoft Anypoint</strong></td>
            <td>当您需要单个企业级统一解决方案来构建、编排和管理您的集成时；当您需要替换传统的点对点架构时；或者当您需要 API 管理支持时。</td>
            <td>必填</td>
            <td>两者</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td>使用专业代码工具</td>
            <td>没有</td>
            <td class="guide-table-ok">是*</td>
            <td>多个</td>
        </tr>
    </tbody>
</table>

\* 启用 Shield Platform Encryption 会改变某些行为,有关更多详细信息,请参阅 [General Shield Platform Encryption 注意事项](https://help.salesforce.com/articleView?id=sf.security_pe_considerations_general.htm&type=5)。

\*\*测试和部署是指在较低的环境中构建并通过[元数据 API](https://developer.salesforce.com/docs/metadata-coverage/)、软件包或更改集部署到生产环境的能力。

### 用例：使用 Pro-Code 工具进行出站集成

> 赢得业务机会后，需要在公司的 ERP 或订单管理系统中创建相关产品的订单。

**Custom Apex** 您可以在业务机会上创建 Apex 触发器和触发器处理程序，当业务机会的阶段更改为“已赢得”时，对企业资源规划或订单管理系统进行标注。请注意，如果您从触发器或在执行 DML 操作后进行标注，则必须使用注释为未来或可排队的方法。触发器中的标注会在标注的整个生命周期内保持数据库连接打开。所有 Apex 代码都受 [Apex 调控器和 API 限制](https://developer.salesforce.com/docs/atlas.en-us.salesforce_app_limits_cheatsheet.meta/salesforce_app_limits_cheatsheet/salesforce_app_limits_overview.htm)的约束,这些限制不断修订。

**外部服务** 如果公司的外部 ERP 或订单管理系统通过 OpenAPI 规范定义，则可以简化对将来方法或可排队作业中执行的服务的标注。注册的外部服务可以直接从 Apex 调用，而无需编写模板代码。在示例中，外部服务可以处理创建订单的标注。

**MuleSoft Anypoint** MuleSoft Anypoint 提供企业级 API 管理。MuleSoft Anypoint 可以创建 API，以便为 Salesforce 和许多其他企业系统启用对数据的读取（和/或写入）访问。有[许多预构建连接器](https://www.mulesoft.com/platform/cloud-connectors)可以简化实施,公司也可以创建和发布自己的连接器。这些 API 可以通过灵活的安全策略部署在 Anypoint 中，支持集中管理和治理。只要 API 的大小适合其峰值利用率（以 vCores 衡量），事务量就没有限制。

## 外部系统数据到 Salesforce（入站集成）

对于 Salesforce 的入站集成，您可以考虑不同类型的工具：低代码、专业代码或混合。以下部分提供了每种工具类型的指导，并提供示例解决方案。

- [适用于入站集成的低代码工具](#适用于-salesforce-入站集成的低代码工具)
- [适用于入站集成的混合工具](#适用于-salesforce-入站集成的混合工具)
- [适用于入站集成的专业代码工具](#适用于-salesforce-入站集成的专业代码工具)

### 适用于 Salesforce 入站集成的低代码工具

<table>
    <thead>
        <tr>
            <th></th>
            <th>指导</th>
            <th>许可</th>
            <th>时间</th>
            <th>体积和规模</th>
            <th></th>
            <th>交付和维护</th>
            <th></th>
            <th></th>
            <th>隐私和安全</th>
            <th></th>
        </tr>
        <tr>
            <th></th>
            <th>何时使用</th>
            <th>其他许可证</th>
            <th>同步（请求/回复）或异步（火灾/忘记）</th>
            <th>多对象支持</th>
            <th>LDV/批量</th>
            <th>测试和部署*</th>
            <th>调试</th>
            <th>内置错误处理/重试行为</th>
            <th>可与静态加密的数据一起使用</th>
            <th>身份验证协议</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><strong>Heroku Connect</strong></td>
            <td>当您希望通过双向同步来扩展您的数据，以便在 Heroku 上启用移动和其他应用程序，并且您想要将数据也复制到 Salesforce 中时。</td>
            <td>必填</td>
            <td>异步</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td>没有</td>
            <td>使用专业代码工具</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是，通过 Shield Connect</td>
            <td>OAuth</td>
        </tr>
        <tr>
            <td><strong>OmniStudio 集成程序</strong></td>
            <td>当您需要在没有用户交互的情况下从第三方来源导入和转换数据时。</td>
            <td>必填</td>
            <td>两者</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td>声明性支持</td>
            <td>没有</td>
            <td class="guide-table-ok">是</td>
            <td>命名凭据</td>
        </tr>
        <tr>
            <td><strong>Salesforce Connect/外部对象</strong></td>
            <td>当您希望数据显示在 Salesforce UI 中，但希望数据存储在可以使用 Odata 或 GraphQL 等标准协议的外部系统中时。</td>
            <td>必填</td>
            <td>同步</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td>使用专业代码工具</td>
            <td>没有</td>
            <td>N/A</td>
            <td>多个</td>
        </tr>
    </tbody>
</table>

\*测试和部署是指在较低的环境中构建并通过[元数据 API](https://developer.salesforce.com/docs/metadata-coverage/)、软件包或更改集部署到生产环境的能力。

### 用例：使用低代码工具的入站集成

> 联系人会在组织的 ERP 系统中更新。此联系信息需要在 Salesforce 中更新。

**Heroku Connect** Heroku Connect 通常用于保持 Heroku Postgres 数据库和 Salesforce 同步。除非 ERP 系统使用 Heroku Postgres 作为其交易存储，否则此用例是不可能的。如果它使用 Heroku Postgres，则在 Postgres 表中所做的更改可以使用 Heroku Connect 同步到 Salesforce 中的对象。

**OmniStudio 集成程序** 在 ERP 系统更新联系人记录后，可以通过数据映射器生成的 REST API 调用带有数据映射器加载操作和响应操作的 OmniStudio 集成程序。首先，数据映射加载操作发送 JSON 或 XML 负载，用于根据外部 ID 字段或通过[更新插入密钥](https://trailhead.salesforce.com/content/learn/modules/omnistudio-data-tools-and-internal-data/build-an-integration-procedure-with-conditional-dataraptor-loads?trail_id=build-guided-experiences-with-omnistudio)更新插入联系人记录。如果 JSON 中的简单响应是预期的全部，响应操作可以从以前的操作发回任何相关信息来指示成功或失败。如果 ERP 系统需要特定响应，则数据映射器转换或提取操作可用于生成具有附加功能的 JSON 或 XML 响应，以声明性地包含联系人记录更新在触发器中生成的数据。此场景的主要挑战是并发：同时多次调用更新同一联系人记录将导致问题，因为 API 直接存在于 Salesforce 中。

本用例不建议使用 **Salesforce Connect/外部对象** Salesforce Connect 和外部对象，因为场景特别需要在 Salesforce 中进行数据复制。如果您预先存在与 ERP 集成的 Salesforce Connect，您可以配置 Odata 4.0 连接器，以支持外部变更数据捕获（如果 ERP 可以支持变更数据捕获）。此外，您必须在 Salesforce 中配置，以使用发布/订阅 API 订阅来自 ERP 的变更流。

### 适用于 Salesforce 入站集成的混合工具

<table>
    <thead>
        <tr>
            <th></th>
            <th>指导</th>
            <th>许可</th>
            <th>时间</th>
            <th>体积和规模</th>
            <th></th>
            <th>交付和维护</th>
            <th></th>
            <th></th>
            <th>隐私和安全</th>
            <th></th>
        </tr>
        <tr>
            <th></th>
            <th>何时使用</th>
            <th>其他许可证</th>
            <th>同步（请求/回复）或异步（火灾/忘记）</th>
            <th>多对象支持</th>
            <th>LDV/批量</th>
            <th>测试和部署**</th>
            <th>调试</th>
            <th>内置错误处理/重试行为</th>
            <th>可与静态加密的数据一起使用</th>
            <th>身份验证协议</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><strong>平台事件</strong></td>
            <td>当您需要自定义的结构化负载来近乎实时地更改 Salesforce 或外部系统时。</td>
            <td>不需要*</td>
            <td>异步</td>
            <td class="guide-table-ok">是</td>
            <td>没有</td>
            <td class="guide-table-ok">是</td>
            <td>使用专业代码工具</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td>OAuth</td>
        </tr>
        <tr>
            <td><strong>Salesforce Connect/外部对象（带有自定义 Apex 适配器）</strong></td>
            <td>当您需要数据显示在 Salesforce UI 中，但希望数据存储在无法使用 Odata 2.0/4.0 协议的外部系统中时。</td>
            <td>必填</td>
            <td>两者</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td>使用专业代码工具</td>
            <td>没有</td>
            <td>N/A</td>
            <td>多个</td>
        </tr>
        <tr>
            <td><strong>Data 360</strong></td>
            <td>当您想要在一个数据存储中协调来自不同来源的数据，或者您想要从其他 Salesforce 组织或其他外部系统复制您的数据时。Data 360 还支持一些平台的虚拟化。</td>
            <td>必填</td>
            <td>两者</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td>没有</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td>多个</td>
        </tr>
    </tbody>
</table>

\* 高用量用例需要[加载项](https://developer.salesforce.com/docs/atlas.en-us.platform_events.meta/platform_events/platform_event_limits.htm)。

\*\*测试和部署是指在较低的环境中构建并通过[元数据 API](https://developer.salesforce.com/docs/metadata-coverage/)、软件包或更改集部署到生产环境的能力。

### 用例：使用混合工具的入站集成

> 联系人会在组织的 ERP 系统中更新。此联系信息需要在 Salesforce 中更新。

当联系人记录在 ERP 中更新时，外部系统中的**自定义代码**会发布平台事件。Salesforce 中的触发器、进程或流可以订阅平台事件，并在处理事件时更新相应的 Salesforce 对象。平台事件可能只是作为客户 ERP 系统中发生变化的信号，不包含任何数据，或者可能包含更新 Salesforce 对象所需的实际数据。

**Salesforce Connect/外部对象(带有自定义 Apex 适配器)**该解决方案不适用于需要数据复制的用例。如果您需要 Salesforce 中的用户查看来自外部系统的信息，而该外部系统又不支持 Odata 或 GraphQL 等标准协议，则此解决方案适用。请参阅[用例：出站整合使用混合工具](#用例使用混合工具的出站集成)作为 Apex 自定义适配器的用例示例。

**Data 360** 当联系人在外部系统（例如 ERP）中更新时，可以使用现成的连接器或使用 API 和专业代码工具（例如 MuleSoft）将联系人更新同步到 Data 360。联系人也可以使用零复制机制在 Data 360 中引用（适用于一些平台）。一旦数据在 Data 360 中可用，可以使用不同的现成集成机制将数据同步到其他 Salesforce 组织。可以使用 Data Cloud One 引用访问数据。使用激活和其他 API，使用现成的连接器，或者借助 MuleSoft Anypoint 平台等专业代码工具，也可以复制数据。

### 适用于 Salesforce 入站集成的专业代码工具

<table>
    <thead>
        <tr>
            <th></th>
            <th>指导</th>
            <th>许可</th>
            <th>时间</th>
            <th>体积和规模</th>
            <th></th>
            <th>交付和维护</th>
            <th></th>
            <th></th>
            <th>隐私和安全</th>
            <th></th>
        </tr>
        <tr>
            <th></th>
            <th>何时使用</th>
            <th>其他许可证</th>
            <th>同步（请求/回复）或异步（火灾/忘记）</th>
            <th>多对象支持</th>
            <th>LDV/批量</th>
            <th>测试和部署****</th>
            <th>调试</th>
            <th>内置错误处理/重试行为</th>
            <th>可与静态加密的数据一起使用</th>
            <th>身份验证协议</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><strong>Custom Apex REST &amp; SOAP Web Services</strong></td>
            <td>当您需要比本地 API 端点提供的功能更多的功能时，例如跨对象处理或其他复杂逻辑。</td>
            <td>不需要</td>
            <td>两者</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td>使用专业代码工具</td>
            <td>没有</td>
            <td class="guide-table-ok">是***</td>
            <td>多个</td>
        </tr>
        <tr>
            <td><strong>MuleSoft Anypoint</strong></td>
            <td>当您需要单个企业级统一解决方案来构建、编排和管理您的集成时；当您需要替换传统的点对点架构时；或者当您需要 API 管理支持时。</td>
            <td>必填</td>
            <td>两者</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td>使用专业代码工具</td>
            <td>没有</td>
            <td class="guide-table-ok">是***</td>
            <td>多个</td>
        </tr>
        <tr>
            <td><strong>本地 Salesforce API</strong></td>
            <td>当您需要更多的控制或拥有专业代码技能来通过 REST API、SOAP API、批量 API 或 GraphQL API 或 gRPC 构建集成时。</td>
            <td>不需要*</td>
            <td>两者</td>
            <td class="guide-table-ok">是******</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td>使用专业代码工具</td>
            <td class="guide-table-ok">是**</td>
            <td class="guide-table-ok">是***</td>
            <td>多个</td>
        </tr>
    </tbody>
</table>

\*适用 [API 请求限制和分配](https://developer.salesforce.com/docs/atlas.en-us.salesforce_app_limits_cheatsheet.meta/salesforce_app_limits_cheatsheet/salesforce_app_limits_platform_api.htm)。

\*\*批量 API 具有重试行为的各个方面，一些 API 通过 allOrNone 设置提供*回滚*保护（例如，请查看复合和集合请求中的 [allOrNone 参数](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_composite_allornone.htm)）

\*\*\*启用 Shield Platform Encryption 会更改某些行为,有关详细信息,请参阅[一般 Shield Platform Encryption 注意事项](https://help.salesforce.com/articleView?id=sf.security_pe_considerations_general.htm&type=5)。

\*\*\*\*测试和部署是指在较低的环境中构建并通过[元数据 API](https://developer.salesforce.com/docs/metadata-coverage/)、软件包或更改集部署到生产的能力。

\*\*\*\*\*复合 API 支持多对象。

### 用例：使用 Pro-Code 工具进行入站集成

> 联系人会在组织的 ERP 系统中更新。此联系信息需要在 Salesforce 中更新。

**自定义 Apex REST 和 SOAP Web Services**您可以使用 Apex 代码创建 Web Services，该代码可对联系人对象执行 CRUD(创建、读取、更新、删除)操作。此服务将通过 SOAP 或 REST 从外部系统 (ERP) 调用。

**MuleSoft Anypoint** MuleSoft Anypoint 的目的是提供企业级 API 管理。MuleSoft Anypoint 提供了一[套大型预构建连接器](https://www.mulesoft.com/platform/cloud-connectors)，您可以使用这些连接器与许多 ERP 系统集成，包括 SAP、Oracle EBS、Oracle ERP 和 NetSuite。您可以创建流来监听这些 ERP 系统中的事件（在本例中，是在创建新联系人时）。在流开始时，将使用 Salesforce 连接器创建新的联系人记录（或更新联系人记录（如果联系人已存在）。此外，如果复制事务涉及将联系人整合至其他系统，也可以与其他系统集成。如果需要，您可以使用映射和转换语言 (DataWeave) 在多个不同的系统中执行复杂的逻辑和计算。针对这些系统的身份验证可以通过许多不同的身份验证机制完成，例如基本身份验证和 OAuth。只要流的大小适合其峰值利用率（以 vCores 衡量），事务量就没有限制。

**本地 Salesforce API** 当 ERP 系统中的更新事务完成时(或紧随其后 ) , 您可以通过 SOAP API 对联系人对象执行更新插入操作，或者对 Salesforce 组织中的联系人 sObjects REST API 执行[补丁](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_update_fields.htm)。

## Salesforce 到 Salesforce 集成

Salesforce 至 Salesforce 产品已达到其使用寿命。Salesforce 到 Salesforce 使合作伙伴能够轻松地向联合客户销售和支持，但 Salesforce 将投资为其他工具带来更多创新。下一步，建议在 Salesforce 组织之间共享数据时采用以下方法。

### 跨 Salesforce 组织的数据集成工具

<table>
    <thead>
        <tr>
            <th></th>
            <th>指导</th>
            <th>成本</th>
            <th>时间</th>
            <th>体积和规模</th>
            <th></th>
            <th></th>
            <th>交付和维护</th>
            <th></th>
            <th>隐私和安全</th>
            <th></th>
            <th>实施工具</th>
        </tr>
        <tr>
            <th></th>
            <th><strong>何时使用</strong></th>
            <th><strong>其他许可证</strong></th>
            <th><strong>同步（请求/回复）或异步（火灾/忘记）</strong></th>
            <th><strong>多对象支持</strong></th>
            <th><strong>LDV/批量</strong></th>
            <th><strong>测试和部署*</strong></th>
            <th><strong>调试</strong></th>
            <th><strong>内置错误处理/重试行为</strong></th>
            <th><strong>可与静态加密的数据一起使用</strong></th>
            <th><strong>身份验证协议</strong></th>
            <th><strong>低代码 → 专业代码</strong></th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><strong>Heroku Connect</strong></td>
            <td>当您希望通过 Salesforce 组织之间的双向同步来扩展您的数据，并且还支持从在 Heroku 上运行的移动和其他应用程序访问数据时</td>
            <td>必填</td>
            <td>异步</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td>没有</td>
            <td>使用专业代码工具</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是，通过 Shield Connect</td>
            <td>OAuth</td>
            <td>低代码</td>
        </tr>
        <tr>
            <td><strong>MuleSoft Anypoint</strong></td>
            <td>当您需要单个企业级统一解决方案来构建、编排和管理您的集成时；当您需要替换传统的点对点架构时；或者当您需要 API 管理支持时</td>
            <td>必填</td>
            <td>两者</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td>使用专业代码工具</td>
            <td>没有</td>
            <td class="guide-table-ok">是**</td>
            <td>多个</td>
            <td>Pro 代码</td>
        </tr>
        <tr>
            <td><strong>本地 Salesforce API</strong></td>
            <td>当 Salesforce 或 Heroku Connect 不可选或您需要更复杂的处理时</td>
            <td>不需要</td>
            <td>两者</td>
            <td>没有</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td>使用专业代码工具</td>
            <td>没有</td>
            <td class="guide-table-ok">是**</td>
            <td>多个</td>
            <td>Pro 代码</td>
        </tr>
        <tr>
            <td><strong>变更数据捕获</strong></td>
            <td>当您需要将 Salesforce 中所做的记录级更改发布到外部系统并且不需要自定义负载时。</td>
            <td>必填</td>
            <td>异步</td>
            <td>没有</td>
            <td>没有</td>
            <td class="guide-table-ok">是</td>
            <td>使用专业代码工具</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td>OAuth</td>
            <td></td>
        </tr>
        <tr>
            <td><strong>带跨组织适配器的 Salesforce Connect</strong></td>
            <td>当您希望一个组织中的用户在不复制数据的情况下查看或编辑不同组织中的记录时</td>
            <td>必填</td>
            <td>异步</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td>使用专业代码工具</td>
            <td>N/A</td>
            <td>N/A</td>
            <td>多个</td>
            <td>低代码</td>
        </tr>
        <tr>
            <td><strong>Data 360</strong></td>
            <td>当您希望一个组织中的用户查看或编辑具有在 Data 360 中复制的数据的不同组织中的记录时。</td>
            <td>必填</td>
            <td>两者</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td>使用专业代码工具</td>
            <td class="guide-table-ok">是</td>
            <td class="guide-table-ok">是</td>
            <td>多个</td>
            <td>混合</td>
        </tr>
    </tbody>
</table>

\*测试和部署是指在较低的环境中构建并通过[元数据 API](https://developer.salesforce.com/docs/metadata-coverage/)、软件包或更改集部署到生产的能力

\*\* 启用 Shield Platform Encryption 会更改某些行为,更多详细信息请参阅 [General Shield Platform Encryption 注意事项](https://help.salesforce.com/articleView?id=sf.security_pe_considerations_general.htm&type=5)。

_平台事件对于将数据从一个 Salesforce 组织集成到另一个组织来说不是最佳选择，因为它们不能在组织之间“监听”同一个事件。自定义 Apex 也不是这类整合的推荐方法。_

### 用例：连接多个 Salesforce 组织

> 大型企业跨多个业务部门 (BU) 运营。每个业务部门都有自己的 Salesforce 组织。单个客户与企业的多个业务部门打交道，因此在多个组织中拥有客户和业务机会数据。企业需要访问单个组织中所有业务部门的所有客户和业务机会数据的聚合视图。

_注意：根据 [Takeaway #1](#外卖)，以下所有解决方案都旨在进行最少的数据复制。_

使用现成的 Salesforce 连接器，可以将来自不同 Salesforce 组织的 **Data 360** 客户和业务机会数据接收到 Data 360 中。它们也可以汇总和协调（如果需要）。在 Data 360 中聚合数据后，可以使用 Data Cloud One 在其他 Salesforce 组织中访问它，而无需数据复制。

**Heroku Connect** 对于每个业务部门的单个组织，您可以使用 Heroku Connect 将更改从 Salesforce 同步到单个 Heroku Postgres 数据库中。在这种情况下，不会启用双向同步，只会从 Salesforce 同步到 Postgres。然后，在 Heroku Connect 中，您可以启用 Odata 提供商，并选择要在需要聚合视图的 Salesforce 组织中显示为外部对象的表。从 Salesforce 中，您可以定义指向 Heroku 中的 Odata 提供商的外部数据源。

**MuleSoft Anypoint** MuleSoft Anypoint 提供企业级 API 管理。可以配置 MuleSoft Anypoint API，以便它使用具有多个组织连接的 Salesforce 连接器从多个相关的 Salesforce 组织读取信息。MuleSoft 流可以查询不同的 Salesforce 组织，并返回特定的结构，如果需要，该结构可以通过其他第三方信息来增强或丰富。当调用 API 时，它将进行所有正确的 Salesforce 组织标注（在本例中查询客户和业务机会信息），以便消费者可以处理数据（可能是 UI）。针对这些系统的身份验证可以通过多种身份验证机制完成，包括基本身份验证和 OAuth。只要流的大小适合其峰值利用率（以 vCores 或 Core 衡量），事务量就没有任何限制。

**本地 Salesforce API** 查询操作可以发布到每个感兴趣的组织，特别是通过 Salesforce 批量 API 2.0，它非常适合高效地提取数千条记录。您可以分别检索每个组织的查询结果，并根据客户需求通过自定义应用程序或中间件进行聚合。

具有跨组织适配器的 **Salesforce Connect** Salesforce Connect 跨组织适配器不太适合这种情况,因为来自远程组织的客户或业务机会都将作为*不同*的对象出现在中央组织中。例如，无法为所有组织中的所有业务机会的金额相加。

**跨组织选择性更新场景：**使用 Salesforce 组织 A 的销售人员需要在组织 A 工作时查看和更新 Salesforce 组织 B 的个案数据，并将个案评论添加到 Salesforce 组织 B 的父级个案。数据不得复制到组织 A。

**Heroku Connect** 您可以使用上述*数据聚合场景*中描述的相同方法。但是，您必须通过 Odata 连接器在外部对象上启用 CRUD，并将更改写回 Heroku Postgres。

**MuleSoft Anypoint** MuleSoft Anypoint 提供企业级 API 管理。您可以使用上述*数据聚合场景*中描述的相同方法。

**本地 Salesforce API** 使用命名凭据并调用本地 Salesforce API，以读取和更新相关 Salesforce 组织中的数据。组件必须设计为显示数据。

具有跨组织适配器的 **Salesforce Connect** 通过 [Salesforce 跨组织适配器](https://help.salesforce.com/articleView?id=sf.xorg_adapter_about.htm&type=5)支持在外部对象中查看数据(以及在外部对象上启用 CRUD 的情况下编辑数据)的能力。外部对象之间也支持关系，因此您可以链接到外部对象中的父级个案。但是，创建关系现在是一个手动过程，您将现有的数据类型转换为关系数据类型。此外，为了更有效地处理个案，在 Service Cloud 中实施的优化不会级联到远程组织。Salesforce 强烈建议测试跨组织适配器，并评估用例使用外部对象与标准对象时的权衡。

**跨组织数据同步**:当客户的客户在组织的一个业务部门 Salesforce 组织中更新时，其他 Salesforce 组织的客户对象需要更新，以保持一致的客户信息。

**Data 360** Data 360 可用于从一个组织到另一个 Salesforce 组织的数据复制。一个 Salesforce 组织的客户数据可以使用现成的 Salesforce 连接器接收到 Data 360。我们可以使用数据激活机制，例如批量激活、近乎实时的数据操作或基于 API 的激活，还可以将数据从 Data 360 移动到 Salesforce 组织。

**Heroku Connect** 您可以使用上述*数据聚合场景*中描述的相同方法。但是，您必须启用双向同步，并且您不再需要启用 Salesforce Connect，因为当对 Postgres 表进行更改时，双向同步将使所有组织保持最新状态。

**MuleSoft Anypoint** MuleSoft Anypoint 提供企业级 API 管理。您可以在 MuleSoft Anypoint 中使用流设计器[配置 Mule 应用程序](https://docs.mulesoft.com/design-center/about-designing-a-mule-application)，以监听标准和自定义对象事件，从而在 Salesforce 中启动自动启动的流。当触发 Mule 应用程序时，它可以调用 Anypoint Connector for Salesforce 来与任意数量的 Salesforce 组织通信。在此用例中，当在一个 Salesforce 组织中更新客户记录时，Mule 应用程序可以更新相关 Salesforce 组织中的客户记录。每个相关的 Salesforce 组织在 MuleSoft 的整体应用程序流中都会内置一个唯一的更新步骤。针对这些系统的身份验证可以通过各种身份验证机制完成，包括基本身份验证和 OAuth。只要流的大小适合其峰值利用率（以 vCore 或 Core 衡量），事务量就不会受到限制。

**本地 Salesforce API** [复制 API](https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_guidelines_datareplication.htm) (getUpdated、getDeleted 操作) 可用于跨组织同步数据，但不建议使用此方法。

带跨组织适配器的 **Salesforce Connect** 您可以使用记录触发的流和外部对象来保持一些数据在 Salesforce 组织之间同步。例如，更新组织 A 中的客户记录会触发流，然后更新客户外部对象上的匹配记录，并将这些更新写入组织 B 中的客户记录。这需要正确使用流语义，以避免[混合 DML 事务](https://help.salesforce.com/articleView?id=000328873&type=1&mode=1)。此外，请记住，组织 B 中的验证规则和流将以与 REST/SOAP API 更改时相同的方式触发。

## 结束语

请记住本指南，并在计划涉及 Salesforce 的新数据集成时参考。了解您可用的选项的全部范围，以及它们如何与您的特定用例相适应始终是一个好主意。

### 告诉我们您的想法

帮助我们确保发布与您最相关的内容。[参加我们的调查](https://sfdc.co/J0cWb)，提供有关此内容的反馈，并告诉我们您接下来想要看到的内容。
