U bent hier:
Apex gebruiken om records in batches te maken voor sites met groot volume
Gebruikers van Experience Cloud-sites kunnen meer cases, leads en aangepaste objecten per seconde maken wanneer deze worden verzameld in batches en asynchroon worden verwerkt, in plaats van stuk voor stuk. Met verwerking in batches verbetert u de prestaties en zorgt u dat uw site ook bij drukte goed blijft functioneren. U kunt records in batches maken met behulp van de speciaal voor dit doel toegevoegde Apex-methode.
Vereiste editions
| Beschikbaar in: Salesforce Classic en Lightning Experience |
| Beschikbaar in: Enterprise, Developer, Performance en Unlimited Edition |
| Benodigde gebruikersmachtigingen | |
|---|---|
| Als u het maken van records en cases in batches wilt configureren: | Microbatches gebruiken om records te maken |
| Als u het veld Gemaakt door van een gemaakte record wilt instellen op de oorspronkelijke gebruiker: | Controlevelden instellen bij maken van record |
| Als u een Experience Cloud-site wilt publiceren: |
|
| Apex-klassen bewerken: |
|
Het volgende is van toepassing op geauthenticeerde gebruikers die records in batches maken met behulp van microbatches:
- De profielmachtiging Microbatches gebruiken om records te maken is vereist.
- Ze zijn eigenaar van alle records die ze maken via microbatches.
- Beveiliging op veldniveau en toegang tot recordtypen worden omzeild bij het maken van de records. Ze worden toegepast nadat de record is gemaakt.
- Records die zijn gemaakt via microbatches, gebruiken het standaardrecordtype voor de organisatie wanneer ze worden gemaakt via microbatches.
- Bij het maken van een onderliggende record is alleen leestoegang voor de bovenliggende record vereist.
De methode Apex Network.createRecordAsync heeft drie parameters:
- De eerste parameter
processTypemoet worden ingesteld op 'GENERIC'. - De tweede parameter
sObjectmag niet leeg of null zijn. Deze moet een geldige waarde bevatten die een ondersteund object voorstelt. Validaties aan clientzijde worden uitgevoerd via de eindgebruikerservaring vóór de indiening van de record voor maken met behulp van microbatches. - De derde parameter is een array van bestandsbijlagekoppelingen. De bestandsbijlagen moeten vooraf zijn gemaakt. Deze parameter is optioneel en alleen beschikbaar voor geauthenticeerde gebruikers.
Salesforce gebruikt de gebruiker Geautomatiseerd proces om namens de oorspronkelijke gebruikers records in batches te maken. Sitebeheerders met de machtiging Controlevelden instellen bij maken van record kunnen het veld Gemaakt door van de gemaakte record instellen op de oorspronkelijke gebruiker. Anders wordt het veld Gemaakt door ingesteld op de gebruiker Geautomatiseerd proces.
Wanneer gastgebruikers records maken via microbatches, wordt het veld Gemaakt door ingesteld op Gastgebruiker. Gastgebruikers worden echter geen eigenaar van de gemaakte records.
- Geef vanuit Set-up Apex-klassen op in het vak Snel zoeken en selecteer vervolgens Apex-klassen.
-
Gebruik deze functie voor de Apex-controller die het in batches maken van records beheert van het object dat u wilt maken.
Als u cases in batches wilt maken:
Case mycase = new Case( Subject = 'sample case', Description = 'case description');
String uuid = Network.createRecordAsync('GENERIC', mycase, [enter ContentDocumentIDs separated by commas])
Om te controleren of microbatching werkt zoals verwacht via Apex, test u de methode createRecordAsync in de Apex-klasse door de definitie van de testklasse toe te voegen. Bijvoorbeeld:
Dit is de Apex-klasse
public class MicrobatchCreateRecord {
public string microbatchCreateCase(String subject) {
Case c = new Case();
c.subject = subject;
String uuid = Network.createRecordAsync('GENERIC', c);
return uuid;
}
}Dit is de Apex-testklasse:
@IsTest
public class MicrobatchCreateRecord_Test {
@IsTest
public static void testMicrobatchCreateCase() {
string newCaseSubject = 'ApexTestCase1';
MicrobatchCreateRecord controller = new MicrobatchCreateRecord();
Test.startTest();
string uuid = controller.microbatchCreateCase(newCaseSubject);
Assert.isNotNull(uuid);
Test.getEventBus().deliver();
Test.stopTest();
// Assert that the Case was created and has the expected subject
List<Case> testCases = [Select Id, Subject from Case];
Assert.areEqual(1, testCases.size());
Assert.areEqual(newCaseSubject, testCases[0].subject);
}
}