118.8. 支持的 Salesforce API


组件支持以下 Salesforce API

生产者端点可以使用以下 API:大多数 API 会一次处理一个记录,Query API 可以检索多个记录。

118.8.1. REST API

您可以将以下内容用于 operationName

  • getVersions - 获取受支持的 Salesforce REST API 版本
  • GetResources - 获取可用的 Salesforce REST 资源端点
  • getGlobalObjects - 获取所有可用 SObject 类型的元数据
  • getBasicInfo - 获取特定 SObject 类型的基本元数据
  • getDescription - 获取特定 SObject 类型的综合元数据
  • getSObject - 使用其 Salesforce Id 获取 SObject
  • createSObject - 创建 SObject
  • updateSObject - 使用 Id 更新 SObject
  • deleteSObject - 使用 Id 删除 SObject
  • getSObjectWithId - 使用外部(用户定义的)id 字段获取 SObject
  • upsertSObject - Updates 或使用外部 ID 插入 SObject
  • deleteSObjectWithId - 使用外部 ID 删除 SObject
  • query - 运行 Salesforce SOQL 查询
  • queryMore - 使用从 'query' API 返回的结果链接,获取更多结果(如果大量结果)
  • 搜索 - 运行 Salesforce SOSL 查询
  • limits - 获取机构 API 用量限制
  • recent - 获取最新项目
  • Approval - 提交用于批准过程的记录或记录(批量)
  • Approvals - 获取所有批准过程列表
  • 复合 - 提交至 25 个可能相关的 REST 请求并接收单个响应。也可以在不限制的情况下使用"原始"复合。
  • composite-tree - 创建最多 200 个记录,带有父子关系(最多 5 级)
  • composite-batch - 提交批处理中的请求组成
  • compositeRetrieveSObjectCollections - Retrieve 同一对象类型的一个或多个记录。
  • compositeCreateSObjectCollections - 添加最多 200 记录,返回 SaveSObjectResult 对象列表。
  • compositeUpdateSObjectCollections - 更新最多 200 记录,返回 SaveSObjectResult 对象列表。
  • compositeUpsertSObjectCollections - 根据外部 ID 字段创建或更新(upsert)最多 200 个记录。返回 UpsertSObjectResult 对象列表。
  • compositeDeleteSObjectCollections - 删除最多 200 记录,返回 SaveSObjectResult 对象列表。
  • queryAll - 运行 SOQL 查询。它返回因为合并而删除的结果(最多出现三个记录到其中一个记录,删除其他记录,以及删除任何相关记录)或删除。另外,返回有关归档任务和事件记录的信息。
  • getBlobField - 从单个记录检索指定的 blob 字段。
  • apexCall - 执行用户定义的 APEX REST API 调用。
  • raw - 向 salesforce 发送请求,并对端点、参数、正文等完全控制原始控制。

例如,以下制作者端点使用 upsertSObject API,并将 'Name' 指定为外部 id 字段。请求消息正文应该是使用 maven 插件生成的 SObject DTO。如果更新现有记录,响应消息为 null,或者 CreateSObjectResult 带有新记录的 id,或者在创建新对象时出现错误列表。

...to("salesforce:upsertSObject?sObjectIdName=Name")...

118.8.2. 批量 2.0 API

