您在此处:
未归档 Apex
根据特定筛选器,以编程方式在归档应用程序中取消归档记录,并检索匹配请求的搜索结果。
取消归档记录也会取消归档根记录和子记录的整个层次结构树。
通过 Apex 的未归档请求限制为每个组织每小时 50 个。
如果超过此限制,您会收到 HTTP 状态代码 429。
先决条件
启用归档 启用取消归档 从归档应用程序或通过 Apex 取消归档记录。如果您只需要一个未归档权限,请启用其中一个自定义权限,并将其手动分配到自定义权限集或简档。
- 归档未归档:仅从归档应用程序取消归档记录的权限。
- 归档未归档 SDK:仅通过归档 SDK 取消归档记录的权限。
未归档 Apex 函数
每个未归档请求搜索一个对象,并将最多六个筛选器应用于搜索。
performUnarchiveSdk(String sObjectName, List<SearchFilter> filters, DateRange dateRange)
performUnarchiveSdk(String sObjectName, List<SearchFilter> filters)Apex 参数
- sObjectName
- Apex 查询的对象。此参数必填。
- 搜索筛选器
- 根据字段条件缩小搜索结果的筛选器。此参数必填。
- 字段名:要筛选的字段,例如
Name或CreatedDate。 - 值或值列表:要匹配的特定值。如果您使用值列表,Apex 数据查询会将它们与
OR运算符组合。
- 字段名:要筛选的字段,例如
- 日期筛选器
- 要根据日期进行搜索,请使用
DateRange参数和所需的筛选器。DateRange会按ArchiveDate、CreatedDate和ModifiedDate等字段筛选记录。此参数是可选的。日期筛选器建议:- 添加
archive_date日期字段,以根据归档日期进行搜索。 - 使用 Apex 日期格式:MM/DD/YYYY。
- 添加
返回的值
返回值为 ArchiverAccessorResponse。
- 执行的未归档操作的请求 ID
- 搜索检索的记录总数
- 状态代码,包括错误
ArchiverAccessorResponse.getBody(); ⇒ String
ArchiverAccessorResponse.getStatusCode(); ⇒ integer
200 - if the request was accepted
400 - if the request wasn't accepted
ArchiverAccessorResponse.getErrorMessage(); ⇒ String取消归档 Apex 场景
查看归档应用程序中未归档 Apex 流程的示例。
场景 1:找到的匹配记录少于 1000 条,请求已处理 — 成功!
您想要取消归档所有拥有学士学位的候选人。
- 您使用筛选器
has BA=true执行 Archive Apex Unarchive 功能。 - 系统会搜索候选列表,并找到少于 1000 个已归档记录。
- 添加类型为未归档 SDK 的新活动,并完成所有未归档字段。返回值是找到的记录数。
场景 2:找到超过 1000 个匹配记录,请求未处理 — 失败
您想要取消归档所有拥有硕士学位的候选人。
- 您使用筛选器
has MA=true执行 Archive Apex Unarchive 功能。 - 系统会搜索候选列表,并找到 1000 多条已归档记录。
- Archive Apex 取消归档过程不成功结束,并且没有创建活动。返回值包含找到的记录数和错误:400,范围太大。
场景 3:少于 1000 条记录,未找到匹配记录,未处理请求 — 失败
您想要取消归档所有拥有硕士学位的候选人。
- 您使用筛选器
has MA=true执行 Archive Apex Unarchive 功能。 - 系统会搜索候选列表,找到少于 1000 个记录,但未找到匹配记录。未创建活动。返回值是找到的记录数。
场景 4:找到的匹配记录少于 1000 条,请求已处理,部分成功 — 成功!
您想要取消归档所有拥有学士学位的候选人。
- 您使用筛选器
has BA=true执行 Archive Apex Unarchive 功能。 - 系统会搜索候选列表,找到少于 1000 个记录,并将其取消归档。
- 与筛选器匹配的记录成功取消归档。添加类型为未归档 SDK 的新活动,并完成所有未归档字段。返回值是找到的记录数。
代码文档
performUnarchiveSdk(String sObjectName, List<SearchFilter> filters, DateRange dateRange)
performUnarchiveSdk(String sObjectName, List<SearchFilter> filters)返回值:ArchiverAccessorResponse
ArchiverAccessorResponse.getBody(); ⇒ String
ArchiverAccessorResponse.getStatusCode(); ⇒ integer
200 - if the request was accepted
400 - if the request wasn't accepted
ArchiverAccessorResponse.getErrorMessage(); ⇒ String代码示例
示例 1:名为 Own 的未归档客户。
List<SearchFilter> request = new List<SearchFilter>();
String sObjectName = 'Account';
SearchFilter filter1 = new SearchFilter('Name', 'Own');
request.add(filter1);
ArchiverAccessorResponse res = ArchiverAccessor.performUnarchiveSdk(sObjectName, request);
Map<String, Object> jsonMap = (Map<String, Object>) JSON.deserializeUntyped(res.getBody());
system.debug(jsonMap.get('request_id'));
system.debug(jsonMap.get('total_result_count'));示例 2:带有筛选器的归档客户,其中名称是 PersonAccount3,日期范围是过去 150 天内创建的记录。
// Initialize a list to hold search filters for the archive operation
List<SF_Archive.SearchFilter> request = new List<SF_Archive.SearchFilter>();
// Define the Salesforce object name to perform the operation on
String sObjectName = 'Account';
// Create a search filter based on the 'Name' field with a specific value
SF_Archive.SearchFilter filter1 = new SF_Archive.SearchFilter('Name', 'PersonAccount3');
// Add the created filter to the request list
request.add(filter1);
// Create a date range filter to select records created in the last 150 days
// It calculates the start date by subtracting 150 days from today's date
SF_Archive.dateRange range = new SF_Archive.dateRange('CreatedDate', system.today()-150, system.today());
// Perform the unarchive operation with the specified object name, filters, and date range
// This retrieves records from the archival that match the given criteria
SF_Archive.ArchiverAccessorResponse res = SF_Archive.ArchiverAccessor.performUnarchiveSdk(sObjectName, request, range);
// Deserialize the JSON response body to a Map object to easily access the data
Map<String, Object> jsonMap = (Map<String, Object>) JSON.deserializeUntyped(res.getBody());
// Debug print the request ID and total result count from the response for logging purposes
system.debug(jsonMap.get('request_id'));
system.debug(jsonMap.get('total_result_count'));- 取消归档 Apex 场景
以下是归档应用程序中未归档 Apex 流程的示例。
取消归档 Apex 场景
以下是归档应用程序中未归档 Apex 流程的示例。
场景 1:找到的匹配记录少于 1000 条,请求已处理 — 成功!
根据新的业务请求,客户想要取消归档所有拥有学士学位的候选人。
-
将 Archive Apex Unarchive 功能与筛选器
has BA=true一起使用。 - 找到的候选人列表的未归档记录少于 1000 条。
-
使用新 typeArchive Apex Unarchive 函数添加新活动,并填写所有未归档字段。
返回值 = 找到的记录数。
场景 2:找到超过 1000 个匹配记录,请求未处理 — 失败
根据新的业务请求,客户希望取消归档所有拥有硕士学位的候选人。
-
将 Archive Apex Unarchive 功能与筛选器
has MA=true一起使用。 - 找到的候选人列表有 1000 多条未归档的记录。
-
Archive Apex 取消归档过程不成功结束。
未创建活动。返回值 = # 找到的记录,错误:400,范围过大
场景 3:少于 1000 条记录,未找到匹配记录,未处理请求 — 失败
根据新的业务请求,客户希望取消归档所有拥有硕士学位的候选人。
-
将 Archive Apex Unarchive 功能与筛选器
has MA=true一起使用。 -
找到的候选人列表的记录少于 1000 条。未找到匹配记录。
未创建活动。返回值 = 找到的记录数量

