您位於此處:
取消封存 Apex
根據特定篩選條件,以程式設計的方式在「封存」應用程式中取消封存記錄,並取回符合您要求的搜尋結果。
取消封存記錄也會取消封存其根記錄和子記錄的整個階層樹狀結構。
透過 Apex 取消封存要求限制為每個組織每小時 50 個。
如果您超過此限制,您會收到 HTTP 狀態代碼 429。
先決條件
啟用「封存」 「啟用取消封存」 可從「封存」應用程式或透過 Apex 取消封存記錄。如果您只需要一個取消封存權限,請啟用其中一個自訂權限,並手動將其指派給自訂權限集或設定檔。
- 封存取消封存:僅能從「封存」應用程式取消封存記錄的權限。
- 封存取消封存 SDK:僅透過 Archive 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。
- 已執行取消封存作業的要求識別碼
- 搜尋的記錄總數
- 狀態代碼,包括錯誤
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:找到的相符記錄少於 1,000,要求已處理—成功!
您想要取消封存擁有學士學位的所有候選項目。
- 您使用 filter
has BA=true執行「封存 Apex Unarchive」函數。 - 系統會搜尋候選項目清單,並找到少於 1,000 個已歸檔記錄。
- 隨即新增類型為 Unarchive SDK 的新活動,並完成所有未歸檔欄位。傳回值是找到的記錄數。
案例 2:找到 1,000 筆以上的相符記錄,要求未處理—失敗
您想要取消封存具有主要學位的所有候選項目。
- 您使用 filter
has MA=true執行「封存 Apex Unarchive」函數。 - 系統會搜尋候選項目清單,並尋找 1,000 筆以上的已歸檔記錄。
- 「歸檔 Apex 未歸檔」流程會失敗結束,且不會建立任何活動。傳回值包含找到的記錄數和錯誤:400,範圍太大。
案例 3:記錄少於 1,000 個、找不到相符記錄、未處理要求—失敗
您想要取消封存具有主要學位的所有候選項目。
- 您使用 filter
has MA=true執行「封存 Apex Unarchive」函數。 - 系統會搜尋候選項目清單,並找到少於 1,000 個記錄,但找不到相符的記錄。未建立任何活動。傳回值是找到的記錄數。
案例 4:找到 1,000 筆以下的相符記錄、已處理要求、部分成功—成功!
您想要取消封存擁有學士學位的所有候選項目。
- 您使用 filter
has BA=true執行「封存 Apex Unarchive」函數。 - 系統會搜尋候選項目清單、找到少於 1,000 個記錄,並取消封存這些記錄。
- 符合篩選條件的記錄無法成功封存。隨即新增類型為 Unarchive 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:取消封存名為「擁有的帳戶」。
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:找到 1,000 筆以下的相符記錄,已處理要求—成功!
根據新的業務要求,客戶想要取消封存擁有學士學位的所有候選項目。
-
將「封存 Apex 取消封存」函數搭配 filter
has BA=true使用。 - 找到的候選項目清單有少於 1,000 個未歸檔的記錄。
-
系統會新增新活動,其中包含新的 typeArchive Apex Unarchive 函數,並填寫所有未歸檔欄位。
傳回值 = 找到的記錄數。
情況 2:找到 1,000 筆以上的相符記錄,要求未處理—失敗
根據新的業務要求,客戶想要取消封存所有具有主要程度的候選項目。
-
將「封存 Apex 取消封存」函數搭配 filter
has MA=true使用。 - 找到的候選項目清單有超過 1,000 個未歸檔的記錄。
-
封存 Apex 未封存流程失敗結束。
未建立任何活動。找到的記錄傳回值 =#,錯誤:400,範圍太大
情況 3:記錄少於 1,000 個、找不到相符記錄、未處理要求—失敗
根據新的業務要求,客戶想要取消封存所有具有主要程度的候選項目。
-
將「封存 Apex 取消封存」函數搭配 filter
has MA=true使用。 -
找到的候選項目清單有少於 1,000 個記錄。找不到相符的記錄。
未建立任何活動。傳回值 = 找到的記錄數