Bulk 2.0 API 通过原始 Bulk API 有一个简化的模型。使用它快速将大量数据加载到 salesforce 中,或者从 salesforce 中查询大量数据。数据必须以 CSV 格式提供。Bulk 2.0 的最低 API 版本是 v41.0。Bulk Queries 的最低 API 版本是 v47.0。下面提到的 DTO 类来自 org.apache.camel.component.salesforce.api.dto.bulkv2 软件包。支持以下操作:

  • bulk2CreateJob - 创建一个批量作业。在消息正文中提供 作业 实例。
  • bulk2GetJob - 获取现有作业。jobId 参数是必需的。
  • bulk2CreateBatch - 向作业中添加 CSV 记录的批处理。在消息正文中提供 CSV 数据。第一行必须包含标头。jobId 参数是必需的。
  • bulk2CloseJob - Close 一个作业。您必须关闭该作业,以便它被处理或中止/删除。jobId 参数是必需的。
  • bulk2AbortJob - Abort 一个作业。jobId 参数是必需的。
  • bulk2DeleteJob - 删除作业。jobId 参数是必需的。
  • bulk2GetSuccessfulResults - 获取作业成功结果。返回的消息正文将包含 CSV 数据的 InputStream。jobId 参数是必需的。
  • bulk2GetFailedResults - 获取作业失败结果。返回的消息正文将包含 CSV 数据的 InputStream。jobId 参数是必需的。
  • bulk2GetUnprocessedRecords - 获取作业的未处理记录。返回的消息正文将包含 CSV 数据的 InputStream。jobId 参数是必需的。
  • bulk2GetAllJobs - 获取所有作业。响应正文是 作业 实例。如果 done 属性为 false,则还有额外的页面来获取,而 nextRecordsUrl 属性包含后续调用的 queryLocator 参数中要设置的值。
  • bulk2CreateQueryJob - 创建批量查询作业。在消息正文中提供 QueryJob 实例。
  • bulk2GetQueryJob - 获取批量查询作业。jobId 参数是必需的。
  • bulk2GetQueryJobResults - 获取批量查询作业结果。jobId 参数是必需的。接受 maxRecordslocator 参数。响应消息标头包括 Sforce-NumberOfRecordsSforce-Locator 标头。Sforce-Locator 的值可以通过 locator 参数传递给后续调用。
  • bulk2AbortQueryJob - Abort 一个批量查询作业。jobId 参数是必需的。
  • bulk2DeleteQueryJob - 删除批量查询作业。jobId 参数是必需的。
  • bulk2GetAllQueryJobs - 获取所有作业。响应正文是一个 QueryJobs 实例。如果 done 属性为 false,则还有额外的页面来获取,而 nextRecordsUrl 属性包含后续调用的 queryLocator 参数中要设置的值。

118.8.3. REST Bulk (original) API

生产者端点可以使用以下 API:所有作业数据格式,如 xml、csv、zip/xml 和 zip/csv 都被支持。
请求和响应必须由路由进行 marshalled/unmarshalled。通常,请求将是一些流源,如 CSV 文件,响应也可以保存到要与请求关联的文件中。

您可以将以下内容用于 operationName

  • CreateJob - 创建一个 Salesforce Bulk 作业。必须提供正文中的 JobInfo 实例。PK Chunking 通过 pkChunking* 选项支持。请参阅 此处的 解释。
  • Get Job- 使用其 Salesforce Id 获取 作业
  • closeJob - 关闭作业
  • abortJob - Aborts a Job
  • CreateBatch - 在 Bulk 任务中提交了一个批处理
  • getBatch - 使用 Id 获取批处理
  • getAllBatches - 获取 Bulk Job Id 的所有批处理
  • getRequest - Gets Request data (XML/CSV)
  • getResults - 在 Batch 完成后获取结果
  • createBatchQuery - 从 SOQL 查询中创建批处理
  • getQueryResultIds - 获取 Batch Query 的 Result Ids 列表
  • getQueryResult - Gets 结果为 Result Id
  • getRecentReports - 通过向报告列表资源发送 GET 请求,获取最近查看的报告 200 个。
  • getReportDescription - 以表格或摘要或列表格式检索报告、报告类型和相关元数据。
  • executeSyncReport - 使用或不更改过滤器同步运行报告,并返回最新的摘要数据。
  • executeAsyncReport - 使用或没有过滤器异步运行报告实例,并返回带有或没有详情的摘要数据。
  • getReportInstances - 为您请求异步运行的报告返回实例列表。列表中的每一项被视为报告的一个单独实例。
  • getReportResults :包含运行报告的结果。

