Du är här:
Arkivera Apex datafrågor
Arkivera Apex datafrågor aktiverar programmatisk åtkomst till arkiverade data i appen Arkivera. Dessa datafrågor automatiserar verksamhetsprocesser, har stöd för systemintegreringar från tredje part, skapar egna vyer och rapporter och korsreferenserar arkiverade data med aktiva poster.
Komponenten Arkivera och Arkivera sökning har alternativ för manuell datahämtning. Apex erbjuder avancerade funktioner, som sökfrågeparametrar, filter och paginering, för direkt åtkomst till data via kod.
Apex datafrågefunktioner inkluderar:
- Sök i arkiverade poster genom att använda specificerade kriterier.
- Använd delvis matchning med en asterisk (*).
- Returnera stora datauppsättningar i satser med upp till 1 000 poster per sida.
- Tillämpa upp till sex filter för att förfina dina resultat.
Dessa systemrelaterade Salesforce-objekt filtreras bort och är inte sökbara via Apex.
FeedHistoryRelationShare
För att upprätthålla optimal prestanda och säkerställa att endast relevanta arkiverade data returneras utesluter Arkivera dessa objekt från sökningar.
För att komma åt arkiverade filer, använd komponenten Arkiv eller Arkivsökning.
Arkivera Apex datafrågemetoder
För att definiera hur du frågar arkiverade data, ange metoden som tillhandahålls av Arkivera Apex.
- Åtkomst till arkivdata—Metoderna i
ArchiverAccessorär utformade för att interagera med arkiverade poster. Sedan kan du bygga sökfrågor och hämta data som lagras i produkten Arkiv. - Definiera sökfrågeoperationer—Dessa signaturer berättar vilka typer av sökfrågor du kan utföra med Apex, till exempel globala sökningar och filtrerade sökfrågor.
- Guidad användning—Genom att undersöka metodsignaturer kan utvecklare förstå de indata och utdata som behövs för deras implementeringar.
performArchiverGlobalSearch
Denna metod indikerar funktionaliteten för att utföra en global sökning på arkiverade data.
Query Parametrar
Apex datafrågor använder flera parametrar för att precisera din sökning. Vissa parametrar krävs, medan andra är valfria. Att förstå hur du konfigurerar varje parameter hjälper dig att få de mest korrekta och relevanta resultaten.
- Objektnamn—Specificerar typen av Salesforce-objekt att fråga.
Anta till exempel att
string sObjectName = 'Account'specificerar att sökfrågan är inriktad på kontoposter.Denna parameter är obligatorisk.
Anteckning Varje sökfråga är inriktad på ett enskilt objekt. Använd separata sökfrågor för att hämta data från flera objekt. - Sökfilter—Filter som begränsar sökresultat baserat på fältvillkor.
- Fältnamn—Det fält du vill filtrera efter, till exempel
NameellerCreatedDate - Värde eller Lista över värden—Det eller de specifika värden som du vill matcha
Exempel: Filter för enskilt värde
SF_Archive.SearchFilter filter = new SF_Archive.SearchFilter('Name', 'test');Denna sökfråga returnerar poster där fältet Namn matchar strängen "test".
Exempel: Filter med flera värdenSF_Archive.SearchFilter filter = new SF_Archive.SearchFilter('Status', new List<String>{'Open', 'Closed'});Denna sökfråga returnerar poster där fältet Status matchar strängarna "Öppna" eller "Stängda".
Hantera tomma eller nullvärden—För att söka efter poster där ett fält är tomt eller null kan du lägga till en tom sträng ("") i listan över värden.Exempel:
Denna sökfråga returnerar kundcaseposter där fältet Ämne är tomt eller null.List<SearchFilter> filters = new List<SearchFilter>(); filters.add(new SearchFilter('Subject', ''));Gränser för sökfilter:
- Sökfrågor måste ha minst 1 filter per sökfråga.
- Sökfrågor kan ha upp till 6 filter, kombinerat med
AND, per sökfråga. - Filter kombineras med
ANDsom standard.ORstöds för närvarande inte. - Ett filters värdelista kan inte överstiga 1 000 objekt.
Denna parameter är obligatorisk.
- Fältnamn—Det fält du vill filtrera efter, till exempel
- Datumfilter—Om du vill söka baserat på datum, använd parametern
DateRangeoch de obligatoriska filtren.DateRangefiltrerar poster efter fält somArchiveDate,CreatedDateellerModifiedDate.Exempel: Datumfilter för specifik datumfråga
Date todayDate = Date.today(); Date jan1st2024 = Date.newInstance(2024, 1, 1); DateRange dateRange = new DateRange('archive_date', jan1st2024, todayDate);Denna sökfråga returnerar poster som arkiverats mellan 1 januari 2024 och idag.
Exempel: Datumfilter för flera datumintervall
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);Denna sökfråga returnerar poster arkiverade mellan 12 december 2023 och 11 januari 2024.
Datumfilterrekommendationer:
- För att söka baserat på arkivdatum, lägg till fältet
archive_date. - Använd Apex datumformat: MM/DD/ÅÅÅÅ.
Denna parameter är valfri.
- För att söka baserat på arkivdatum, lägg till fältet
- Returnerade fält—Specificera fält att inkludera i resultaten. Om det inte specificeras returneras alla fält.
Exempel: Returnera specifika fält
List<string> fields = new List<string>{'Name', 'CreatedDate'};Denna sökfråga returnerar endast fälten
NameochCreatedDateför varje post.Denna parameter är valfri.
- Sidstorlek—Anger antalet poster per sökfråga. Standardantalet poster per sökfråga är 25 och maxantalet är 1 000.
Exempel: Egen sidstorlek
SF_Archive.ArchiverAccessorResponse res = SF_Archive.ArchiverAccessor.performArchiverGlobalSearch('Account', filters, 100, fields);Denna sökfråga returnerar 100 poster per sida.
Denna parameter är valfri.Anteckning Att överskrida 1 000 poster i din sökfråga utlöser ett körningsfel. - Sorteringsriktning—Sorterar resultat efter ett fält, till exempel
CreatedDate.- Stigande (
asc): Äldsta till nyaste. - Fallande (
desc): Nyast till äldst.Exempel: Sorteringsfråga
SortingDirection sortingDirection = new SortingDirection('desc');Denna sökfråga returnerar poster sorterade i fallande ordning baserat på deras
CreatedDate.Denna parameter är valfri.
- Stigande (
getNextPage
Om resultaten inte passar på samma sida anropar denna metod nästa sida.
ScrollId Parameter
Använd paginering för att returnera stora datauppsättningar genom att hämta resultat på sidor med upp till 1 000 poster.
För att konfigurera pagineringsflödet, utför den inledande sökfrågan, använd scrollId från svaret för att hämta efterföljande sidor och fortsätt tills scrollId = '-1'..
Exempel: Hämta resultat med sidnumrering
// 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);
}Komma åt metoderna
För att hitta metodsignaturerna, gå till Apex Klasser under Inställningar. Öppna ArchiverAccessor. Hitta alla metoder som listas under namnutrymmet performArchiverGlobalSearch.
Exempel på datafråga
Detta exempel hämtar Account genom att använda dessa villkor.
- Fält:
Name,CreatedDate - Gräns: 100 poster per sida
- Namn: Innehåller strängen "test"
- Sortering: Fallande efter
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);
Felsök vanliga fel
| Felkod | Beskrivning | Upplösning |
|---|---|---|
INTERNAL_ERROR |
Ett oväntat fel inträffade. | Kontakta support med feldetaljer. |
RESOURCE_LIMIT_ERROR |
Överskridit gränser för paginering eller sökfrågestorlek. | Minska sidstorleken eller förfina sökfilter. |
VALIDATION_ERROR |
Sökkriterier som saknas eller är ogiltiga. | Se till att alla fält och filter är giltiga. |
Ytterligare rekommendationer
- Övervaka din API-användning för att undvika att överskrida gränser.
- För att casta svaret till ett objekt, serialisera det till JSON och sedan deserialisera det tillbaka till ett objekt.
- Kontrollera att fält är aktiverade och tillgängliga.
- Dubbelkolla alla sökfrågeparametrar.
- För olösta problem, kontakta Salesforces support med detaljerade loggar.
Stegvisa testförfaranden finns i Arkiv Apex Testing.
- Arkivera Apex datafrågor—Kodexempel
I detta kodexempel valideras ett filter, ett datumintervall och en begäran om arkivsökning genom statuskoden i appen Arkiv. - Arkivera Apex datafrågor—Exempel på användningsfall 1
Detta exempel på användning visar hur du bygger och anpassar en komponent som visar Konton med hög prioritet i appen Arkiv. - Arkivera Apex datafrågor—Exempel på användningsfall 2
Detta exempel på användning visar hur Arkiv Apex hanterar uppgifter utan att överskrida styrande gränser, som CPU-gränser eller Timeout-anrop, i appen Arkiv.
Arkivera Apex datafrågor—Kodexempel
I detta kodexempel valideras ett filter, ett datumintervall och en begäran om arkivsökning genom statuskoden i appen Arkiv.
Ett getNextPage efter (scrollId != -1) inkluderas eftersom resultatens storlek är begränsad i 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());
}Arkivera Apex datafrågor—Exempel på användningsfall 1
Detta exempel på användning visar hur du bygger och anpassar en komponent som visar Konton med hög prioritet i appen Arkiv.
Användningsfall
Din verksamhet kräver att supportteamet på nivå 3 har åtkomst att se arkiverade kundcase med hög prioritet.
Detta exempel visar hur du:
- Skapa en anpassad Lightning (LWC).
- Hämta arkiverade data genom att använda Apex datafrågor.
- Tillämpa filtret (Hög prioritet). Anteckning Andra filter kan anpassas genom att hänvisa till koden i Arkivera Apex datafrågor — Kodexempel.
Detta exempel är begränsat till 25 poster. Apex låter dig ställa in resultaten till 1 000 per sida. Standard är 25, med alternativet att paginera genom resultaten.
Komponent som visar kundcase med hög prioritet
Exempel på SdkUseCaseWidget.js
I detta kodexempel är parametern 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;
}}
} Exempel på SdkUseCaseWidget.html
Den Apex kontroll som LWC använder anropar Apex Datafrågor.
SF_Archive.ArchiverAccessor.performArchiverGlobalSearch(sObjectName, request, fields, range);Detta är anropet till Archive Apex. Den innehåller dessa parametrar.
- sObjectName—Avbildar sökningen
- Filter—Används för att hämta data
- Fält—De beräknade fält som ska returneras från data.
- Intervall—Datumintervallet som används för att fråga data.
<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 .
Detta kodblock är Apex kontroller.
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 .
Hjälpklass för att formulera klass från Apex till 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;
}}Ovanstående kod beskriver ett exempelscenario där du kan lägga till LWC som en komponent på Lightning.
För att se den faktiska Lightning-datatabellen, lägg till denna kod i sampleSdkUseCaseWidget.js-meta.xml. Lägg sedan till komponenten Arkiv på 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>Arkivera Apex datafrågor—Exempel på användningsfall 2
Detta exempel på användning visar hur Arkiv Apex hanterar uppgifter utan att överskrida styrande gränser, som CPU-gränser eller Timeout-anrop, i appen Arkiv.
Mer information finns i Apex styrande gränser.
Användningsfall
Din verksamhet kräver att supportteamet på nivå 3 har åtkomst att se arkiverade kundcase med hög prioritet.
Detta exempel visar hur man kringgår ett fel när antalet arkiverade poster som hämtas via Apex är för stort. Felet lyder: SF_Archive.ArchiverAccessor.ArchiverAccessorException: Exceeded time
allotted for callout, please contact support.
Kod från dessa Apex klasser skapar detta användningsfall.
Klassen ArchiveSecondPageJob bearbetar paginerade data från Arkiv genom att använda ett rullnings-ID och göra anrop efter behov. Den körs asynkront via gränssnittet Köbar och följer den totala körtiden för att undvika att överskrida gränser och ställer sig i kö för fortsatt bearbetning om det behövs. Klassen hanterar svar, uppdaterar bläddrings-ID och loggar detaljer om varje hämtad datasida.
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;
}
}
}
}
Klassen ArchiveSearch utför en sökning på objektet Kundcase med hjälp av specifika filter, hämtar resultaten och loggar detaljer som totalt antal och rullnings-ID. Om sökningen returnerar ett giltigt rullnings-ID som indikerar fler resultatsidor placeras det i kö för archiveSecondPageJob att bearbeta nästa sida asynkront. Denna klass inleder i huvudsak sökningen och överför ytterligare bearbetning till det tidigare definierade archiveSecondPageJob.
Här är formatet för det inledande söksamtalet.
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);
}}}}Mer information finns i Salesforce Apex Developer Guide.

