Læs om vores opdateringsplaner heri.
Systemer demonstrerer automatiseret adfærd ved at gøre det muligt for forretningen at opfylde nøglemål og målsætninger hurtigere og på en skala. Sund automatisering gør det muligt for brugere at fokusere på arbejde af høj værdi og reducerer tid, der bruges på gentagne manuelle opgaver eller kompleks dataindtastning.
Ofte betyder automatisering oversættelse af forretningsprocesser fra en form til en anden: fra papirbaseret formular til digital form, fra et gammelt system til et nyt. Med hver forretningsprocesoversættelse kommer der en mulighed for transformation.
Transformation handler ikke om at bruge nye teknologier til at introducere forstyrrende og forvirrende ændringer for brugere. Transformation handler om at oprette enklere måder, hvorpå arbejdet kan udføres, gøre det muligt for forretningen at vokse uden friktioner og give forretningsbrugere mulighed for at fokusere mere dybt på, hvad der virkelig betyder noget for deres interessenter. Fra et arkitektonisk synspunkt involverer dette identificering af opgaver, der kan elimineres fuldstændigt eller håndteres automatisk. Det kræver en tydelig forbindelse mellem, hvordan teknologi bruges, og dens målbare påvirkning af forretningen.
Noget vigtigt at bemærke om automatisering med Salesforce: Det kan gøres med en række værktøjer ved brug af programmeringsmæssige og deklarative færdighedssæt. Design af automatiseringer, der er godt udarbejdet, handler ikke om at vælge at bygge med blot et automatiseringsværktøj. Det handler om at bruge tilgange, der er ensartede og forudsigelige, og gøre det muligt for teams at udvikle, teste, implementere og vedligeholde de automatiseringer, du designer. Dine automatiseringer skal være så vedligeholdelige og læsbare som muligt.
Dette afsnit omhandler, hvordan du designer og omstrukturerer automatiseringer for at gøre det muligt for forretninger at opfylde nøglemålsætninger hurtigere og på en skala. Du kan forbedre arkitekturen af dine automatiseringer i Salesforce ved at fokusere på effektivitet og dataintegritet.
Oprettelse af effektivitet i dine automatiseringer handler ikke om at genoprette forretning som sædvanlig med Salesforce-teknologier. Det handler om dybtgående forståelse af de nøglemetrikker og forretningsresultater, som teams vil være ansvarlige for at mødes eller spore, og træde tilbage for at se funktionelle enheder i og på tværs af det arbejde, du automatiserer. Det handler om at identificere, hvordan du kan oprette mønstre med dine automatiseringer, der gør det muligt for forretningen at fungere mere effektivt og hurtigt på en skala.
Effektiv automatiseringslogik vil få dine systemer til at:
- Mere skalerbar og mere værdifuld for forretningen
- Mere nyttigt for brugere
- Mere tilpasningsdygtig og i stand til at opfylde udviklende forretningsbehov
Du kan forbedre effektiviteten i dine automatiseringer gennem procesdesign og driftslogik.
Procesdesign involverer definition af de måder, arbejde udføres på. Opbygning af virkelig effektive og effektive processer betyder, at dine design ikke kun replikerer de aktuelle måder at arbejde på. Det er vigtigt at identificere og fjerne ineffektive eller uklare trin. Optimerede processer skal skabe målbar forretningsværdi (se KPI'er) uden unødvendige trin. Uklare eller unødvendige trin vil sandsynligvis skabe teknisk gæld og resultere i ikke-vedligeholdelige automatiseringer.
Ofte vil ansvaret for at finde ud af og dokumentere forretningsprocesser falde under en forretningsanalytiker eller endda en systemadministrator. Architekter er ansvarlige for at samarbejde med disse medlemmer af dit team for at sikre, at dine procesdesign er teknisk sunde og velstrukturerede. Anvend din Knowledge af Salesforce Platform så tidligt som muligt vil hjælpe dit team med at identificere processer, der skal strømlines gennem automatisering, eller processer, der skal ændres for at undgå dyre tilpasninger.
Hvis du vil opbygge optimerede processer for Salesforce, skal du overveje:
-
Definer processer grundigt. Processer med uklare formål eller tvetydige definitioner bliver med større sandsynlighed forkert fortolket på designtidspunktet. Dette vil føre til fejlrettede designs, der er baseret på antagelser, hvilket vil resultere i ukorrekte eller ineffektive automatiseringer. Sørg for, at de forretningsprocesser, du vil automatisere, opfylder følgende standarder:
- Anvendes til en enkelt, specifik funktion (se funktionsenheder)
- Har tydeligt definerede, målbare output (se Forretningsværdi)
- Har tydeligt definerede input og output
-
Gør procestrinene tydelige.* Selvom det nogle gange kan være fristende at tilføje yderligere trin, der "kan være nyttige i fremtiden", er dette aldrig en god tilgang. Hvert trin i en automatisering skal være relevant for resultatet af den overordnede proces. Sørg for, at hvert procestrin har følgende egenskaber:
- Udfører en specifik, detaljeret opgave (Se komponerbare)
- Krævet for, at processen genererer dets definerede output (fjern alle ikke-væsentlige trin)
- Kan fuldføres ved brug af et minimalt antal ressourcer
- Gør brug af eksisterende systemdata i stedet for at bede om brugerinput, hvor det er muligt (Se engagement)
- Giver inputindstillinger, som brugerne kan forstå uden at skulle vide, hvordan de underliggende systemer fungerer (Se hjælp)
Listen over mønstre og anti-mønstre nedenfor viser, hvordan korrekt (og dårlig) optimering ser ud i en Salesforce-organisation. Du kan bruge disse til at validere dine automatiseringsdesign, før du opbygger, eller identificere automatiseringer, der skal optimeres yderligere.
Hvis du vil vide mere om procesautomatiseringsværktøjer, der er tilgængelige fra Salesforce, kan du se Værktøjer, der er relevante for automatiseret.
Driftsmæssig logik håndterer, hvor effektivt en proces oversættes fra dens design til en faktisk implementering. Automatiseringer med stærk driftslogik fortsætter med at yde godt, uanset spids i transaktionsvolumen eller antallet af samtidige forekomster, der kører. Logisk sunde automatiseringer hjælper forretninger med nemmere at skalere for at fungere ved højere niveauer af efterspørgsel. Opbygning af stærk driftslogik i dine automatiseringer er direkte relateret til systemets overordnede pålidelighed.
Automatiseringer, der ikke fungerer effektivt, giver dårlige bruger- og kundeoplevelser, hvilket fører til både potentielle omsætningstab og tab af kundetillid. De har også højere vedligeholdelsesomkostninger og kan blive flaskehalse, der forsinker relaterede processer, hvilket bidrager til generelle systemydeevneproblemer.
Hvis du vil oprette effektiv driftslogik i automatiseringer, skal du overveje:
- Sørg for, at alle, der skaber automatiseringer, kender den rigtige måde at gøre det på. Dårlige designvalg kan foretages med enhver slags automatiseringsværktøj. Kode er ikke mindre tilbøjelig til fejl eller dårlige implementeringsvalg end klikbaserede værktøjer. Brug af hardcodede reference-id'er er f.eks. et anti-mønster, der vises i både forløb og kode. Klikbaserede værktøjer bør ikke ses som en licens til at tillade alle at frigive en automatisering i produktion. Hvert teammedlem, der opretter en automatisering, skal vide, hvordan den opbygges korrekt. Se læselighed og designstandarder for at få mere at vide om, hvordan du definerer og anvender effektive standarder på tværs af dine systemer.
- Dokumenter tydeligt alle kørselsveje. Øget brug af automatiseringer øger ikke kun potentielle datamængder, det øger også uplanlagte kaldskontekster. Du skal forstå, hvordan forskellige automatiseringer kan kaldes, og sørge for, at der vises korrekte transaktionskontroller (se datahåndtering) i alle automatiseringer, der har flere indgangspunkter. Skærmforløb vil f.eks. ikke køre med massedataindlæsninger, men Apex og udløste (og automatisk startede) forløb vil sandsynligvis gøre det. Tydelig dokumentering af planlagte og potentielle kørselsstier for automatiseringer er et vigtigt aspekt ved at forstå, hvilke logiske betingelser du skal tage højde for under implementeringen.
- “Bulkify” alle datahandlinger (herunder SOQL). Hver datahandling (indsæt, opdater osv.) skal udføres mod samlinger. Altid. Uden undtagelser. Dette er det, der menes med "masseinddelingshandlinger". Selvom platformen kan understøtte singleton-datahandlinger, bør du aldrig tillade, at singleton-mønstre implementeres.
- Brug SOSL til søgningshandlinger. Der er en misforståelse om, at datahandlinger ikke kan udføres mod registreringer, der returneres via SOSL. Det er sandt, at DML ikke kan kaldes direkte mod SOSL-resultater, men kode kan parse SOSL-resultater og oprette en samling, der kan refereres til i DML- eller Database-klassemetoder. Nøgleforskellene mellem SOSL og SOQL er returneringstyperne for hver, og hvordan de svarer på generaliserede eller jokertegnssøgninger. SOSL kan fungere mod flere sObject-typer (hvorfor returneringstypen er forskellig), og det kan håndtere jokertegns- og generaliserede strengsøgninger med bedre ydeevne end SOQL.
- Behandl SOQL som en datahandling. Brug ikke SOQL til at finde registreringer – brug det til at justere dine datahandlinger. SOQL og datahandlinger kan have en meget lignende indvirkning på ydeevnen af den underliggende relationelle database. SOQL kan endda overføre en eksplicit DML-indikator, der låser databaserækker i forudsigelse af datahandlinger. Hvis du vil oprette skalerbare automatiseringer, skal du sørge for at behandle SOQL med samme due diligence: Brug den ikke uden meget specifikke, velformulerede udvælgelseskriterier, tillad ikke eksterne feltreferencer og kræve omhyggelig datatype matchning mellem felter og filterinput i
WHERE-erklæringslogik. Din kode skal også have korrekte kontroller for at sikre, at en forespørgsel aldrig køres i ikke-masseinddelte kontekster eller mod nul- eller tomme filterkriterier. - Hold synkrone operationer strengt fokuseret på arbejde, der hjælper en bruger i realtid. Under din procesoptimering skal du identificere logik, der er relevant for, hvad brugerne skal udføre i realtid eller næsten i realtid, og hvad der kan udsættes til en asynkron (asynkron) transaktion. Se datahåndtering for at få flere overvejelser om at designe synkronisering/asynkroniseringshandlinger.
Listen over mønstre og anti-mønstre nedenfor viser, hvordan korrekt (og dårlig) driftslogik ser ud i Salesforce-automatisering. Du kan bruge disse til at validere dine automatiseringsdesign, før du opbygger, eller identificere automatiseringer, der skal optimeres yderligere.
Hvis du vil vide mere om de værktøjer, der er tilgængelige fra Salesforce, der kan hjælpe dig med at planlægge for skalering, kan du se Værktøjer, der er relevante for automatiseret.
Automatiserings-KPI'er måler påvirkningen af en automatisering over tid. Uden dem har du ingen måde at finde ud af, om en automatisering virkelig tilføjer forretningsværdi eller skaber utilsigtet kompleksitet for dine brugere. Hver automatisering, du opbygger, skal være bundet til et tydeligt, målbart sæt af KPI'er.
Gode KPI'er defineres af en målbar værdi sammen med en tilknyttet tidsramme. Eksempler omfatter:
- [X-nummer] Arbejdstid gemt pr. måned
- Behandlingsfejl fra manuel dataindtastning reduceret med [Y %] pr. uge
Når du har tydelige, målbare KPI'er, skal du også forstå, om og hvordan en automatisering i Salesforce vil generere data, der er relevante for rapportering op mod disse KPI'er.
Listen over mønstre og anti-mønstre nedenfor viser, hvordan rigtige (og dårlige) KPI'er ser ud, når det kommer til Salesforce-automatiseringer. Du kan bruge disse til at validere dine eksisterende KPI'er eller identificere, hvor du har brug for bedre at identificere KPI'er, før du opbygger.
Hvis du vil vide mere om værktøjer, der er tilgængelige fra Salesforce for at få hjælp til KPI'er, kan du se Værktøjer, der er relevante for automatiseret.
Følgende tabel viser et udvalg af mønstre, der skal søges efter (eller opbygges) i din organisation, og anti-mønstre, der skal undgås eller målrettes for rettelse.
✨ Oplev flere mønstre for effektivitet i Pattern & Anti-Pattern Explorer.
| Mønstre | Anti-mønstre | |
|---|---|---|
| Procesdesign | I din organisation:
- Hvert forløb tjener et enkelt, specifikt formål - Hvert trin udfører en specifik, detaljeret opgave - Forløb er organiseret i en hierarkisk struktur, der består af et hovedforløb og underordnede underforløb - Alle brugerinput har et tydeligt formål i forløbet - Brugere bliver kun bedt om at angive data, når eksisterende systemdata ikke kan bruges |
I din organisation:
- Forløb tjener flere formål og kræver yderligere input for at angive kontekst - Forløb kræver input, hvis data ikke bruges - Grupper af relaterede trin indeholder funktionalitet, der overlapper grupper af trin i andre forløb - Forløb anmoder om brugerinput, når lagrede data i stedet kan bruges |
| I Apex:
- Hver klasse tjener et enkelt, specifikt formål - Hver metode udfører en specifik, detaljeret opgave - Alle inputvariabler har et tydeligt formål i klassen - Kørsel af kode kræver et minimalt antal ressourcer |
I Apex:
- Klasser tjener flere formål - Metoder udfører flere opgaver, eller metoder udfører opgaver, der ikke stemmer overens med det angivne formål for den klasse, de er del af - Inputvariabler bruges faktisk ikke i metoder - Metoder til unødigt at hente data fra databasen eller fra eksterne systemer |
|
| Operational Logic | I forløb:
- Ingen variabler refererer til hardcodede værdier (for registreringstyper, brugere osv.) - Alle automatisk startede forløb og processer bruger beslutnings- og/eller pauseelementer til at evaluere indtastningskriterier og forhindre uendelige løkker eller kørsler mod store datamængder - Forløb (herunder processer) overfører logik til Apex i store datamængdekontekster - Underforløb bruges til de afsnit af en proces, der skal genbruges på tværs af forretningen |
I forløb:
- Variabler har hardcodede værdier - Forløb (herunder processer) skal manuelt deaktiveres, før der masseindlæses data - Forløb (herunder processer) udløser "uhåndteret undtagelse"-adviseringer - Selv enkle forløb forårsager regelmæssigt fejl, der er relateret til styringsbegrænsninger - Dele af et forløb gentages på tværs af forløb i stedet for at bruge underforløb |
| I Apex:
- Ingen variabler refererer til hardcodede værdier (for registreringstyper, brugere osv.) - Alle jokertegnskriterier vises i SOSL - SOQL er pakket i prøve-fangst
- Der vises ingen SOQL i en løkke - SOQL-erklæringer er selektive, herunder: -- ingen brug af LIKE sammenligninger eller delvise tekst sammenligninger
-- sammenligningsoperatorer bruger positiv logik (dvs. inkluderer, IN) som primær eller eneste logik
-- brug af = NULL, != NULL er sjælden og/eller følger altid en positiv sammenligningsoperator
-- ingen LIMIT 1 erklæringer vises
-- ingen brug af søgeordet ALL ROWS
| I Apex:
- Variabler har hardcodede værdier - SOSL bruges sjældent eller ikke ensartet til jokertegnsvalgekriterier - SOQL er ikke indpakket i prøvefangst
- SOQL vises i løkker - SOQL-erklæringer er ikke-valgfri, herunder: -- LIKE- og jokertegnsfilterkriterier vises
-- sammenligninger ved brug af kriterierne Ikke, Ikke I anvendes som den primære eller eneste sammenligningsoperator
-- = NULL, != NULL kriterier bruges som den primære eller eneste sammenligningsoperator
-- LIMIT 1 erklæringer vises
-- ALL ROWS søgeord bruges
| |
| I dine designstandarder og dokumentation:
- Planlagte og potentielle kørselsstier for automatiseringer skitseres tydeligt - Anvendelsessituationer for synkrone og asynkrone handlinger i automatiseringer er tydeligt skitseret som en del af designstandarder |
I dine designstandarder og dokumentation:
- Automatiseringskald er ikke dokumenteret - Anvendelsessituationer for synkrone og asynkrone handlinger håndteres ikke |
|
| KPIs | I dokumentationen:
- Output for hver automatisering kan måles og er tidsbundet - Ansvarlige interessenter er angivet for hver KPI |
I dokumentationen:
- KPI'er findes ikke for automatiseringer eller har uklare tidsrammer for mål - KPI'er findes uden ansvarlige interessenter |
| Inden for rapporter og dashboards:
- Alle metrikker, der er relateret til KPI'er, er inkluderet i mindst en rapport eller et dashboard |
Inden for rapporter og dashboards:
- KPI-rapportering findes ikke, eller rapporter mangler metrikker, der er relateret til nogle KPI'er |
Dataintegritet handler om, hvor godt et system vedligeholder nøjagtige og komplette data. Salesforce Platform har en robust, indbygget behandlingslogik, der er designet til at beskytte integriteten af data, der er lagret i en individuel organisations relationelle database. Et af grundlaget for at opbygge sunde automatiseringer er at forstå den indbyggede dataintegritetsadfærd i Salesforce og sikre, at alle dine automatiseringsdesign justeres med (og anerkender) denne adfærd.
De største modmønstre i automatiseringsdesign stammer fra manglende anerkendelse af de effektive dataintegritetstjenester, der allerede leveres af Salesforce, og manglende brug af standardfunktioner, der udnytter disse tjenester. Hvis du vil designe automatiseringer, der beskytter og vedligeholder dataintegritet, skal du kende til grundlæggende handlingsrækkefølge i Salesforce.
Korrekt udvidelse af dataintegritet til dine tilpassede automatiseringer betyder, at dit system kan:
- operere mod massemængder og store datamængder uden manuel intervention,
- håndhæve brugersikkerhedspolitikker, når der er behov for det, og skifte til systemkontekst, når der er behov for det
- støde på fejl på kørselstidspunktet, og følg forudsigelige gendannelses- eller fejlstier.
Du kan opbygge bedre dataintegritet i dine Salesforce-automatiseringer gennem korrekt datahåndtering og fejlhåndtering.
Det første skridt i at designe korrekt datahåndtering i Salesforce er at forstå, hvordan multilejerplatformen håndterer transaktioner. Dette omfatter forståelse af den indbyggede kørselsrækkefølge, som Salesforce Platform bruger til at sikre dataintegritet under datahandlinger på registreringsniveau. Hvis du ønsker flere oplysninger om påvirkningen af denne adfærd, kan du se Databasehåndtering i Grundlæggende om Salesforce-arkitektur.
Dårlig datahåndtering i dine automatiseringer kan være nogle af de mest vanskelige modmønstre at identificere og fuldt ud afhjælpe. Den rekursive og overlappende karakter af platformens kørselsrækkefølge kan gøre det vanskeligt at se, hvor problemer stammer fra. Det specifikke afsnit af kode eller forløb, der medfører en alvorlig fejl eller overskrider styringsbegrænsninger, er muligvis ikke grundlæggende årsag til et underliggende datahåndteringsproblem.
Transaktionsbevidsthed er nøglen til at opbygge automatiseringer, der fungerer pålideligt og på skala med Salesforce. Det betyder at sikre, at hvert trin i en automatisering er designet med Knowledge om, hvor det er i forhold til den platformstyrede udførelsesrækkefølge, kan udføre sin funktion korrekt og overfører information til næste trin korrekt.
Uanset hvilket automatiseringsværktøj du bruger, følger korrekt transaktionsbevidsthed lignende mønstre og kræver almindelige overvejelser:
- Antag, at hver automatisering bliver bedt om at køre mod store datamængder uden varsel på et givet tidspunkt. Automatiseringer skal have stier, der tillader batch- eller massekørsel (se Skalerbarhed).
- Bland ikke system- og brugerkontekstdatahandlinger i den samme transaktion.
- Reserver synkroniseringsdatahandlinger til før kontekster, og brug asynkrone handlinger til alle handlinger efter kontekst.
- Brug meddelelser og adviseringer til at undgå at oprette oplevelser i appen, der kræver, at en bruger venter på data baseret på resultaterne af en asynkron handling.
Ud over transaktionsbevidsthed er der en anden dimension til datahåndtering: at vide, hvornår man skal udføre logik i forskellige udførelseskontakter. Almindelige årsager til at opdele automatiseringer i forskellige kørselskontekster omfatter:
- Stor mængde og/eller komplekse datahandlinger
- Bulkifiering garanterer ikke, at automatiseringen håndterer store datamængder korrekt. Hvis mængden af datahandlinger i en automatisering vil overstige grænserne pr. transaktion, skal du udføre datahandlinger ved hjælp af funktionalitet, der er specifik for store datamængder (f.eks. via batch Apex eller Bulk 2.0 API). Disse har særskilte transaktionsgrænser, der passer til store datamængder.
- Datahandlinger, der skal gennemgå komplekse relationshierarkier eller udføre komplekse genberegninger (ikke inklusive formelfelter) på tværs af registreringer, kan nemt overskride grænserne pr. transaktion, når de udføres i grupper. Overvej, hvor "støjfuld" en opdatering til en registrering er i forhold til de relaterede datahandlinger eller SOQL, der er nødvendige for at udføre efterfølgende handlinger i systemet.
- De typer sObjects, der er involveret i hele kæden af en automatisering, kan kræve, at du opdeler datahandlinger i separate transaktioner for at undgå "blandet DML"-fejl.
- Logik, der skal udføres i bruger- eller systemkontekst
- Salesforce Platform gennemtvinger deling og synlighed i brugerkontekst. Hvis du har brug for at udføre handlinger, der strækker sig ud over tilladelsesniveauerne for brugere af din automatisering, skal du sørge for, at disse handlinger udføres i systemkontekst.
- Forskellige værktøjer vil eller vil ikke køre i forskellige kontekster:
- Apex kører som standard i systemkontekst. Du kan kontrollere, om og hvordan Apex-adfærd håndhæver delingsregler på brugerniveau ved at bruge delingsnøgleord i en Apex-klassedefinition.
- Forløb har ingen enkelt standardadfærd. Et forløb køres i bruger- eller systemkontekst baseret på hvordan forløbet startes. Du har mulighed for at gennemtvinge deling i systemkontekst.
- Processer (dvs. automatiseringer, der er bygget med Proceskonstruktør) kører i systemkontekst uden delingsovervejelser. (Bemærk: Vi anbefaler opbygning af automatiseringer med lav kode med forløb.
- Logik, der skal udføres asynkront
- Eksterne systemhandlinger – Synkrone udkald eller handlinger, der får adgang til eksterne data, er ikke inkluderet i nogen platformsudrulningsadfærd. Hvis du vil drage fordel af denne adfærd, skal du placere handlinger, der involverer eksterne systemer, i separate transaktioner (ved brug af asynkrone Apex metoder, asynkrone stier eller handlinger, der kan kaldes).
- Begivenheder og meddelelser – Hvis du vil styre forløbet af begivenheder eller meddelelser, der er relateret til datahandlinger (og drage fordel af platformens tilbagerulningsadfærd), skal du placere alle handlinger relateret til meddelelser eller begivenheder i efter kontekster ved brug af asynkrone Apex-metoder.
Listen over mønstre og anti-mønstre nedenfor viser, hvordan korrekt (og dårlig) datahåndtering ser ud i Salesforce-automatiseringer. Du kan bruge disse til at validere dine automatiseringsdesign, før du opbygger, eller identificere automatiseringer, der skal omstruktureres for at forbedre datahåndtering.
Hvis du vil vide mere om de værktøjer, der er tilgængelige fra Salesforce til datahåndtering i automatisering, kan du se Værktøjer, der er relevante for automatiseret.
Fejlhåndtering er vigtig for dataintegritet. Stærk fejlhåndtering hjælper også dit system med at skalere og ældes med større resiliens.
Forkert fejlhåndtering i automatiseringer kan føre til:
- Registreringsuoverensstemmelser og andre dataintegritetsproblemer
- Afsendelse af unøjagtige adviseringer til brugere og andre systemer
- Spild af tid og ressourcer på manuel eller gentaget behandling
- Samlet manglende Trust i et system
Fejlhåndtering i automatiseringer kræver, at du giver enhver kørende proces mulighed for at parse en fejl for oplysninger, få adgang til logik om, hvad de næste trin skal baseres på fejloplysninger og derefter følge den korrekte sti. Disse funktioner behøver ikke genopbygges i hver automatisering (det er et optimerings-anti-mønster). I stedet skal enhver automatisering i systemet kunne tilsluttes de relevante fejlhåndtering komponenter.
Hvis du vil opbygge korrekte fejlhåndteringskontroller i dine automatiseringer, skal du stille disse spørgsmål:
- Hvad er en "fatal" fejl?
- Hvad er en "genoprettelig" fejl?
- For automatiseringer, der udløses af brugerhandlinger, hvordan kan automatiseringen fange og advisere brugeren om fejl, før den forsøger at bekræfte ændringer?
Når du har besluttet, hvordan du skal håndtere disse fejl, kan du begynde at opbygge effektiv fejlhåndtering i dine automatiseringer. Listen over mønstre og anti-mønstre nedenfor viser, hvordan korrekt (og dårlig) fejlhåndtering ser ud i en Salesforce-automatisering. Du kan bruge disse til at validere dine automatiseringsdesign, før du opbygger, eller identificere automatiseringer, der skal omstruktureres for at forbedre fejlhåndtering.
Hvis du vil vide mere om de værktøjer, der er tilgængelige fra Salesforce til fejlhåndtering, kan du se Værktøjer, der er relevante for automatiseret.
Følgende tabel viser et udvalg af mønstre, der skal søges efter (eller opbygges) i din organisation, og anti-mønstre, der skal undgås eller målrettes for rettelse.
✨ Opdag flere mønstre for dataintegritet i Pattern & Anti-Pattern Explorer.
| Mønstre | Anti-mønstre | |
|---|---|---|
| Håndtering af data | I din dataordbog:
- Der findes data på feltniveau og prioriteringslogik for alle datakilder og data lake-objekter - Felttilknytning fra data lake-objekt til datamodelobjekt findes |
I din dataordbog:
- Data på feltniveau og prioriteringslogik for datakilder og data lake-objekter er ikke inkluderet - Felttilknytning fra data lake-objekter til datamodelobjekter er ikke inkluderet |
| I din Apex:
- Alle synkrone DML-erklæringer eller Database-klassemetoder udføres i før udløserkørselskontekster - Async Apex bruger køer til at "kæde" kompleks DML på tværs af transaktioner - Batch Apex bruges udelukkende til store datamængder - @future Apex bruges ikke eller bruges sparsomt til udkald eller systemobjekt-DML |
I din Apex:
- DML-erklæringer vises regelmæssigt i kode, der vil blive kaldt i efter udløserkontekster - Async Apex bruges sjældent - Asynkrone Apex bruges vilkårligt, herunder: -- Fremtidige metoder og Apex, der kan sættes i kø, bruges inkonsekvent eller udskifteligt -- Databasehandlinger har ikke en tydelig, ensartet logik til at overføre kørsel til batch Apex, når det er nødvendigt |
|
| I forløb:
- Alle forløb, der startes i brugerkontekst, abstraherer alle systemkontekstransaktioner til underforløb, der placeres ensartet efter et pauseelement, for at oprette en ny transaktion - Komplekse sekvenser af relaterede datahandlinger oprettes med Orkestrator (i stedet for at kalde flere underforløb i et monolitisk forløb) - Alle registreringsudløste forløb har udløserrækkefølgeværdier udfyldt - Forløb, der involverer eksterne systemudkald eller længe kørende processer, bruger asynkrone stier |
I forløb:
- Store, monolitiske forløb forsøger at koordinere komplekse sekvenser af relaterede datahandlinger (med eller uden underforløb) - Registreringsudløste forløb bruger slet ikke udløserrækkefølgeattributter eller bruger ikke udløserrækkefølgeværdier ensartet - Asynkrone stier bruges ikke ensartet eller slet ikke |
|
| I din organisation:
- Afstemningsregler for Id-løsning følger prioriteringslogikken i din ordbog |
I din organisation:
- Afstemningsregler for Id-løsning følger ikke prioriteringslogik i dataordbogen |
|
| Fejlhåndtering | I Apex:
- Kode omslutter alle DML, SOQL, udkald og andre vigtige procestrin i prøve-fange blokke
- Tilpassede undtagelser bruges til at oprette avancerede fejlmeddelelser og logik - I asynkrone og massekontekster anvendes database-klassemetoder i stedet for DML - Database-klassemetoder kan bruges udelukkende til alle datahandlinger (i stedet for DML) |
I Apex:
- DML, SOQL, udkald eller andre vigtige procestrin er ikke konsekvent indpakket i prøve-fangst blokke
- System.debug erklæringer vises i produktionskode (og er ikke kommenteret ud)
- Der bruges ingen databaseklassemetoder - Datahandlinger udføres udelukkende med DML |
| I Lightning Web-komponenter (LWC):
- JavaScript omslutter alle datahandlinger og vigtige procestrin i hvis ()/andre hvis () blokerer
- Alle @wire funktioner bruger data og fejleegenskaber, der leveres af API
- Alle hvis (fejl) / andre hvis (fejl) erklæringer indeholder logik til at behandle fejl og give informative beskeder |
In LWC:
- JavaScript bruges ikke konsekvent, hvis ()/andre hvis () blokerer med datahandlinger eller kritiske procestrin
- Funktionerne @wire bruger ikke data og fejleegenskaber, der leveres af API (eller bruger dem ikke ensartet)
- Hvis det bruges overhovedet, hvis (fejl) / andre hvis (fejl) erklæringer faktisk ikke indeholder logik til at behandle fejl og give nyttige fejlmeddelelser |
|
| I Aura:
- JavaScript omslutter alle datahandlinger og vigtige procestrin i prøve-fange blokke
- Inden for prøve-fangst blokke bruges indbygget JavaScript fejl i kasteerklæringer (ingen brug af $A.error())
- Alle gendannelige fejllogik vises i fangst erklæringer, og giver tydelige brugermeddelelser |
I Aura:
- JavaScript omslutter ikke konsekvent datahandlinger og vigtige procestrin i prøve-fang blokke
- Komponenter bruger $A.error()
- Genoprettelige fejllogik vises ikke konsekvent i fangst erklæringer, og fejlmeddelelser til brugere er ikke tydelige |
|
| I forløb:
- Skærmforløb bruger ensartede fejlforbindelser til at vise fejl for brugere - Tilpassede fejlmeddelelser konfigureres for fejl, der vises på skærmen - Forløb med datahandlinger, udkald og anden vigtig behandlingslogik har fejlstier for alle nøglehandlinger |
I forløb:
- Forløb bruger ikke fejlstier ensartet eller slet ikke - Tilpassede fejlmeddelelser bruges ikke, så brugerne ser standardmeddelelsen "Der er forekommet en ikke-håndteret fejl i dette forløb" |
Konceptet forretningsværdi i konteksten af automatisering handler om, hvor godt processer skaber målbar, positiv påvirkning for forretningsinteressenter. Ideelt gør procesautomatisering det muligt for brugere at bruge mindre tid på gentagne opgaver med lav værdi. Det hjælper også med at øge dataintegriteten ved at eliminere manuelle behandlingsaktiviteter, der kan introducere fejl. Ligesom procesdesign kræver det at identificere og levere automatiseringer, der skaber reel forretningsværdi, arbejde ud over grundlæggende opdagelse og forretningsanalyser.
Nogle gange kan det forekomme, at den bedste måde at levere værdi til forretningen er blot at automatisere hver proces, der anmodes om af en forretningsbruger, enten i den rækkefølge, de vises i din uafsluttede (eller billetkø) eller baseret på politiske faktorer i din organisation. Dette kan føre til to relaterede problemer: opbygning af automatiseringer i en suboptimeret rækkefølge og opbygning af de forkerte automatiseringer fuldstændigt. Det første problem, dårlig prioritering, forhindrer processer af høj værdi i at blive implementeret, når de skal, hvilket potentielt nedsætter væksten. Det andet problem, opbygning af de forkerte automatiseringer, forsinker ikke kun leveringen af automatiseringer af høj værdi, det fører også til forkert tid, unødvendige omkostninger og øget frustration blandt leveringsteams.
Du kan levere større forretningsværdi ved at fokusere på KPI'er og prioritering.
| Værktøj | Beskrivelse | Effektivitet | Dataintegritet | Business Value |
|---|---|---|---|---|
| Apex-batching | Batch registreringer sammen, og behandl dem som segmenter, der kan håndteres | X | X | |
| Apex Future Methods | Kør Apex asynkront i baggrunden | X | X | |
| Apex-kø | Føj Apex til en kø, og overvåg dem | X | X | |
| Apex Scheduler | Kør Apex asynkront på angivne tidspunkter | X | X | |
| Godkendelser | Angiv de krævede trin til at godkende registreringer | X | X | |
| Asynkron Apex | Kør Apex asynkront | X | X | |
| Automatiserede handlinger | Udføre feltopdateringer, mails og andre handlinger i baggrunden | X | X | |
| Einstein Next Best Action | Vis de rigtige anbefalinger til de rigtige personer på det rigtige tidspunkt | X | X | |
| Mailalarm | Opret og send automatiserede mails | X | X | |
| Eskaleringshandlinger | Angiv automatiserede handlinger, der skal udføres for sagseskaleringer | X | X | |
| Feltopdatering | Opdater feltværdier baseret på automatisering | X | X | |
| Flow Builder | Opbyg automatiseringer med en peg-og-klik-grænseflade | X | X | |
| Forløbsudvidelser | Få adgang til lagrede variabler som komponentinput i forløb | X | ||
| Forløbsskabelonbibliotek | Brug skabeloner til at designe branchespecifikke forløb | X | X | |
| Forløbsudløser | Automatiser komplekse forretningsprocesser | X | ||
| Handlinger, der kan påberåbes | Føj Apex til forløb | X | X | |
| Orkestrator | Opret og administrer automatiseringer med flere trin | X | X | |
| Udgående meddelelse | Send oplysninger fra en automatiseret proces med kvitteringer og forsøg | X | ||
| Udgiv platformsbegivenheder med forløb | Udgiv begivenheder via brugerinteraktioner og automatiseringer | X | ||
| Forespørgselsoptimering | Brug selektivitet og indekser til at forbedre ydeevnen for forespørgsel, rapport og listevisning | X | X | |
| Salesforce-forløb | Opret deklarative procesautomatiseringer med Flow Builder | X | X | |
| Send adviseringer med forløb | Send meddelelser over sms, WhatsApp eller Facebook Messenger | X | X | |
| Send adviseringer med processer | Send meddelelser over sms, WhatsApp eller Facebook Messenger | X | X | |
| SOQL til opdatering modifikator | Lås registreringer for at forhindre løbstilstande og sikkerhedsproblemer for tråd | X | ||
| Strategy Builder | Identificer anbefalinger, der skal vises på registreringssider | X | X | |
| Subflows | Reducer forløbskompleksitet gennem genbrug | X | ||
| Abonnere på platformsbegivenheder med forløb | Modtag meddelelser, der er udgivet gennem automatiseringer | X | ||
| Opgavehandlinger | Bestem tildelingsdetaljer, der gives til en bruger af en automatisering | X |
| Ressource | Beskrivelse | Effektivitet | Dataintegritet | Business Value |
|---|---|---|---|---|
| Apex Execution Governors & Limits | Find ud af, hvordan Apex håndhæver grænser | X | X | |
| Batchstyringsressourcer | Opret, administrer, planlæg og overvåg batchjob | X | X | |
| Bedste fremgangsmåder for SOQL og SOSL | Gør forespørgselsydeevnen bedre for applikationer med store datamængder | X | ||
| Designstandardskabelon | Opret designstandarder for din organisation | X | X | X |
| Forløbsmassebehandling i transaktioner | Design forløb til at fungere op mod samlinger | X | X | |
| Forløbsdataovervejelser | Få mere at vide om planlægningsudløste forløb for batchdata | X | X | |
| Forløbsfejlretning | Test og fejlfind forløb | X | ||
| Hvordan anmodninger behandles | Find ud af, hvordan Salesforce behandler job hurtigt og minimerer fejl | X | X | |
| KPI-regnearksskabelon | Bestem forretningsværdien af en bestemt metrik | X | X | |
| Udkald til eksterne systemer fra handlinger, der kan kaldes | Kald eksterne systemer fra et forløb ved brug af Apex | X | ||
| Miksede DML-handlinger | Vid, hvilke sObjects der kan bruges sammen for DML i den samme transaktion | X | X | |
| Udførelsesbestemmelse | Forstå rækkefølgen af begivenheder for indsættelser, opdateringer og upserts | X | X | |
| Forespørgselsplan – ofte stillede spørgsmål | Optimer forespørgsler, der involverer store datamængder | X | X | |
| Planlægningsudløste forløbsovervejelser | Forstå den specielle adfærd i planlægningsudløste forløb | X | ||
| Transaktionskontrol | Generer et lagringspunkt, der angiver den aktuelle databasetilstand | X | X | |
| Hvad sker der, når et forløb mislykkes? | Forstå fejlhåndtering i forløb | X | X | |
| Bedste fremgangsmåder for arbejdsflowautomatisering | Kom i gang med Salesforce-automatisering | X | X | X |
| Arbejde med meget store SOQL-forespørgsler | Skriv mere effektive SOQL-forespørgsler | X |
Hjælp os med at holde Salesforce Well-Architected relevant for dig. Tag vores undersøgelse for at give feedback om dette indhold og fortæl os, hvad du gerne vil se som det næste.