例如,以下制作者端点使用 createBatch API 来创建作业批处理。消息中的主体必须包含一个正文,它可以被转换为 InputStream (通常是 UTF-8 CSV 或 XML 内容),以及来自文件的 Job 和 'contentType' 的标头字段 'jobId',可以是 XML、CSV、ZIP_XML 或 ZIP_CSV。放置消息正文将包含成功上的 BatchInfo,或者抛出 SalesforceException (错误)。

...to("salesforce:createBatch")..

118.8.4. REST Streaming API

消费者端点可使用以下语法流传输端点,以在 create/update 上接收 Salesforce 通知。

创建并订阅一个主题

from("salesforce:CamelTestTopic?notifyForFields=ALL&notifyForOperations=ALL&sObjectName=Merchandise__c&updateTopic=true&sObjectQuery=SELECT Id, Name FROM Merchandise__c")...

订阅现有主题

from("salesforce:CamelTestTopic&sObjectName=Merchandise__c")...

118.8.5. 平台事件

要发送平台事件,请使用 createSObject 操作。并设置消息正文可以是 JSON 字符串或 InputStream,它带有 key-value data5-4-rhacmin,case sObjectName 需要设为事件的 API 名称,或者从 AbstractDTOBase 扩展为事件的适当类名称的类。

例如,使用 DTO:

class Order_Event__e extends AbstractDTOBase {
  @JsonProperty("OrderNumber")
  private String orderNumber;
  // ... other properties and getters/setters
}

from("timer:tick")
    .process(exchange -> {
        final Message in = exchange.getIn();
        String orderNumber = "ORD" + exchange.getProperty(Exchange.TIMER_COUNTER);
        Order_Event__e event = new Order_Event__e();
        event.setOrderNumber(orderNumber);
        in.setBody(event);
    })
    .to("salesforce:createSObject");

或使用 JSON 事件数据:

from("timer:tick")
    .process(exchange -> {
        final Message in = exchange.getIn();
        String orderNumber = "ORD" + exchange.getProperty(Exchange.TIMER_COUNTER);
        in.setBody("{\"OrderNumber\":\"" + orderNumber + "\"}");
    })
    .to("salesforce:createSObject?sObjectName=Order_Event__e");

要接收平台事件,请使用带有 event/ (或 / event/ )前缀的平台事件的 API 名称的消费者端点,如 salesforce:events/Order_Event__e从该端点消耗的处理器将分别接收 org.apache.camel.component.salesforce.api.dto.PlatformEvent 对象或 org.cometd.bayeux.Message,具体取决于正文中的 rawPayload 分别为 falsetrue

例如,在最简单的形式中,消耗一个事件:

PlatformEvent event = consumer.receiveBody("salesforce:event/Order_Event__e", PlatformEvent.class);

118.8.6. 更改数据捕获事件

另一方面,Salesforce 可以配置为发出通知,以记录所选对象的更改。另一方面,Camel Salesforce 组件可以对此类通知做出反应,从而允许实例 将这些更改同步到外部系统 中

感兴趣的通知可以在 Camel 路由的 from ("salesforce:XXX") 子句中指定,例如:

from("salesforce:data/ChangeEvents?replayId=-1").log("being notified of all change events")
from("salesforce:data/AccountChangeEvent?replayId=-1").log("being notified of change events for Account records")
from("salesforce:data/Employee__ChangeEvent?replayId=-1").log("being notified of change events for Employee__c custom object")

收到的消息包含正文中的 java.util.Map<String,Object > 或 org.cometd.bayeux.Message,具体取决于正文中的 rawPayloadfalsetrueCamelSalesforceChangeType 标头可以等于 CREATEUPDATEDELETEUNDELETE 之一。

有关如何使用 Camel Salesforce 组件更改数据捕获功能的更多详细信息,请参阅 ChangeEventsConsumerIntegrationTest

Salesforce 开发人员指南 非常适合更好地了解实施更改数据捕获集成应用程序的子程序。值得关注的是,更改事件正文字段、高级别复制步骤以及安全考虑的动态性质。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部