289.4. 支持的 Salesforce API


组件支持以下 Salesforce API

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

289.4.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 - 获取所有批准过程列表
  • composite - 提交最多 25 个相关的 REST 请求并接收单个响应
  • composite-tree - 在一个 go 中创建最多 200 个记录,具有父子关系(最多 5 个级别)
  • composite-batch - 提交批处理中的请求组成
  • queryAll - 运行 SOQL 查询。它返回因为合并或删除而被删除的结果。另外,返回有关归档任务和事件记录的信息。
  • getBlobField - 从单个记录中检索指定的 blob 字段。
  • apexCall - 执行用户定义的 APEX REST API 调用。

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

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

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

289.4.3. REST Bulk (original) API

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

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

  • CreateJob - 创建 Salesforce Bulk 作业
  • GetJob - 使用其 Salesforce Id 获取作业
  • CloseJob - 关闭作业
  • 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:createBatchJob")..
Copy to Clipboard Toggle word wrap

289.4.4. REST Streaming API

消费者端点可以使用以下 sytax 进行流传输端点,来在 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

289.4.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" + String.valueOf(in.getHeader(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" + String.valueOf(in.getHeader(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
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat