111.8. 支持的 Salesforce API


组件支持以下 Salesforce API

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

111.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 - 更新或使用外部 id 插入 SObject
  • deleteSObjectWithId - 使用外部 id 删除 SObject
  • query - 运行 Salesforce SOQL 查询
  • queryMore - 使用从 'query' API 返回的结果链接获取更多结果(如果有大量结果)
  • 搜索 - 运行 Salesforce SOSL 查询
  • 限制 - 获取机构 API 使用限制
  • recent - 获取最新的项目
  • Approval - 为批准过程提交记录或记录(批量)
  • Approvals - 获取所有批准过程列表
  • 复合 - 提交最多 25 个相关的 REST 请求并接收单个响应。也可以在不限制的情况下使用"原始"复合。
  • composite-tree - 在一个 go 中创建最多 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,sObjectIdName 参数将 'Name' 指定为外部 id 字段。请求消息正文应该是使用 maven 插件生成的 SObject DTO。如果现有记录已更新,或者 CreateSObjectResult 带有新记录的 id,或者在创建新对象时出现错误列表,响应消息可以是 null

...to("salesforce:upsertSObject?sObjectIdName=Name")...
Copy to Clipboard Toggle word wrap

111.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 - 关闭作业。您必须关闭作业,以便它被处理或中止/删除。jobId 参数是必需的。
  • bulk2AbortJob - Abort a job。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 a bulk query job。jobId 参数是必需的。
  • bulk2DeleteQueryJob - 删除批量查询作业。jobId 参数是必需的。
  • bulk2GetAllQueryJobs - 获取所有作业。响应正文是 QueryJobs 的实例。如果 done 属性为 false,则还有额外的页面可供获取,而 nextRecordsUrl 属性包含在后续调用的 queryLocator 参数中设置的值。

111.8.3. REST Bulk (original) API

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

对于 operationName,您可以使用以下内容:

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

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

...to("salesforce:createBatch")..
Copy to Clipboard Toggle word wrap

111.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")...
Copy to Clipboard Toggle word wrap

订阅现有主题

from("salesforce:CamelTestTopic&sObjectName=Merchandise__c")...
Copy to Clipboard Toggle word wrap

111.8.5. 平台事件

要发出平台事件,请使用 createSObject 操作。然后,设置消息正文可以是 JSON 字符串或 InputStream,带有 key-value datacategories-wagonin,该情况需要设置为 sObjectName 的 API 名称,或使用事件的适当类名称扩展类。

例如,使用 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");
Copy to Clipboard Toggle word wrap

或使用 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");
Copy to Clipboard Toggle word wrap

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

例如,使用最简单的形式来消耗一个事件:

PlatformEvent event = consumer.receiveBody("salesforce:event/Order_Event__e", PlatformEvent.class);
Copy to Clipboard Toggle word wrap

111.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")
Copy to Clipboard Toggle word wrap

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

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

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

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat