breadcrumbDescription
Eksempel på massebehandling af registreringer for at undgå CPU-begrænsninger
Lær, hvordan du omstrukturerer forløb for at bruge massebehandlingsmønstre, der forhindrer Apex_CPU_TIME_LIMIT_EXCEEDED-fejl. Dette eksempel viser forskellen mellem ineffektivt og optimeret forløbsdesign.
EditionsHeading
| Vis understøttede versioner. |
| Brugertilladelser påkrævet | |
|---|---|
| Hvis du vil åbne, redigere, oprette, aktivere eller deaktivere et forløb ved brug af alle forløbstyper, elementer og funktioner, der er tilgængelige i Flow Builder, herunder Einstein og Agentforce for Flow: | Administrer forløb |
Dette eksempel viser, hvordan du transformerer et forløb, der udfører DML (Data Manipulation Language) i en løkke, til et massebehandlet forløb, der behandler registreringer effektivt. Få vist en før-og-efter-sammenligning, og få kendskab til principperne for forløbsmassificering.
Scenarie
Opbyg et registreringsudløst forløb, der kører, når en salgsmulighed lukkes. For hver lukket-vundet salgsmulighed opretter forløbet en opfølgningsopgave for hvert medlem af salgsmulighedsteamet. Forløbet:
- Henter alle salgsmulighedsteammedlemmer.
- Opretter en opgave, der er tildelt til hvert teammedlem.
- Fungerer effektivt, selv når brugere opdaterer flere salgsmuligheder på en gang.
- Undgår Apex_CPU_TIME_LIMIT_EXCEEDED fejl under massehandlinger.
Salesforce håndhæver en enkelt CPU-tidsgrænse på 10.000 millisekunder (10 sekunder) pr. synkron transaktion. Hvert stykke automatisering i denne transaktion – Apex, forløb, arbejdsflowregler og processer – trækker fra det samme budget. Et ineffektivt forløbsdesign forværrer problemet. Andre automatiseringer i transaktionen trækker det delte budget ned først, og et ineffektivt forløb forbruger mere end nødvendigt af det, der er tilbage.
Den rækkefølge, som forløb køres i, afhænger af forløbstypen. Dette eksempel bruger et efter lagring registreringsudløst forløb, der kører senere i rækkefølgen end før lagring-forløb. Hvis du ønsker oplysninger om kørselsrækkefølgen, kan du se Udløsere og kørselsrækkefølge.
Ineffektiv tilgang: DML-handlinger i en løkke
Denne tilgang medfører CPU-begrænsningsfejl, når der behandles flere salgsmuligheder.
Forløbsstruktur: Forløbet starter med et registreringsudløst forløb på salgsmulighedsobjektet, der køres efter en registreringsopdatering, når Fase er lig med "Lukket Vundet". Forløbet bruger Hent registreringer til at hente Salgsmulighedsteammedlemmer for den udløsende registrering og kører derefter gennem samlingen. I løkken opretter et Opret registreringer-element en opgave for hvert teammedlem.
Hvorfor denne tilgang mislykkes:
- Hver løkkeiteration udfører en separat DML-handling.
- En salgsmulighed med 5 teammedlemmer resulterer i 5 DML-handlinger.
- Når brugere opdaterer 20 salgsmuligheder på en gang, behandler forløbet alle salgsmuligheder i en transaktion.
- 20 salgsmuligheder × 5 teammedlemmer hver = 100 DML-handlinger i en transaktion.
- Den akkumulerede CPU-tid fra 100 DML-handlinger overskrider styringsbegrænsningen.
- Resultat: APEX_CPU_TIME_LIMIT_EXCEEDED-fejl.
Effektiv tilgang: Samlingsbaseret massebehandling
Denne tilgang behandler registreringer effektivt, uanset mængden.
Forløbsstruktur: Forløbet starter med et registreringsudløst forløb på salgsmulighedsobjektet og bruger Hent registreringer til at hente salgsmulighedsteammedlemmer. Forløbet opretter en opgaveregistreringsvariabel og en opgaveregistreringssamlingsvariabel. Registreringsvariablen indeholder den aktuelle opgave, som forløbet arbejder på, og registreringssamlingen indeholder de opgaver, der skal oprettes. Forløbet kører gennem teammedlemmerne. I løkken opbygger et tildelingselement hver opgaveregistrering ved at angive værdier for registreringsvariablen Opgave og relaterer opgaven til det aktuelle teammedlem i løkken. Et andet tildelingselement føjer registreringsvariabelværdierne for opgaven til opgaveregistreringssamlingen. Når løkken er fuldført, opretter et enkelt Opret registreringer-element alle opgaver fra samlingen.
Hvorfor dette fungerer:
- Løkken opbygger en samling af opgaveregistreringer uden at udføre DML-handlinger.
- Der sker kun en DML-handling, når løkken er fuldført.
- En salgsmulighed med 5 teammedlemmer resulterer stadig i kun 1 DML-handling (oprettelse af 5 opgaver på en gang).
- Når brugere opdaterer 20 salgsmuligheder på en gang, udfører forløbet i alt 20 DML-handlinger (en pr. salgsmulighed).
- Betydelig reduktion i forbrug af CPU-tid.
- Resultat: Forløbet fuldføres korrekt uden at nå styringsbegrænsninger.
Sammenligning af ydeevne
| Scenarie | Ineffektiv (DML i løkke) | Effektiv (masseinddelt) |
|---|---|---|
| 1 salgsmulighed med 5 teammedlemmer | 5 DML-handlinger | 1 DML-handling |
| 20 salgsmuligheder (masseopdatering) med 5 teammedlemmer hver | 100 DML-handlinger (Sandsynligvis mislykkes med CPU-grænsefejl) |
20 DML-handlinger (Fuldfører korrekt) |
| 100 salgsmuligheder (dataindlæsning) med 3 teammedlemmer hver | 300 DML-handlinger (Selvfølgelig mislykkes) |
100 DML-handlinger (Fuldfører korrekt) |
Nøgleprincipper for massebehandling
- Udfør aldrig DML-handlinger i løkker. Indsaml altid registreringer i en samlingsvariabel under løkken, og udfør derefter DML, når løkken er fuldført.
- Design til masseoperationer fra starten. Antag, at registreringsudløste forløb behandler flere registreringer samtidigt.
- Brug registreringssamlingsvariabler. Samlingsbaserede DML-handlinger er dramatisk mere effektive end individuelle handlinger.
- Test med realistiske mængder. Fejlretningstilstand med en registrering afslører ikke problemer med massehandling. Test med guiden Dataimport, Data Loader eller masseopdateringer.
- Overvåg ydeevne. Gennemse fejlretningslogfiler for at identificere forløb, der nærmer sig styringsbegrænsninger, før de mislykkes i produktion.
Trin på højt niveau
Gennemse trinene i dette eksempel. Følg dem i rækkefølge, eller gå til et afsnit for at få flere specifikke instruktioner.
- Opret forløbet
Opsæt det registreringsudløste forløb til at køre, når salgsmuligheder lukkes. - Opret ressourcer
Opret de variabler, der er nødvendige for massebehandling. - Hent teammedlemmer
Hent registreringer for salgsmulighedsteammedlem til behandling ved brug af et Hent registreringer-element. - Tilføj en beslutning for at kontrollere for teammedlemmer
Tilføj et beslutningselement for at undgå behandling, når der ikke er nogen teammedlemmer. - Tilføj et løkkeelement
Tilføj et løkkeelement for at gentage gennem teammedlemmer. - Opbyg opgaveregistreringer i løkken
Udfyld feltværdier for TaskRecord-registreringsvariablen for hvert teammedlem i løkken. - Føj opgaver til samlingen
Føj hver opgaveregistrering til samlingsvariablen TasksToCreate til masseoprettelse. - Opret alle opgaver efter løkken
Brug et enkelt Opret registreringer-element til at oprette alle opgaver i en handling. - Tilføj fejlhåndtering
Konfigurer fejlstyring for at registrere og rapportere fejl. - Test med massedata
Test af massebehandlede forløb kræver simulering af massehandlinger. - Flere optimeringsteknikker
Optimer massebehandlede forløb yderligere med disse teknikker. - Konverter eksisterende forløb
Konverter forløb med DML-handlinger (Data Manipulation Language) i løkker til massebehandlede mønstre.
Opret forløbet
Opsæt det registreringsudløste forløb til at køre, når salgsmuligheder lukkes.
-
Åbn listevisningen Forløb.
- Skriv Forløb i feltet Find hurtigt i Opsætning, og vælg derefter Forløb.
- Fra appen Automatisering skal du vælge fanen Forløb.
- Fra fanen Forløb i enhver Lightning-app skal du klikke på handlingsmenuen og vælge Åbn forløb.
-
Opret et registreringsudløst forløb.
- Fra Lightning-appen Automatisering skal du klikke på Ny. Søg efter og vælg Registreringsudløst forløb.
- Klik på Nyt forløb i Opsætning, søg efter og vælg registreringsudløst forløb.
Panelet Konfigurer start åbnes. -
Konfigurer startelementet.
- For Objekt skal du vælge Salgsmulighed.
- For Udløser forløbet hvornår skal du vælge En registrering opdateres.
- I afsnittet Angiv indtastningsbetingelser for Betingelseskrav skal du vælge Alle betingelser er opfyldt (OG).
- For Felt skal du vælge Fase.
- Vælg Er lig med for Operator.
- For Værdi skal du vælge Lukket Vundet.
- For Optimer forløb skal du vælge Handlinger og relaterede registreringer.
Opret ressourcer
Opret de variabler, der er nødvendige for massebehandling.
-
Hvis du vil opbygge hver opgave, skal du oprette en registreringsvariabel til opbygning af opgaveregistreringer.
-
Klik på
for at åbne værktøjskassen.
- Klik på Ny ressource, og vælg derefter Variabel.
- For API-navn skal du angive TaskRecord.
- For Datatype skal du vælge Registrering.
- For Objekt skal du vælge Opgave.
- Klik på Udført.
-
Klik på
-
Hvis du vil lagre alle opgaver, skal du oprette en registreringssamlingsvariabel for alle opgaver.
- Klik på Ny ressource, og vælg derefter Variabel.
- For API-navn skal du angive TasksToCreate.
- For Datatype skal du vælge Registrering.
- For Objekt skal du vælge Opgave.
- Vælg dette for at Tillad flere værdier (samling).
- Klik på Udført.
Hent teammedlemmer
Hent registreringer for salgsmulighedsteammedlem til behandling ved brug af et Hent registreringer-element.
-
Klik på
, og søg efter og vælg derefter Hent registreringer.
-
Konfigurer elementet.
- For Betegnelse skal du skrive Hent salgsmulighedsteammedlemmer.
-
For Objekt skal du vælge Salgsmulighedskontaktrolle.
I dette eksempel lagrer forløbet teammedlemmer i objektet Salgsmulighedskontaktrolle. Et objekt, der linker salgsmuligheder til kontakter.
- Vælg Salgsmuligheds-id i afsnittet Filtrer salgsmulighedskontaktrolleregistreringer for Felt.
- Vælg Er lig med for Operator.
- For Værdi skal du vælge Udløser salgsmulighed og derefter Salgsmuligheds-id.
- For Hvor mange registreringer der skal gemmes skal du vælge Alle registreringer.
- For Sådan gemmes registreringsdata skal du vælge Gem automatisk alle felter.
Tilføj en beslutning for at kontrollere for teammedlemmer
Tilføj et beslutningselement for at undgå behandling, når der ikke er nogen teammedlemmer.
-
Klik på
, og søg efter og vælg derefter Beslutning.
-
Konfigurer beslutningen.
- For Betegnelse skal du angive Fandt teammedlemmer?.
- API-navnet udfyldes automatisk.
- For Resultatbetegnelse skal du skrive Ja.
- API-navnet udfyldes automatisk.
- For Ressource skal du vælge Salgsmulighedskontaktroller fra Hent salgsmulighedsteammedlemmer.
- For Operator skal du vælge Er nul.
- For Værdi skal du vælge Falsk.
- Klik på Standardresultat.
- For Betegnelse skal du angive Nej.
Tilføj et løkkeelement
Tilføj et løkkeelement for at gentage gennem teammedlemmer.
-
I stien Ja skal du klikke på
og derefter søge efter og vælge Løkke.
-
Konfigurer løkken.
- For Betegnelse skal du skrive Iterate Through Teammedlemmer.
- API-navnet udfyldes automatisk.
-
For Samlingsvariabel skal du vælge Salgsmulighedskontaktrolle fra Hent salgsmulighedsteammedlemmer.
Denne ressource vises som entals, selvom den indeholder flere registreringer.
- For Retning skal du vælge Første element til sidste element.
Opbyg opgaveregistreringer i løkken
Udfyld feltværdier for TaskRecord-registreringsvariablen for hvert teammedlem i løkken.
-
Efter For hver skal du klikke på
og derefter søge efter og vælge Tildeling.
-
Konfigurer tildelingen.
- For Betegnelse skal du angive Opbyg opgaveregistrering.
- API-navnet udfyldes automatisk.
- For Variabel skal du vælge TaskRecord og derefter vælge Emne.
- Vælg Er lig med for Operator.
- For værdi skal du skrive Følg op på lukket salgsmulighed.
- Klik på + Tilføj tildeling.
-
Fortsæt med at tilføje tildelinger og indstille værdier.
Ressource Operator Værdi TaskRecord>Status Er lig med Ikke startet TaskRecord>Prioritet Er lig med Høj TaskRecord>Tildelt til id Er lig med Aktuelt element fra løkke>Kontakt-id TaskRecord>Relateret til id Er lig med Udløsersalgsmulighed>Salgsmuligheds-id
Føj opgaver til samlingen
Føj hver opgaveregistrering til samlingsvariablen TasksToCreate til masseoprettelse.
-
Klik på
efter elementet Tildeling, og vælg derefter Tildeling.
-
Konfigurer tildelingen.
- For Betegnelse skal du skrive Føj opgave til samling.
- For Variabel skal du vælge TasksToCreate.
- For Operator skal du vælge Tilføj.
- For Værdi skal du vælge TaskRecord og derefter Hele ressourcen.
Opret alle opgaver efter løkken
Brug et enkelt Opret registreringer-element til at oprette alle opgaver i en handling.
-
Når løkken er slut, skal du klikke på
og derefter søge efter og vælge Opret registreringer.
-
Konfigurer elementet.
- For Betegnelse skal du skrive Opret alle opgaver.
- For Sådan angives registreringsfeltværdier skal du vælge Fra en registreringsvariabel.
- For Hvor mange registreringer der skal oprettes skal du vælge flere.
- For Registreringssamling skal du vælge TasksToCreate.
- Gem forløbet.
- For Betegnelse skal du skrive Opret opgaver for salgsmulighedsteammedlemmer.
- API-navnet udfyldes automatisk.
Tilføj fejlhåndtering
Konfigurer fejlstyring for at registrere og rapportere fejl.
-
Hvis du vil administrere fejl, skal du føje en fejlsti til Opret registreringer-elementet.
- Klik på de tre prikker på Opret alle opgaver-elementet, og vælg Tilføj fejlsti.
-
Hvis du vil advisere Salesforce-administratorer om fejl i fejlstien, skal du tilføje en Send mail-handling.
-
På fejlstien skal du klikke på
og derefter søge efter og vælge Send mail.
- For Betegnelse skal du skrive Adviser administrator om fejl.
- API-navnet udfyldes automatisk.
- For Modtageradresser skal du angive mailadressen på den person, du ønsker at modtage adviseringen.
- For Emne skal du angive Et forløb kræver din opmærksomhed
- For Brødtekst skal du angive Forløbet Opret opgaver for salgsmulighedsteammedlemmer havde en fejl. Her er fejlen: .
- Klik på Indsæt en ressource.
- Vælg Kør forløb, og vælg derefter Fejlmeddelelse.
-
På fejlstien skal du klikke på
- Gem dit arbejde.
Test med massedata
Test af massebehandlede forløb kræver simulering af massehandlinger.
- Hvis du vil teste en individuel registrering, skal du bruge fejlretningstilstand til at opdatere en salgsmulighed og bekræfte, at forløbet opretter opgaver korrekt.
- Aktiver forløbet.
-
Hvis du vil teste massehandlinger i en sandbox, skal du bruge guiden Dataimport, Data Loader eller en listevisning til at opdatere flere salgsmuligheder på en gang.
- Opret mellem 10 og 20 testmuligheder.
- Føj teammedlemmer til hver salgsmulighed.
- Brug Data Loader eller masseopdateringen til at ændre fasen til "Lukket Vundet" på alle salgsmuligheder samtidigt.
- Bekræft, at forløbet opretter alle opgaver uden fejl.
- Hvis du vil bekræfte ydeevnen, skal du gennemse Apex for at bekræfte, at CPU-tidsforbrug er inden for acceptable grænser.
Flere optimeringsteknikker
Optimer massebehandlede forløb yderligere med disse teknikker.
Brug indtastningsbetingelser til at begrænse kørsel
Føj betingelser til forløbsstartelementet for at sikre, at det kun kører, når det er nødvendigt. Behandl f.eks. kun salgsmuligheder over et bestemt beløb eller fra specifikke registreringstyper.
Overvej efter lagring for ikke-kritiske handlinger
Efter lagring kan registreringsudløste forløb oprette opfølgningsopgaver, når du har gemt salgsmuligheden. De kører asynkront og har højere styringsbegrænsninger.
Batchproces for meget store mængder
Hvis salgsmuligheder regelmæssigt har dusinvis af teammedlemmer, skal du bruge et planlagt forløb, der behandler lukkede salgsmuligheder i batches snarere end i realtid.
Konverter eksisterende forløb
Konverter forløb med DML-handlinger (Data Manipulation Language) i løkker til massebehandlede mønstre.
Hvis du har eksisterende forløb med DML-handlinger i løkker, skal du følge disse trin for at konvertere dem.
- Hvis du vil finde DML-handlinger i løkker, skal du identificere alle Opret registreringer-, Opdater registreringer- og Slet registreringer-elementer i løkker.
-
For hvert DML-element skal du udføre konverteringen.
- Hvis du vil opbygge registreringer, skal du oprette en registreringsvariabel for den pågældende objekttype.
- Hvis du vil lagre de registreringer, du vil behandle, skal du oprette en registreringssamlingsvariabel for den pågældende objekttype.
- Hvis du vil gemme feltværdier for registreringerne, skal du bruge et tildelingselement til at tildele værdier til registreringsvariablen.
- Hvis du vil indsamle de registreringer, der skal behandles, skal du bruge en tildeling til at føje registreringsvariablen til registreringssamlingen.
- Hvis du vil oprette registreringer effektivt, skal du efter løkken tilføje et DML-element, der behandler hele registreringssamlingen.
- Hvis du vil bekræfte konverteringen, skal du teste grundigt med massedata for at bekræfte, at omstruktureringen fungerede korrekt.

