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")...
...to("salesforce:upsertSObject?sObjectIdName=Name")...
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")..
...to("salesforce:createBatchJob")..
289.4.4. REST Streaming API 复制链接链接已复制到粘贴板!
消费者端点可以使用以下 sytax 进行流传输端点,来在 create/update 上接收 Salesforce 通知。
创建并订阅一个主题
from("salesforce:CamelTestTopic?notifyForFields=ALL¬ifyForOperations=ALL&sObjectName=Merchandise__c&updateTopic=true&sObjectQuery=SELECT Id, Name FROM Merchandise__c")...
from("salesforce:CamelTestTopic?notifyForFields=ALL¬ifyForOperations=ALL&sObjectName=Merchandise__c&updateTopic=true&sObjectQuery=SELECT Id, Name FROM Merchandise__c")...
订阅现有主题
from("salesforce:CamelTestTopic&sObjectName=Merchandise__c")...
from("salesforce:CamelTestTopic&sObjectName=Merchandise__c")...
289.4.5. 平台事件 复制链接链接已复制到粘贴板!
要发出平台事件,请使用 createSObject
操作。然后,设置消息正文可以是 JSON 字符串或 InputStream,带有 key-value datacategories-wagonin,该情况需要设置为 sObjectName
的 API 名称,或使用事件的适当类名称扩展类。
例如,使用 DTO :
或使用 JSON 事件数据:
要接收平台事件,请使用带有带有 event/(或 / event/
)的平台事件的 API 名称的消费者端点,例如: salesforce:events/Order_Event__e
。来自该端点的处理器分别在正文中接收
org.apache.camel.component.salesforce.api.dto.PlatformEvent
对象或 org.cometd.bayeux.Message
,具体取决于 rawPayload
为 false
或 true
。
例如,使用最简单的形式来消耗一个事件:
PlatformEvent event = consumer.receiveBody("salesforce:event/Order_Event__e", PlatformEvent.class);
PlatformEvent event = consumer.receiveBody("salesforce:event/Order_Event__e", PlatformEvent.class);