Loading
設定並維護您的 Salesforce 組織
目錄
選取篩選

          沒有結果
          沒有結果
          以下是搜尋小祕訣

          檢查關鍵字的拼字。
          使用較常見的搜尋字詞。
          選取較少篩選條件以擴大您的搜尋。

          搜尋所有 Salesforce 說明
          封存 Apex 資料查詢

          封存 Apex 資料查詢

          「歸檔 Apex 資料查詢」可在「歸檔」應用程式中啟用已歸檔資料的程式設計存取權。這些資料查詢可自動化業務流程、支援第三方系統整合、建立自訂檢視和報告,以及與已啟用記錄交叉參照已歸檔資料。

          「封存」元件和「封存搜尋」可提供手動取用資料的選項。Apex 提供進階功能,例如查詢參數、篩選條件和分頁,可透過程式碼直接存取資料。

          Apex 資料查詢功能包括:

          • 使用指定的條件搜尋已歸檔記錄。
          • 使用部分比對與星號 (*)。
          • 以每頁最多 1,000 筆記錄的批次傳回大型資料集。
          • 套用最多六個篩選條件以限定您的結果。
          • 查詢已歸檔記錄,即使物件已從您的生產組織中刪除。

          系統相關的這些 Salesforce 物件會篩選出,且無法透過 Apex 搜尋。

          • Feed
          • History
          • Relation
          • Share

          為了維持最佳效能並確保僅傳回相關的歸檔資料,「封存」會從搜尋中排除這些物件。

          備註
          備註 無法透過「封存 Apex」來提取檔案和附件。

          若要存取已歸檔檔案,請使用「歸檔」元件或「歸檔搜尋」。

          備註
          備註

          封存 Apex 會強制執行這些要求限制。

          間隔 要求限制
          每分鐘 1000
          每小時 30,000
          每天 100,000

          如果您超過此限制,您會收到 HTTP 狀態代碼 429。

          封存 Apex 資料查詢方法

          若要定義查詢歸檔資料的方式,請設定封存 Apex 所提供的方法。

          • 存取歸檔資料—ArchiverAccessor 中的方法設計為與已歸檔記錄互動。接著,您可以建立查詢,並取回儲存在「封存」產品中的資料。
          • 定義查詢作業—這些簽章會告知您可以使用 Apex 執行的查詢類型,例如全域搜尋和篩選的查詢。
          • 指引用量—透過檢查方法簽章,開發人員可以瞭解實作所需的輸入與輸出。

          performArchiverGlobalSearch 方法

          此方法表示可對已歸檔資料執行全域搜尋的功能。

          Query 參數

          Apex 資料查詢使用數個參數來限定搜尋。有些參數是必要的,有些則是選擇性的。瞭解如何設定每個參數,可協助您取得最準確且相關的結果。

          • 物件名稱—指定要查詢的 Salesforce 物件類型。

            例如,string sObjectName = 'Account' 指定查詢鎖定「帳戶」記錄的目標。

            此參數是必要的。

            備註
            備註 每個查詢目標為單一物件。使用個別查詢從多個物件中提取資料。
          • 搜尋篩選條件—根據欄位條件縮小搜尋結果範圍的篩選條件。
            • 欄位名稱—您要篩選依據的欄位,例如 NameCreatedDate
            • 值或值清單—您要比對的特定值

              範例:單一值篩選

              SF_Archive.SearchFilter filter = new
              SF_Archive.SearchFilter('Name', 'test'); 

              此查詢會傳回「名稱」欄位符合字串「test」的記錄。

              範例:多值篩選
              SF_Archive.SearchFilter filter = new
              SF_Archive.SearchFilter('Status', new List<String>{'Open', 'Closed'}); 

              此查詢會傳回「狀態」欄位符合字串「未結束」或「已結束」的記錄。

              處理空白或空值—若要搜尋欄位為空白或空值的記錄,請將空白字串 ("") 新增至「值清單」。

              範例:

              List<SearchFilter> filters = new List<SearchFilter>();
              filters.add(new SearchFilter('Subject', '')); 
              此查詢會傳回「主旨」欄位為空白或空值的「個案」記錄。

              搜尋篩選限制:

              • 查詢需要每個查詢至少 1 個篩選條件。
              • 每個查詢最多可以有 6 個篩選條件 (結合 AND 邏輯)。
              • 依預設會使用 AND 邏輯來結合篩選條件。目前不支援 OR 邏輯。
              • 篩選條件的值清單不能超過 1,000 個項目。

            此參數是必要的。

          • 日期篩選條件—若要根據日期搜尋,請使用 DateRange 參數和必要篩選條件。DateRange 會依如 ArchiveDateCreatedDateModifiedDate 等欄位篩選記錄。

            範例:特定日期查詢的日期篩選

            Date todayDate = Date.today();
            Date jan1st2024 = Date.newInstance(2024, 1, 1);
            DateRange dateRange = new DateRange('archive_date', jan1st2024, todayDate);

            此查詢會傳回 2024 年 1 月 1 日與今日之間歸檔的記錄。

            範例:多個日期範圍的日期篩選

            List<SF_Archive.SearchFilter> filters = new List<SF_Archive.SearchFilter>();
            SF_Archive.SearchFilter filter = new SF_Archive.SearchFilter('Name', 'test');
            filters.add(filter);
            string sObjectName = 'Account';
            
            Date myDate = Date.newInstance(2024, 1, 11); // January 11, 2024
            Date myDate2 = Date.newInstance(2023, 12, 25); // December 12, 2023
            SF_Archive.dateRange range = new SF_Archive.dateRange('CreatedDate', myDate, myDate);
            SF_Archive.dateRange range2 = new SF_Archive.dateRange('CreatedDate', myDate2, myDate2);
            list<SF_Archive.dateRange> ranges = new list<SF_Archive.dateRange> {range, range2};
            SF_Archive.ArchiverAccessorResponse res = SF_Archive.ArchiverAccessor.performArchiverGlobalSearch(sObjectName, filters, ranges);

            此查詢會傳回 2023 年 12 月 12 日到 2024 年 1 月 11 日之間歸檔的記錄。

            日期篩選條件建議:

            • 若要根據「封存日期」搜尋,請新增 archive_date 日期欄位。
            • 使用 Apex 日期格式:MM/DD/YYYY。

            此參數為選擇性。

          • 傳回的欄位—指定要包含在結果中的欄位。若未指定,則會傳回所有欄位。

            範例:傳回特定欄位

            List<string> fields = new List<string>{'Name', 'CreatedDate'};

            此查詢只會傳回每個記錄的 NameCreatedDate 欄位。

            此參數為選擇性。

          • 頁面大小—設定每個查詢的記錄數。每個查詢的預設記錄數目為 25,最大值為 1,000。

            範例:自訂頁面大小

            SF_Archive.ArchiverAccessorResponse res = 
            SF_Archive.ArchiverAccessor.performArchiverGlobalSearch('Account', 
            filters, 100, fields);

            此查詢會傳回每頁 100 筆記錄。

            備註
            備註 查詢中超過 1,000 個記錄會觸發執行階段錯誤。
            此參數為選擇性。
          • 排序方向—依欄位 (例如 CreatedDate) 排序結果。
            • 遞增 (asc):最舊至最新。
            • 遞減 (desc):最新的至最舊的。

              範例:排序查詢

              SortingDirection sortingDirection = new SortingDirection('desc');

              此查詢會傳回根據其 CreatedDate 以遞減順序排序的記錄。

              此參數為選擇性。

          getNextPage 方法

          如果結果並未全部符合相同頁面,則此方法會呼叫下一個頁面。

          ScrollId 參數

          透過在最多 1,000 個記錄的頁面中提取結果,使用分頁傳回大型資料集。

          若要設定分頁工作流程,請執行初始查詢,使用回應中的 scrollId 來提取後續頁面,然後持續直到 scrollId = '-1'. 為止。

          範例:使用分頁提取結果

          // Perform initial search query
          SF_Archive.ArchiverAccessorResponse res = SF_Archive.ArchiverAccessor.performArchiverGlobalSearch('Account', 
          filters, 100, fields);
                              
          // Get the search response
          SF_Archive.ArchiverAccessorSearchResponse searchResponse = res.getSearchResponseMap();
                              
          // Process first page of results
          system.debug('Total result count: ' + searchResponse.totalResultCount);
          system.debug('Records: ' + searchResponse.records);
                              
          // Fetch next page using the scrollId
          if (searchResponse.scrollId != '-1') {
          SF_Archive.ArchiverAccessorResponse nextPageRes = SF_Archive.ArchiverAccessor.getNextPage(searchResponse.scrollId);
          SF_Archive.ArchiverAccessorSearchResponse nextPageResponse = nextPageRes.getSearchResponseMap();
          system.debug('Next Page Records: ' + nextPageResponse.records);
          }

          存取方法

          若要尋找方法簽章,請進入「設定」,在「快速尋找」方塊中輸入 Apex 類別,然後選取「Apex 類別」。開啟 ArchiverAccessor 類別。找到列在 performArchiverGlobalSearch 命名空間下方的所有方法。

          範例資料查詢

          此範例使用下列條件來取用 Account 記錄。

          • 欄位:NameCreatedDate
          • 限制:每頁 100 筆記錄
          • 名稱:包含字串「test」
          • 排序:遞減 CreatedDate
          List<SF_Archive.SearchFilter> filters = new List<SF_Archive.SearchFilter>();
          SF_Archive.SearchFilter filter = new SF_Archive.SearchFilter('Name', 'test');
          filters.add(filter);
                          
          List<string> fields = new List<string>{'Name', 'CreatedDate'};
                          
          SortingDirection sortingDirection = new SortingDirection('desc');
                          
          SF_Archive.ArchiverAccessorResponse res = SF_Archive.ArchiverAccessor.performArchiverGlobalSearch('Account', 
          filters, 100, fields, sortingDirection);
                      

          疑難排解常見錯誤

          錯誤碼 描述 解決方案
          INTERNAL_ERROR 發生非預期失敗。 連絡支援以取得錯誤詳細資料。
          RESOURCE_LIMIT_ERROR 超過分頁或查詢大小限制。 縮小頁面大小或限定搜尋篩選條件。
          VALIDATION_ERROR 遺失或搜尋條件無效。 確定所有欄位與篩選條件皆有效。

          其他建議

          • 監視您的 API 用量以避免達到限制。
          • 若要將回應投放至物件,請將回應序列化為 JSON,然後將回序序列化回物件。
          • 確認欄位已啟用且可供存取。
          • 重複檢查所有查詢參數。
          • 如有未解決的問題,請連絡 Salesforce 支援並取得詳細的記錄。

          如需逐步測試程序,請參閱 封存 Apex 測試

          歸檔 Apex 資料查詢—程式碼範例

          在此程式碼範例中,會透過「封存」應用程式中的狀態代碼驗證篩選條件、日期範圍和封存搜尋要求。

          系統會包含 (scrollId != -1) 之後的 getNextPage 通話,因為結果大小在 performArchiverGlobalSearch 通話中受到限制。

          string sObjectName = 'Account';
          list<SF_Archive.SearchFilter>request = new list<SF_Archive.SearchFilter>();
          SF_Archive.SearchFilter filter1 = new SF_Archive.SearchFilter('Name', 'test');
          request.add(filter1);
          SF_Archive.dateRange range = new SF_Archive.dateRange('CreatedDate', system.today()-150, system.today());
          SF_Archive.ArchiverAccessorResponse res = SF_Archive.ArchiverAccessor.performArchiverGlobalSearch(sObjectName, request, range);
          
          if(res.getStatusCode() == 200){
              system.debug('code: ' + res.getStatuscode());
              SF_Archive.ArchiverAccessorSearchResponse searchResponse = res.getSearchResponseMap();
              system.debug('count: '+ searchResponse.totalResultCount);
              system.debug('scrollid: '+ searchResponse.scrollId);
              system.debug('list size: '+ searchResponse.records.size());
              string scrollId = searchResponse.scrollId;
              integer page = 1;
          
              while(scrollId != '-1'){
                  page++;
                  SF_Archive.ArchiverAccessorResponse secondPage =
                  SF_Archive.ArchiverAccessor.getNextPage(searchResponse.scrollId);
                  if(secondPage.getStatusCode() == 200){
                      SF_Archive.ArchiverAccessorSearchResponse searchResponse2 = secondPage.getSearchResponseMap();
                      scrollId = searchResponse2.scrollId;
                      system.debug('count: '+ searchResponse2.totalResultCount);
                      system.debug('scrollid: '+ searchResponse2.scrollId);
                      system.debug('list size: '+ searchResponse2.records.size());
                      system.debug('page number: '+ page);
                  } else{
                      system.debug('response is != 200: '+ secondPage.getStatusCode());
                      system.debug('body: '+ secondPage.getBody());
                      break;
                      } 
                  }
              } else {
                  system.debug('status code erorr|: '+ res.getStatusCode());
                  system.debug('status code message|: '+ res.getErrorMessage()); 
              }

          歸檔 Apex 資料查詢—範例使用個案 1

          此範例使用個案顯示如何建立和自訂在「封存」應用程式中顯示「高優先順序帳戶」的元件。

          使用個案

          您的業務需要「層級 3 支援小組」擁有存取權,才能檢視具有高優先順序狀態的已歸檔個案。

          此範例顯示如何:

          • 建立自訂 Lightning Web 元件 (LWC)。
          • 使用 Apex 資料查詢提取歸檔的資料。
          • 套用篩選條件 (高優先順序)。
            備註
            備註 其他篩選條件可以透過參照「歸檔 Apex 資料查詢 — 程式碼範例」中的程式碼來進行自訂。

            此範例限制為 25 個記錄。Apex 可讓您設定每頁 1,000 個結果。預設值為 25,其中包含透過結果分頁的選項。

          顯示高優先順序個案的元件

          範例 SdkUseCaseWidget.js

          在此程式碼範例中,參數為 AccountRecordId

          import { LightningElement, api, track } from 'lwc';
              import getCases from '@salesforce/apex/ArchiveSdk.getCases';
              export default class SampleSdkUseCaseWidget extends LightningElement {
              @api recordId;
              
              columns = [
              { label: 'Case Number', fieldName: 'caseNumber', type: 'text', cellAttributes: {alignment: 'center'}},
              { label: 'Subject', fieldName: 'subject', type: 'text' , cellAttributes: {alignment: 'center'}, },
              { label: 'Priority', fieldName: 'priority', type: 'text', cellAttributes: {alignment: 'center'}, },
              { label: 'Status', fieldName: 'status', type: 'text', cellAttributes: {alignment: 'center'}, }
              ];
              @track records;
              @track data
              @track _loading;
              
              async connectedCallback() {
              this._loading = true;
              try {
              const result = await getCases({parentId: this.recordId})
              this.records = result;
              this._loading = false;
              } catch (error) {
              this._loading = false;
              }}
          }            

          範例 SdkUseCaseWidget.html

          LWC 使用的 Apex 控制項會呼叫 Apex 資料查詢。

          SF_Archive.ArchiverAccessor.performArchiverGlobalSearch(sObjectName, request, fields, range);

          這是封存 Apex 的呼叫。其中包含以下參數。

          • sObjectName—描述搜尋
          • 篩選條件—用於提取資料
          • 欄位—要從資料傳回的預測欄位。
          • 範圍—用來查詢資料的日期範圍。
          <template>
              <template if:true={_loading}>
                  <lightning-spinner></lightning-spinner>
              </template>
              <lightning-datatable
                  key-field="caseNumber"
                  data={records}
                  columns={columns}
                  hide-checkbox-column>
              </lightning-datatable>
          </template>

          ArchiveSdk.cls

          此程式碼區塊是 Apex 控制項。

          public with sharing class ArchiveSDK {
                          
              @AuraEnabled
              public static List<CaseTableWrapperExample.CaseRecord> getCases(String parentId) {
              // Create an empty list to hold maps with String keys and Object values
              List<Map<String, Object>> totalRecords = new List<Map<String, Object>>();
              
              // Create a list to store search filter objects
              List<SF_Archive.SearchFilter> request = new List<SF_Archive.SearchFilter>();
              
              // Create a search filter for the 'AccountId' field with a given 'parentId' value
              SF_Archive.SearchFilter filter1 = new SF_Archive.SearchFilter('AccountId', parentId);
              
              // Create a search filter for the 'Priority' field with a given 'High' value
              SF_Archive.SearchFilter filter2 = new SF_Archive.SearchFilter('Priority', 'High');
              
              // Add the filters to the request list
              request.add(filter1);
              request.add(filter2);
              
              // Define the object name as 'Case'
              String sObjectName = 'Case';
              
              // Create a list of Strings representing field names to be retrieved from Archive DB
              List<String> fields = new List<String>{'CaseNumber', 'Subject', 'Priority', 'Status'};
              
              // Create the DateRange based on the created date
              SF_Archive.DateRange range = new SF_Archive.DateRange('CreatedDate', system.today() - 150, system.today());
              
              // Perform an initial global search and store the response
              SF_Archive.ArchiverAccessorResponse res = SF_Archive.ArchiverAccessor.performArchiverGlobalSearch(sObjectName, request, range);
              
              // Check if the HTTP response status code is 200 (success)
              if (res.getStatusCode() == 200) {
                  system.debug('code: ' + res.getStatuscode());
                  
                  // Retrieve the initial search response map
                  SF_Archive.ArchiverAccessorSearchResponse searchResponse = res.getSearchResponseMap();
                  
                  system.debug('count: ' + searchResponse.totalResultCount);
                  system.debug('scrollid: ' + searchResponse.scrollId);
                  system.debug('list size: ' + searchResponse.records.size());
                  
                  // Store the scroll ID for pagination
                  String scrollId = searchResponse.scrollId;
                  
                  // Initialize the page number
                  Integer page = 1;
                  
                  // Add the records from the initial search to the totalRecords list
                  totalRecords.addAll(searchResponse.records);
                  
                  // Continue to fetch additional pages while the scroll ID is not '-1'
                  while (scrollId != '-1') {
                      page++;
                      
                      // Get the next page of search results using the UPDATED scrollId 
                      SF_Archive.ArchiverAccessorResponse nextPageResponse = SF_Archive.ArchiverAccessor.getNextPage(scrollId);
                      
                      // Check if the HTTP response status code is 200 (success)
                      if (nextPageResponse.getStatusCode() == 200) {
                      
                          // Retrieve the search response for the current page
                          SF_Archive.ArchiverAccessorSearchResponse searchResponse2 = nextPageResponse.getSearchResponseMap();
                          
                          // CRITICAL FIX: Update the scrollId with the value from the new response 
                          scrollId = searchResponse2.scrollId;
                          
                          system.debug('count: ' + searchResponse2.totalResultCount);
                          system.debug('scrollid: ' + searchResponse2.scrollId);
                          system.debug('list size: ' + searchResponse2.records.size());
                          system.debug('page number: ' + page); 
                          
                          // Add the records from the current page to the totalRecords list
                          totalRecords.addAll(searchResponse2.records);
                      } else {
                          // Output an error message if the HTTP response status code is not 200
                          system.debug('response is != 200: ' + nextPageResponse.getStatusCode());
                          system.debug('body: ' + nextPageResponse.getBody());
                          
                          // Break out of the loop if there is an error
                          break;
                      }
                  } // End of while loop
              } else {
                  // Handle error from initial search
                  system.debug('status code error: ' + res.getStatusCode());
                  system.debug('status code message: ' + res.getErrorMessage());
              }
              
              // Return the list of total records
              List<CaseTableWrapperExample.CaseRecord> result = new List<CaseTableWrapperExample.CaseRecord>();
              return CaseTableWrapperExample.getCasesTable(totalRecords);
              }
          }

          CaseTableWrapperExample.cls

          從 Apex 到 LWC 格式的協助程式類別

          public class CaseTableWrapperExample{
              public static List<caseRecord> getCasesTable(list<map<string,object>> cases){
              List<caseRecord> caseReturnList = new List<caseRecord>();
              for(Map<string,object> caseRecord: cases){
              caseRecord tempCase = new caseRecord();
              tempCase.caseNumber = String.valueOf(caseRecord.get('CaseNumber'));
              tempCase.id = String.valueOf(caseRecord.get('Id'));
              tempCase.origin = String.valueOf(caseRecord.get('Origin'));
              tempCase.status = String.valueOf(caseRecord.get('Status'));
              tempCase.subject = String.valueOf(caseRecord.get('Subject'));
              tempCase.priority = String.valueOf(caseRecord.get('Priority'));
                  
              caseReturnList.add(tempCase);
              }
              return caseReturnList;
              }
              
              public class caseRecord {
              @AuraEnabled public string caseNumber;
              @AuraEnabled public string id;
              @AuraEnabled public string origin;
              @AuraEnabled public string status;
              @AuraEnabled public string priority;
              @AuraEnabled public string subject;
          }}

          上述程式碼描述範例案例,您可以將 LWC 新增為 Lightning 頁面的元件。

          若要檢視實際的 Lightning 資料表,請將此程式碼新增至 sampleSdkUseCaseWidget.js-meta.xml 檔案。然後將「封存」元件新增至 Lightning 頁面。

          <?xml version="1.0" encoding="UTF-8"?>
          <LightningComponentBundle xmlns="<a href='http://soap.sforce.com/2006/04/metadata">;
              <apiVersion>55.0</apiVersion>
              <isExposed>true</isExposed>
              <targets>
              <target>lightning__RecordPage</target>
              <target>lightning__AppPage</target>
              </targets>
              <targetConfigs>
              <targetConfig targets="lightning__RecordPage">
              <supportedFormFactors>
              <supportedFormFactor type="Small" />
              <supportedFormFactor type="Large" />
              </supportedFormFactors>
              </targetConfig>
              <targetConfig targets="lightning__AppPage">
              <supportedFormFactors>
              <supportedFormFactor type="Small" />
              <supportedFormFactor type="Large" />
              </supportedFormFactors>
              </targetConfig>
              </targetConfigs>
          </LightningComponentBundle>

          歸檔 Apex 資料查詢—使用個案範例 2

          此範例使用個案顯示「歸檔 Apex」如何在「歸檔」應用程式中處理工作,而不超過管理員限制,例如 CPU 限制或逾時呼叫。

          如需詳細資訊,請參閱 Apex 管理員限制

          使用個案

          您的業務需要「層級 3 支援小組」擁有存取權,才能檢視具有高優先順序狀態的已歸檔個案。

          此範例顯示如何在透過 Apex 已封存記錄的數目過多時解決錯誤。錯誤如下所示:SF_Archive.ArchiverAccessor.ArchiverAccessorException: Exceeded time allotted for callout, please contact support.

          來自這些 Apex 類別的程式碼會建立此使用個案。

          ArchiveSecondPageJob 類別會使用捲動識別碼從「封存」處理分頁資料,並視需要進行呼叫。其會透過 Queueable 介面以非同步方式執行,追蹤總執行時間以避免超過限制,並視需要將自身列入繼續處理。類別會處理回應、更新捲動識別碼,並記錄有關每個採取資料頁面的詳細資料。

          public class ArchiveSecondPageJob implements Queueable,Database.AllowsCallouts {
                                    
                 private String scrollId;
                 private long totalTime;
                 private integer pageNumber;
          
                 public archiveSecondPageJob(String prevScrollId, integer pageNumber) {
                     scrollId = prevScrollId;
                     this.pageNumber = pageNumber;
                 }
          
                 public void execute(QueueableContext context) {
                     system.debug('executing');
                     doExecute();
                 }
                 private void doExecute() {
                         SF_Archive.ArchiverAccessorSearchResponse searchResponse = null;
                         integer page = 1;
                         long totalTime = 0;
            
                                 while(scrollId != '-1')
                                 {       
                                     //avoid 12000 ms limit
                                     if(totalTime > 90000){
                                         system.debug('Creating new task');
                archiveSecondPageJob q = new archiveSecondPageJob(scrollId,this.pageNumber);
                                         System.enqueueJob(q);
                                         return;
                                     }
                                     //Get the next page using the scrollId     
                                     Long startTime = DateTime.now().getTime(); 
                                     SF_Archive.ArchiverAccessorResponse nextPage = SF_Archive.ArchiverAccessor.getNextPage(scrollId); 
                                     Long stopTime = DateTime.now().getTime();
                                     totalTime += stopTime - startTime;
                                     if(nextPage.getStatusCode() == 200){     
                                         this.pageNumber++;
                                         SF_Archive.ArchiverAccessorSearchResponse searchResponse2 =nextPage.getSearchResponseMap();      
                                         scrollId = searchResponse2.scrollId;
                                         system.debug('count: '+ searchResponse2.totalResultCount);    
                                         system.debug('scrollid: '+ searchResponse2.scrollId); 
                                         system.debug('list size: '+ searchResponse2.records.size());  
                                         system.debug('body: '+ searchResponse2.records);  
                                         system.debug('page: '+ pageNumber);  
                                         system.debug('time: '+ totalTime); 
                                     }       
                                     else{           
                                         system.debug('response is != 200: '+ nextPage.getStatusCode());           
                                         system.debug('body: '+ nextPage.getBody());
                                         return;
                                     }           
                                 }
                 }
          }
                      

          ArchiveSearch 類別會使用特定的篩選條件,在「個案」物件上執行搜尋,從中取回結果,並記錄如總計數和捲動識別碼等詳細資料。如果搜尋傳回有效的捲動識別碼,表示結果的頁數較多,則會將該 archiveSecondPageJob 以非同步方式處理下一頁。此類別基本上會起始搜尋,並將進一步處理延後至先前定義的 archiveSecondPageJob

          以下是初始搜尋通話的格式。

          public class ArchiveSearch {
                              
              public void doSearch(){
                  
                  string sObjectName = 'Case';
                  list<SF_Archive.SearchFilter> request = new list<SF_Archive.SearchFilter>();
              
                  SF_Archive.SearchFilter filter1 = new SF_Archive.SearchFilter('Priority', 'High');
                  request.add(filter1);
                  
             
                  list<string> fields = new list<string>{'CaseNumber', 'Id'};
                  
                  SF_Archive.ArchiverAccessorResponse res = SF_Archive.ArchiverAccessor.performArchiverGlobalSearch(sObjectName, request, fields);   
                  if(res.getStatusCode() == 200){
                     system.debug('code: ' + res.getStatuscode());
                     SF_Archive.ArchiverAccessorSearchResponse searchResponse = res.getSearchResponseMap();
                     system.debug('count: '+ searchResponse.totalResultCount);
                     system.debug('scrollid: '+ searchResponse.scrollId);
                     system.debug('list size: '+ searchResponse.records.size());
                     string scrollId = searchResponse.scrollId;
                     integer page = 1;   
                     if(scrollId != '-1'){
                         system.debug('calling next page');
                         integer pageNumber = 2;
                         archiveSecondPageJob q = new archiveSecondPageJob(scrollId, pageNumber);
                         System.enqueueJob(q);
             }}}}

          如需詳細資訊,請參閱 Salesforce Apex 開發人員指南

           
          正在載入
          Salesforce Help | Article