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")...
...to("salesforce:upsertSObject?sObjectIdName=Name")...
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参数是必需的。接受maxRecords和locator参数。响应消息标头包括Sforce-NumberOfRecords和Sforce-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")..
...to("salesforce:createBatch")..
43.7.4. REST Streaming API 复制链接链接已复制到粘贴板!
消费者端点可以使用以下语法在创建/更新时接收 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")...
43.7.5. 平台事件 复制链接链接已复制到粘贴板!
要发送平台事件,请使用 createSObject 操作。并设置消息正文可以是 JSON 字符串或 InputStream,带有键-值 data network- 软件仓库,在这种情况下 sObjectName 需要设置为事件的 API 名称,或使用适当的类名称从 AbstractDTOBase 进行扩展。
例如,使用 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);
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")
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")
根据正文中的 rawPayload 为 false 或 true,收到的消息包含 java.util.Map<String,Object > 或 org.cometd.bayeux.Message。CamelSalesforceChangeType 标头的值可以是 CREATE、UPDATE、DELETE 或 UNDELETE 之一。
有关如何使用 Camel Salesforce 组件更改数据捕获功能的更多详细信息,请参阅 ChangeEventsConsumerIntegrationTest。
Salesforce 开发人员指南 非常适合更好地了解如何实施更改数据捕获应用程序。更改事件正文字段的动态性质,高级复制步骤以及安全注意事项可能会值得关注。