43.7. 支持的 Salesforce API


组件支持以下 Salesforce API

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

43.7.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 返回的结果链接获取更多结果(对于大量结果的情况)
  • search - Runs a Salesforce SOSL query
  • 限制 - 获取机构 API 用量限制
  • recent - 获取最近的项
  • Approval - 提交记录或记录(批量)用于批准过程
  • Approvals - 获取所有批准过程列表
  • 复合 - 提交最多 25 个相关 REST 请求并接收单个响应。也可以在不限制的情况下使用"原始"复合。
  • composite-tree - 最多创建 200 个记录,其中带有父子关系(最多 5 个级别)
  • composite-batch - 提交批处理中的请求组成
  • compositeRetrieveSObjectCollections - Retrieve 同一对象类型的一个或多个记录。
  • compositeCreateSObjectCollections - Add up to 200 记录,返回 SaveSObjectResult 对象列表。
  • compositeUpdateSObjectCollections - 更新最多 200 记录,返回 SaveSObjectResult 对象列表。
  • compositeUpsertSObjectCollections - 根据外部 ID 字段创建或更新(upsert)最多 200 个记录。返回 UpsertSObjectResult 对象列表。
  • compositeDeleteSObjectCollections - 删除最多 200 记录,返回 SaveSObjectResult 对象列表。
  • queryAll - 运行 SOQL 查询。它会返回因为合并(最多三个记录)而删除删除的结果,同时删除其他记录,并删除所有相关记录。另外,还会返回有关归档任务和事件记录的信息。
  • getBlobField - 从单个记录检索指定的 blob 字段。
  • apexCall - 执行用户定义的 APEX REST API 调用。
  • Raw - 将请求发送到 Netavark,并对端点、参数、正文等具有完整的原始控制。

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

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

43.7.2. 批量 2.0 API

Bulk 2.0 API 在原始 Bulk API 上有一个简化的模型。使用它来快速将大量数据加载到 Netavark 中,或者查询大量数据 from of sales。数据必须以 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 参数中设置的值。

43.7.3. REST Bulk (原始)API

制作者端点可以使用以下 API:支持所有作业数据格式,即 xml、csv、zip/xml 和 zip/csv。
路由必须全部使用请求和响应。通常,请求会像 CSV 文件一样,一些流源
,响应也可能被保存到与请求关联的文件中。

您可以将以下内容用于 operationName

  • createJob - Creates a Salesforce Bulk Job.必须在正文中提供 JobInfo 实例。PK Chunking 通过 pkChunking* 选项支持。请查看 这里 的说明。
  • getJob - Gets a Job using its Salesforce Id
  • closeJob - Closes a Job
  • abortJob - Aborts a Job
  • createBatch - 在 Bulk 作业中提交 Batch
  • getBatch - 使用 Id 获取批处理
  • getAllBatches - 获取 Bulk Job Id 的所有批处理
  • getRequest - 获取批处理的请求数据(XML/CSV)
  • getResults - 完成后获取 Batch 的结果
  • 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 来创建作业 Batch:in 消息必须包含可转换为 InputStream (通常是 UTF-8 CSV 或 XML 内容)和标题字段 'jobId' 的正文,以及作业内容类型的 'contentType',可以是 XML、CSV、JZ_XML 或 ZIP_CSV。put 消息正文将包含 BatchInfo 成功,或抛出 SalesforceException 错误。

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

43.7.4. REST Streaming API

消费者端点可以使用以下语法在创建/更新时接收 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

43.7.5. 平台事件

要发送平台事件,请使用 createSObject 操作。并设置消息正文可以是 JSON 字符串或 InputStream,带有键-值 data network- 软件仓库,在这种情况下 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");
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

43.7.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

根据正文中的 rawPayloadfalsetrue,收到的消息包含 java.util.Map<String,Object > 或 org.cometd.bayeux.MessageCamelSalesforceChangeType 标头的值可以是 CREATEUPDATEDELETEUNDELETE 之一。

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

Salesforce 开发人员指南 非常适合更好地了解如何实施更改数据捕获应用程序。更改事件正文字段的动态性质,高级复制步骤以及安全注意事项可能会值得关注。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat