Les om våre oppdateringsplaner heri.

Systemer demonstrerer automatisk virkemåte ved å gi virksomheten mulighet til å oppnå viktige mål og mål raskere og i stor skala. Sund automatisering gir brukere mulighet til å fokusere på arbeid med høy verdi og reduserer tiden som brukes på gjentagende, manuelle oppgaver eller komplekse dataoppføringer.

Ofte betyr automatisering å oversette forretningsprosesser fra ett skjema til et annet: fra papirbasert skjema til digitalt skjema, fra et gammelt system til et nytt. Med hver oversettelse av forretningsprosessen kommer det en mulighet for transformasjon.

Transformasjon handler ikke om å bruke nye teknologier til å introdusere forstyrrende og forvirrende endringer for brukere. Transformasjon handler om å skape enklere måter å utføre arbeidet på, gjøre det mulig for virksomheten å vokse uten friksjoner og gi forretningsbrukere mulighet til å fokusere dypere på det som virkelig betyr noe for interessentene. Fra et arkitektonisk synspunkt innebærer dette å identifisere oppgaver som kan elimineres fullstendig eller håndteres automatisk. Det kreves en tydelig sammenheng mellom hvordan teknologi brukes og dens målbare innvirkning på virksomheten.

Noe viktig å merke seg om automatisering med Salesforce: Det kan gjøres med en rekke verktøy, med programmatiske og deklarative kvalifikasjonssett. Utforming av godt utformede automatiseringer handler ikke om å velge å bygge med bare ett automatiseringsverktøy. Det handler om å bruke tilnærminger som er konsistente og forutsigbare, og gi team mulighet til å utvikle, teste, distribuere og vedlikeholde automatiseringene du utformer. Automatiseringene dine bør ta den mest vedlikeholdbare og lesbare formen mulig.

Denne delen dekker hvordan du utformer og refaktorer automatiseringer for å gi virksomheter mulighet til å oppnå viktige mål raskere og i stor skala. Du kan forbedre arkitekturen til automatiseringene dine i Salesforce ved å fokusere på effektivitet og dataintegritet.

Å opprette effektivitet i automatiseringene handler ikke om å opprette virksomheten på nytt som vanlig med Salesforce-teknologier. Det handler om å forstå nøkkeltallene og forretningsresultatene som teamene skal ha ansvar for å møte eller spore, og gå tilbake for å se funksjonelle enheter i og på tvers av arbeidet du automatiserer. Det handler om å identifisere hvordan du kan opprette mønstre med automatiseringer som gir virksomheten mulighet til å operere mer effektivt og raskt i stor skala.

Effektiv automatiseringslogikk gjør at systemene gjør følgende:

  • Mer skalerbar og verdifull for virksomheten
  • Mer nyttig for brukere
  • Mer tilpasset og i stand til å møte utviklende forretningsbehov

Du kan forbedre effektiviteten i automatiseringene dine gjennom prosessutforming og driftslogikk.

Prosessutforming innebærer å definere måtene arbeidet utføres på. Å bygge virkelig effektive og effektive prosesser betyr at designene ikke bare replikerer gjeldende måter å arbeide på. Det er viktig å identifisere og fjerne ineffektive eller uklare trinn. Optimaliserte prosesser skal skape målbar forretningsverdi (se KPI-er) uten unødvendige trinn. Uklare eller unødvendige trinn vil sannsynligvis skape teknisk gjeld og føre til ikke-vedlikeholdbare automatiseringer.

Ofte vil ansvaret for å oppdage og dokumentere forretningsprosesser falle under ansvaret til en forretningsanalytiker eller til og med en systemadministrator. Arkitekter er ansvarlige for å samarbeide med disse medlemmene i teamet for å sikre at prosessutformingen er teknisk god og godt strukturert. Ved å bruke Knowledge om Salesforce-plattformen så tidlig som mulig, hjelper teamet med å identifisere prosesser som skal strømlinjeformes gjennom automatisering eller prosesser som må endres for å unngå kostbare tilpassinger.

Vurder følgende for å bygge optimaliserte prosesser for Salesforce:

  • Definer prosesser grundig. Prosesser med uklare formål eller tvetydige definisjoner er mer sannsynlig å bli feiltolket på utformingstidspunktet. Dette fører til feil utforminger som er basert på forutsigelser, noe som fører til feil eller ineffektive automatiseringer. Forsikre deg om at forretningsprosessene du vil automatisere, oppfyller følgende standarder:

  • Gjør prosesstrinnene klare.* Selv om det noen ganger kan være fristende å legge til flere trinn som «kan være nyttige i fremtiden», er dette aldri en god tilnærming. Hvert trinn i en automatisering er relevant for utfallet av den generelle prosessen. Forsikre deg om at hvert prosesstrinn har følgende egenskaper:

    • Utfører en spesifikk, detaljert oppgave (Se komponering)
    • Kreves for at prosessen skal kunne generere sine definerte utdata (fjerne alle ikke-væsentlige trinn)
    • Kan fullføres med et minimum antall ressurser
    • Bruker eksisterende systemdata i stedet for å be om brukerinndata der det er mulig (se engasjement)
    • Gir inndataalternativer som brukere kan forstå uten å måtte vite hvordan de underliggende systemene fungerer (se hjelpemidler)

Listen over mønstre og motmønstre nedenfor viser hvordan riktig (og dårlig) optimalisering ser ut i en Salesforce-organisasjon. Du kan bruke disse til å validere automatiseringsutforminger før du bygger, eller identifisere automatiseringer som må optimaliseres ytterligere.

Hvis du vil vite mer om prosessautomatiseringsverktøy som er tilgjengelig fra Salesforce, kan du se Verktøy som er relevante for automatisert.

Operativ logikk håndterer hvor effektiv en prosess oversettes fra sin utforming til en faktisk implementering. Automatiseringer med sterk operasjonell logikk fortsetter å fungere godt, uavhengig av økte transaksjonsvolumer eller antall samtidige forekomster som kjører. Logisk lønnsomme automatiseringer hjelper virksomheter med enklere skalering for å operere med høyere behov. Å bygge sterk driftslogikk inn i automatiseringene dine er direkte relatert til den generelle påliteligheten av systemet.

Automatiseringer som ikke fungerer effektivt, gir dårlige bruker- og kundeopplevelser, noe som fører til både potensielle omsetningstap og tap av kunde Trust. De har også høyere vedlikeholdskostnader og kan bli flaskehalser som forsinker relaterte prosesser, noe som bidrar til generelle problemer med systemytelsen.

Vurder følgende for å opprette effektiv driftslogikk i automatiseringer:

  • Se til at alle som lager automatiseringer, vet riktig måte å gjøre det på. Dårlige designvalg kan gjøres med alle typer automatiseringsverktøy. Kode er ikke mindre utsatt for feil eller dårlige implementeringsvalg enn klikkebaserte verktøy. Bruk av hardkodede referanse-ID-er er for eksempel et anti-mønster som vises i både Flyt og kode. Klikkbaserte verktøy bør ikke ses som en lisens for å tillate at noen og alle slipper en automatisering til produksjon. Hvert teammedlem som oppretter en automatisering, må vite hvordan den bygges på riktig måte. Se lesbarhets- og utformingsstandarder for å finne ut mer om hvordan du definerer og bruker effektive standarder på tvers av systemer.
  • Dokumenter tydelig alle utførelsesbaner. Økt bruk av automatiseringer øker ikke bare potensielle datavolumer, det øker også ikke-planlagte kallkontekster. Du må forstå hvordan forskjellige automatiseringer kan kalles opp, og sørge for at riktige transaksjonskontroller (se datahåndtering) vises i alle automatiseringer som har flere inngangspunkter. Skjermflyter vil for eksempel ikke kjøre med massedatalastinger, men Apex og utløste (og automatisk startede) flyter vil sannsynligvis gjøre det. Å tydelig dokumentere planlagte og potensielle utførelsesbaner for automatiseringer er et viktig aspekt ved å forstå hvilke logiske betingelser du må tilpasse under implementeringen.
  • “Bulkify” alle dataoperasjoner (inkludert SOQL). Hver dataoperasjon (innsetting, oppdatering og så videre) skal utføres mot samlinger. Altid. Uten unntak. Dette er det som menes med "bulkifying"-operasjoner. Selv om plattformen kan støtte operasjoner med singleton-data, bør du aldri tillate at singleton-mønstre implementeres.
  • Bruk SOSL til søk. Det er en feilmelding om at dataoperasjoner ikke kan utføres mot poster som returneres via SOSL. Det er sant at DML ikke kan kalles opp direkte mot SOSL-resultater, men kode kan analysere SOSL-resultater og opprette en samling som det kan refereres til i DML- eller Database-klassemetoder. De viktigste forskjellene mellom SOSL og SOQL er returtypene for hver av dem og hvordan de svarer på generaliserte søk eller jokersøk. SOSL kan arbeide mot flere sObject-typer (hvorfor returtypen er forskjellig), og den kan håndtere jokersøk og generaliserte strengsøk med bedre ytelse enn SOQL.
  • Behandle SOQL som en dataoperasjon. Ikke bruk SOQL til å finne poster – bruk den til å begrense dataoperasjonene. SOQL og dataoperasjoner kan ha svært lignende innvirkning på ytelsen til den underliggende relasjonsdatabasen. SOQL kan også overføre en eksplisitt DML-indikator som vil låse databaserader i forutsigelse av dataoperasjoner. Hvis du vil opprette skalerbare automatiseringer, må du passe på å behandle SOQL med tilsvarende due diligence: Ikke bruk det uten svært spesifikke, velutformede valgkriterier, ikke tillat fremmed feltreferanser og krev nøye datatypesamsvar mellom felt og filterinndata i WHERE-setningslogikk. Koden må også ha riktige kontroller for å sikre at en spørring aldri kjøres i kontekster uten masseutførelse eller mot null- eller tomme filterkriterier.
  • Hold synkrone operasjoner strengt fokusert på arbeid som hjelper en bruker i sanntid. Under prosessoptimaliseringen identifiserer du logikk som er relevant for hva brukerne trenger å gjøre i sanntid eller nær sanntid, og hva som kan utsettes til en asynkron (asynkron) transaksjon. Se Datahåndtering for å få mer informasjon om hvordan du utformer synkroniserings- og asynkroniseringsoperasjoner.

Listen over mønstre og motmønstre nedenfor viser hvordan riktig (og dårlig) driftslogikk ser ut i Salesforce-automatisering. Du kan bruke disse til å validere automatiseringsutforminger før du bygger, eller identifisere automatiseringer som må optimaliseres ytterligere.

Hvis du vil vite mer om verktøy som er tilgjengelig fra Salesforce og som kan hjelpe deg med å planlegge omfang, kan du se Verktøy som er relevante for automatisert.

KPI-er for automatisering måler innvirkningen av en automatisering over tid. Uten dem kan du ikke vite om en automatisering virkelig gir forretningsverdi eller skaper utilsiktet kompleksitet for brukerne. Hver automatisering du bygger, skal være knyttet til et tydelig, målbart sett av ytelsesindikatorer.

Gode KPI-er defineres av en målbar verdi sammen med en tilknyttet tidsramme. Eksempler er:

  • [X-antall] arbeidstimer lagret per måned
  • Behandlingsfeil fra manuell dataregistrering redusert med [Y%] per uke

Når du har klare, målbare ytelsesindikatorer, må du også forstå om og hvordan en automatisering i Salesforce vil generere data som er relevante for rapportering mot disse ytelsesindikatorene.

Listen over mønstre og motmønstre nedenfor viser hvordan gode (og dårlige) KPI-er ser ut når det gjelder Salesforce-automatiseringer. Du kan bruke disse til å validere eksisterende ytelsesindikatorer eller identifisere hvor du trenger å identifisere ytelsesindikatorer bedre før du bygger.

Hvis du vil vite mer om verktøy som er tilgjengelig fra Salesforce for hjelp med viktige ytelsesindikatorer, kan du se Verktøy som er relevante for automatisert.

Tabellen nedenfor viser et utvalg av mønstre som det skal søkes etter (eller bygges opp) i organisasjonen, og motmønstre som det skal unngås eller rettes opp mot.

✨ Oppdag flere mønstre for effektivitet i Pattern & Anti-Pattern Explorer.

Mønstre Anti-mønstre
Prosessdesign I organisasjonen:
- Hver flyt betjener et enkelt, bestemt formål
- Hvert trinn utfører en spesifikk, detaljert oppgave
- Flyter er organisert i en hierarkisk struktur som består av en hovedflyt og underflyter som støtter
- Alle brukerinndata har et tydelig formål i flyten
- Brukere blir bedt om å oppgi data bare når eksisterende systemdata ikke kan brukes
I organisasjonen:
- Flyter tjener flere formål og krever flere inndata for å gi kontekst
- Flyter krever inndata der data ikke brukes
- Grupper av relaterte trinn inneholder funksjonalitet som overlapper med grupper av trinn i andre flyter
- Flyter ber om brukerinndata når lagrede data kan brukes i stedet
I Apex:
- Hver klasse har ett bestemt formål
- Hver metode utfører en spesifikk, detaljert oppgave
- Alle inndatavariabler har et tydelig formål i klassen
- Kodeutføring krever et minimum antall ressurser
I Apex:
- Klasser har flere formål
- Metoder utfører flere oppgaver, eller metoder utfører oppgaver som ikke er i samsvar med det angitte formålet for klassen de er del av
- Inndatavariabler brukes faktisk ikke i metoder
- Metoder som unødvendig henter data fra databasen eller fra eksterne systemer
Operasjonell logikk I flyt:
- Ingen variabler refererer til hardkodede verdier (for posttyper, brukere og så videre)
- Alle automatisk startede flyter og prosesser bruker beslutnings- og/eller pauseelementer til å evaluere inngangskriterier og hindre uendelige sløyfer eller utførelser mot store datavolumer
- Flyter (inkludert prosesser) hånd logikk av til Apex i store datavolumkontekster
- Underflyter brukes til deler av en prosess som må brukes på nytt på tvers av virksomheten
I flyt:
- Variabler har hardkodede verdier
- Flyter (inkludert prosesser) må deaktiveres manuelt før massedatalastinger
- Flyter (inkludert prosesser) utløser "Ubehandlet unntak"-varsler
- Selv enkle flyter fører regelmessig til feil relatert til styringsgrenser
- Deler av en flyt gjentas på tvers av flyter i stedet for å bruke underflyter
I Apex:
- Ingen variabler refererer til hardkodede verdier (for posttyper, brukere og så videre)
- Alle jokertegnkriterier vises i SOSL
- SOQL er pakket inn i prøve-fangst
- Ingen SOQL vises i en sløyfe
- SOQL-setninger er selektiv, inkludert:
-- ingen bruk av LIKE-sammenligninger eller delvise tekst-sammenligninger
-- sammenligningsoperatorer bruker positiv logikk (dvs. inkluderer, IN) som primær eller eneste logikk
-- bruk av = NULL, != NULL er sjelden og/eller følger alltid en positiv sammenligningsoperator
-- no LIMIT 1-setninger vises
-- ingen bruk av nøkkelordet ALL ROWS
I Apex:
- Variabler har hardkodede verdier
- SOSL brukes sjelden eller ikke konsekvent til jokertegnvalgskriterier
- SOQL er ikke innpakket i prøve-fangst
- SOQL vises i sløyfer
- SOQL-setninger er ikke-selektive, inkludert:
-- LIKE- og jokertegnfilterkriterier vises
-- sammenligninger som bruker NOT, NOT IN kriterier brukes som primær eller eneste sammenligningsoperator
-- = NULL, != NULL kriterier brukes som primær eller eneste sammenligningsoperator
-- LIMIT 1-setninger vises
-- ALL ROWS-nøkkelordet brukes
I dine designstandarder og -dokumentasjon:
- Planlagte og potensielle utførelsesbaner for automatiseringer skisseres tydelig
- Brukstilfellene for synkrone og asynkrone operasjoner i automatiseringer skisseres tydelig som en del av utformingsstandarder
I dine designstandarder og -dokumentasjon:
- Automatiseringsoppkall er ikke dokumentert
- Brukstilfeller for synkrone og asynkrone operasjoner håndteres ikke
KPIs I dokumentasjonen din:
- Utdata for hver automatisering er målbare og tidsbundet
- Ansvarlige interessenter er oppført for hver KPI
I dokumentasjonen din:
- KPI-er finnes ikke for automatiseringer eller har uklare tidsrammer for målinger
- KPI-er finnes uten ansvarlige interessenter
I rapporter og kontrollpaneler:
- Alle målinger relatert til viktige ytelsesindikatorer er inkludert i minst én rapport eller et kontrollpanel
I rapporter og kontrollpaneler:
- KPI-rapportering finnes ikke, eller rapporter mangler målinger relatert til enkelte KPI-er

Dataintegritet handler om hvor godt et system vedlikeholder nøyaktige og fullstendige data. Salesforce Platform opprettholder robust, innebygd behandlingslogikk som er utformet for å beskytte integriteten til data som er lagret i en enkelt organisasjons relasjonsdatabase. En av de grunnleggende tingene ved å bygge sunne automatiseringer er å forstå Salesforces innebygde virkemåte for dataintegritet, og forsikre deg om at alle automatiseringsutforminger er i samsvar med (og anerkjenner) disse virkemåtene.

De største motmønstrene i automatiseringsutformingen stammer fra manglende anerkjennelse av de kraftige dataintegritetstjenestene som allerede tilbys av Salesforce, og manglende bruk av standardfunksjonalitet som utnytter disse tjenestene. For å kunne utforme automatiseringer som beskytter og vedlikeholder dataintegritet, må du være kjent med den grunnleggende virkemåten i Salesforce.

Riktig utvidelse av dataintegritet til tilpassede automatiseringer betyr at systemet kan

  • operere mot massedata og store datavolumer uten manuell intervensjon
  • håndheve sikkerhetspolicyer for brukere når det er nødvendig, og bytte til systemkontekst når det er nødvendig
  • oppdag feil ved kjøretid og følg forutsigbare gjenopprettings- eller feilbaner.

Du kan bygge bedre dataintegritet i Salesforce-automatiseringene dine gjennom riktig datahåndtering og feilhåndtering.

Det første trinnet i utformingen for riktig databehandling i Salesforce er å forstå hvordan plattformen for flere leietagere håndterer transaksjoner. Dette inkluderer forståelse av den innebygde virkemåten for utførelsesrekkefølgen som Salesforce Platform bruker til å sikre dataintegritet under dataoperasjoner på postnivå. Hvis du vil vite mer om innvirkningen av denne virkemåten, kan du se Databasemanipulering i Grunnleggende om Salesforce-arkitektur.

Dårlig datahåndtering i automatiseringene kan være noen av de vanskeligste motmønstrene å identifisere og fullstendig rette opp. Den rekursive og overlappende naturen til plattformens utførelsesrekkefølge kan gjøre det vanskelig å se hvor problemer kommer fra. Den spesifikke delen av kode eller flyt som utløser en fatalt feil eller overskrider styringsgrensene, er kanskje ikke rotårsaken til et underliggende databehandlingsproblem.

Transaksjonsbevissthet er nøkkelen til å bygge automatiseringer som fungerer pålitelig og i stor skala med Salesforce. Dette betyr å sikre at hvert trinn i en automatisering er designet med Knowledge om hvor det er i forhold til den plattformstyrte utførelsesrekkefølgen, kan utføre sin funksjon riktig, og overfører informasjon til neste trinn riktig.

Uavhengig av automatiseringsverktøyet du bruker, følger riktig transaksjonsbevissthet lignende mønstre og krever felles vurderinger:

  • Anta at alle automatiseringer blir bedt om å kjøre mot store datavolumer uten varsel når som helst. Automatiseringer bør ha baner for å tillate gruppe- eller masseutføring (se Skalerbarhet).
  • Ikke bland system- og brukerkontekstdataoperasjoner i samme transaksjon.
  • Reserver synkroniseringsoperasjoner for før kontekst, og bruk asynkrone operasjoner for alle handlinger etter kontekst.
  • Bruk meldinger og varsler for å unngå å opprette opplevelser i appen som krever at en bruker venter på data basert på resultatet av en asynkron operasjon.

Utover transaksjonsbevissthet er det en annen dimensjon for databehandling: å vite når logikk skal utføres i forskjellige utførelseskontekster. Vanlige årsaker til å dele opp automatiseringer i forskjellige utførelseskontekster er:

  • Større volum og/eller komplekse dataoperasjoner
    • Bulkifying operasjoner garanterer ikke at en automatisering vil håndtere store datavolumer riktig. Hvis volumet av dataoperasjoner i en automatisering vil overskride grensene per transaksjon, må du utføre dataoperasjoner med funksjonalitet som er spesifikk for store datavolumer (som via batch Apex eller Bulk 2.0 API). Disse har distinkte transaksjonsgrenser som passer for store datavolumer.
    • Dataoperasjoner som må gå gjennom komplekse relasjonshierarkier eller utføre komplekse nye beregninger (uten formelfelt) på tvers av poster, kan enkelt overskride grensene per transaksjon når de utføres samlet. Vurder hvor "støyende" en oppdatering til én post er, med tanke på hvilke relaterte dataoperasjoner eller SOQL som kreves for å utføre etterfølgende handlinger i systemet.
    • De sObject-typene som er involvert i hele kjeden i en automatisering, kan kreve at du deler opp dataoperasjoner i separate transaksjoner for å unngå "blandet DML"-feil.
  • Logikk som må utføres i bruker- eller systemkontekst
    • Salesforce Platform fremtvinger deling og synlighet i brukerkontekst. Hvis du må utføre operasjoner som går utover tillatelsesnivåene til brukerne av automatiseringen, må du forsikre deg om at disse operasjonene utføres i systemkontekst.
    • Forskjellige verktøy vil eller vil ikke kjøre i forskjellige kontekster:
      • Apex kjøres som standard i systemkontekst. Du kan kontrollere om og hvordan Apex-virkemåter håndhever delingsregler på brukernivå ved å bruke delingsnøkkelord i en Apex-klassedefinisjon.
      • Flyten har ingen enkelt standard virkemåte. En flyt kjører i bruker- eller systemkontekst basert på hvordan flyten startes. Du har mulighet til å håndheve deling i systemkontekst.
      • Prosesser (det vil si automatiseringer som er bygd med Prosessbygger) kjører i systemkontekst uten viktige punkter om deling. (Notat: Vi anbefaler å bygge automatiseringer med lite kode med Flyt.
  • Logikk som må utføres asynkront
    • Operasjoner med eksternt system: Synkrone oppkall eller handlinger som gir tilgang til eksterne data, inkluderes ikke i noen virkemåter for tilbakestilling av plattformen. For å dra nytte av disse virkemåtene må du plassere handlinger som involverer eksterne systemer, i separate transaksjoner (ved bruk av asynkrone Apex-metoder, asynkrone baner eller kallbare handlinger).
    • Hendelser og meldinger - Hvis du vil styre flyten av hendelser eller meldinger relatert til databehandlinger (og dra nytte av virkemåte for tilbakekalling av plattformen), plasserer du alle handlinger relatert til meldinger eller hendelser i etter kontekster, ved å bruke asynkrone Apex-metoder.

Listen over mønstre og motmønstre nedenfor viser hvordan riktig (og dårlig) databehandling ser ut i Salesforce-automatiseringer. Du kan bruke disse til å validere automatiseringsutforminger før du bygger, eller identifisere automatiseringer som må omformuleres for å forbedre databehandlingen.

Hvis du vil vite mer om verktøy som er tilgjengelig fra Salesforce for databehandling i automatisering, kan du se Verktøy som er relevante for automatisert.

Feilhåndtering er avgjørende for dataintegritet. Sterk feilhåndtering hjelper også systemet med å skalere og alder med mer resiliens.

Feilbehandling ved feilbehandling i automatiseringer kan føre til følgende:

  • Postinkonsistens og andre problemer med dataintegritet
  • Sende unøyaktige varsler til brukere og andre systemer
  • Spilde tid og ressurser på manuell eller gjentatt behandling
  • Generelt mangel på Trust i et system

Feilhåndtering i automatiseringer krever at du gir alle kjørende prosesser muligheten til å analysere en feil for informasjon, få tilgang til logikk om hva de neste trinnene skal baseres på feilinformasjon, og deretter følge den riktige banen. Disse funksjonene trenger ikke å bygges om og om igjen i hver automatisering (det er et optimaliseringsmodell). I stedet bør all automatisering i systemet kunne kobles til de relevante feilhåndteringskomponentene.

Hvis du vil bygge riktige feilhåndteringskontroller i automatiseringene dine, kan du stille disse spørsmålene:

  • Hva er en "fatal" feil?
  • Hva er en "gjenopprettbar" feil?
  • Hvordan kan automatiseringen fange opp og varsle brukeren om feil før brukeren forsøker å utføre endringer for automatiseringer som utløses av brukerhandlinger?

Når du har bestemt deg for hvordan du skal håndtere disse feilene, kan du begynne å bygge effektiv feilhåndtering i automatiseringene dine. Listen over mønstre og motmønstre nedenfor viser hvordan riktig (og dårlig) feilhåndtering ser ut i en Salesforce-automatisering. Du kan bruke disse til å validere automatiseringsutforminger før du bygger, eller identifisere automatiseringer som må omformuleres for å forbedre feilhåndteringen.

Hvis du vil vite mer om verktøy som er tilgjengelig fra Salesforce for feilhåndtering, kan du se Verktøy som er relevante for automatisert.

Tabellen nedenfor viser et utvalg av mønstre som det skal søkes etter (eller bygges opp) i organisasjonen, og motmønstre som det skal unngås eller rettes opp mot.

✨ Oppdag flere mønstre for dataintegritet i Mønsterutforsker.

Mønstre Anti-mønstre
Datahåndtering I dataregisteret:
- Feltnivådata og prioriteringslogikk finnes for alle datakilder og datasjøobjekter
- Felttilordning fra datasjøobjekt til datamodellobjekt finnes
I dataregisteret:
- Feltnivådata og prioriteringslogikk for datakilder og datasjøobjekter inkluderes ikke
- Felttilordning fra datasjøobjekter til datamodellobjekter er ikke inkludert
I Apex:
- Alle synkrone DML-setninger eller Database-klassemetoder utføres i før utløsningskontekster
- Asynkrone Apex bruker køer til "kjede"-komplekse DML på tvers av transaksjoner
- Batch Apex brukes utelukkende for store datavolumer
- @future Apex brukes ikke eller brukes sparsomt, for oppkall eller systemobjekt DML
I Apex:
- DML-setninger vises regelmessig i kode som kalles opp i etter utløserkontekster
- Asynkron Apex brukes sjelden
- Asynkrone Apex brukes vilkårlig, inkludert:
-- Fremtidige metoder og Apex i kø brukes inkonsekvent eller om hverandre
-- Databasoperasjoner har ikke klar, konsistent logikk for overføring av utførelse til Apex når det er nødvendig
I flyt:
- Alle flyter som startes i brukerkontekst, abstrakterer alle systemkontekstraksjoner til underflyter, som plasseres konsekvent etter et Pause-element, for å opprette en ny transaksjon
- Komplekse sekvenser av relaterte dataoperasjoner opprettes med Orchestrator (i stedet for å kalle opp flere underflyter i en monolitt flyt)
- Alle postutløste flyter har utløserrekkefølgeverdier fylt ut
- Flyter som involverer eksterne systemoppkall eller prosesser som kjører lenge, bruker asynkrone baner
I flyt:
- Store, monolittiske flyter forsøker å koordinere komplekse sekvenser av relaterte dataoperasjoner (med eller uten underflyter)
- Postutløste flyter bruker ikke noen attributter for utløserbestilling eller bruker ikke utløserbestillingsverdier konsistent
- Asynkrone baner brukes ikke konsistent eller i det hele tatt
I organisasjonen:
- Avstemmingsregler for Identitetsløsning følger prioriteringslogikken i datadialogen
I organisasjonen:
- Avstemmingsregler for Identitetsløsning følger ikke prioriteringslogikk i datadialogen
Feilhåndtering I Apex:
- Kode vikler alle DML, SOQL, oppkall og andre kritiske prosesstrinn i prøve-fangst blokker
- Tilpassede unntak brukes til å opprette avanserte feilmeldinger og logikk
- I asynkrone og gruppekontekster brukes databaseklassemetoder i stedet for DML
- Databaseklassemetoder kan brukes eksklusivt for alle dataoperasjoner (i stedet for DML)
I Apex:
- DML, SOQL, oppkall eller andre kritiske prosesstrinn er ikke konsekvent pakket inn i prøve-fangst blokker
- System.debug-setninger vises i produksjonskode (og blir ikke kommentert)
- Ingen databaseklassemetoder brukes
- Dataoperasjoner utføres eksklusivt med DML
I Lightning-nettkomponenter (LWC):
- JavaScript avslutter alle dataoperasjoner og kritiske prosesstrinn i hvis () / andre hvis () blokkerer
- Alle @wire-funksjoner bruker data og feilegenskaper fra API
- Alle hvis (feil) / andre hvis (feil) setninger inneholder logikk for å behandle feil og gi informative meldinger
In LWC:
- JavaScript brukes ikke konsekvent hvis ()/andre hvis () blokkerer med dataoperasjoner eller kritiske prosesstrinn
- @wire-funksjoner bruker ikke data og feilegenskaper fra API (eller bruker dem ikke konsekvent)
- Hvis brukt i det hele tatt, hvis (feil) / andre hvis (feil) setninger ikke faktisk inneholder logikk for å behandle feil og gi nyttige feilmeldinger
In Aura:
- JavaScript pakker alle dataoperasjoner og viktige prosesstrinn i prøve-fangst blokker
- Innenfor prøve-fangst blokker brukes innebygd JavaScript feil i kastsetninger (ingen bruk av $A.error())
- All gjenopprettingsfeillogikk vises i fangstuttrykk og gir tydelige brukermeldinger
In Aura:
- JavaScript pakker ikke dataoperasjoner og viktige prosesstrinn konsekvent inn i prøve-fangst blokker
- Komponenter bruker $A.error()
- Gjenopprettingsfeillogikk vises ikke konsekvent i fangstuttrykk, og feilmeldinger til brukere er ikke klare
I flyt:
- Skjermflyter bruker konsekvent feilkoblinger til å vise feil til brukere
- Tilpassede feilmeldinger konfigureres for feil som vises på skjermen
- Flyter med dataoperasjoner, oppkall og annen viktig behandlingslogikk har feilbaner for alle viktige handlinger
I flyt:
- Flyter bruker ikke feilbaner konsistent eller i det hele tatt
- Tilpassede feilmeldinger brukes ikke, så brukere ser standardmeldingen "En ubehandlet feil har oppstått i denne flyten"

Konseptet forretningsverdi, i sammenheng med automatisering, handler om hvor godt prosesser skaper målbar, positiv innvirkning for forretningsinteressenter. Ideelt sett gir prosessautomatisering brukere mulighet til å bruke mindre tid på gjentagende oppgaver med lite verdi. Den bidrar også til å øke dataintegriteten ved å eliminere manuelle behandlingsaktiviteter som kan introdusere feil. På samme måte som med prosessutforming krever det å identifisere og levere automatiseringer som gir reell forretningsverdi, arbeid utover grunnleggende oppdagelse og forretningsanalyse.

Noen ganger kan det virke som om den beste måten å levere verdi til virksomheten på er å bare automatisere alle prosesser som en forretningsbruker ber om, enten i rekkefølgen de vises i etterslepsloggen (eller billettkøen) eller basert på politiske faktorer i organisasjonen. Dette kan føre til to relaterte problemer: å bygge automatiseringer i en suboptimal rekkefølge og å bygge feil automatiseringer totalt. Det første problemet, dårlig prioritering, hindrer at prosesser med høy verdi implementeres når de skal, noe som potensielt reduserer veksten. Det andre problemet, å bygge feil automatiseringer, forsinker ikke bare levering av automatiseringer med høy verdi, men fører også til feil brukt tid, unødvendige kostnader og økt frustrasjon blant leveringsteam.

Du kan levere større forretningsverdi ved å fokusere på ytelsesindikatorer og prioritering.

VerktøyBeskrivelseEffektivitetDataintegritetForretningsverdi
Apex-batchingGrupper poster sammen og behandle dem som håndterbare biterXX
Apex fremtidige metoderUtføre Apex asynkront i bakgrunnenXX
Apex-kø Legge til Apex i en kø og overvåke demXX
Apex SchedulerUtføre Apex asynkront på angitt tidspunktXX
godkjenningerAngi de nødvendige trinnene for å godkjenne posterXX
Asynkron ApexKjøre Apex asynkrontXX
Automatiserte handlingerUtføre feltoppdateringer, e-postsendinger og andre handlinger i bakgrunnenXX
Einstein Next Best ActionVise de riktige anbefalingene til de riktige personene til rett tidXX
E-postvarselOpprette og sende automatiske e-postmeldingerXX
EskaleringshandlingerAngi automatiske handlinger som skal utføres for sakseskaleringerXX
FeltoppdateringOppdatere feltverdier basert på automatiseringXX
FlytbyggerBygge automatiseringer med et pek-og-klikk-grensesnittXX
FlytutvidelserFå tilgang til lagrede variabler som komponentinndata i flyterX
Flytmalbibliotekbruke maler til å utforme bransjespesifikke flyterXX
FlytutløserAutomatiser komplekse forretningsprosesserX
Ukallbare handlingerLegge til Apex i flyterXX
OrkestratorOpprette og behandle automatiseringer med flere trinnXX
Utgående meldingSende informasjon fra en automatisert prosess med mottak og nye forsøk X
Publisere plattformhendelser med flytpublisere hendelser via brukerinteraksjoner og automatiseringerX
Query OptimizerBruk selektivitet og indekser til å forbedre ytelsen til spørringer, rapporter og listevisningerXX
Salesforce-flytOpprette deklarative prosessautomatiseringer med Flow BuilderXX
Sende varsler med flyterSende meldinger over SMS, WhatsApp eller Facebook MessengerXX
Sende varsler med prosesserSende meldinger over SMS, WhatsApp eller Facebook MessengerXX
SOQL FOR UPDATE modifikatorLås poster for å hindre løpebetingelser og trådsikkerhetsproblemerX
Strategy Builder Identifisere anbefalinger som skal vises på postsiderXX
DelflyterReduser flytkompleksitet via gjenbrukX
Abonnere på plattformhendelser med flytMotta meldinger publisert via automatiseringerX
OppgavehandlingerBestemme tildelingsdetaljer gitt til en bruker av en automatiseringX
RessursBeskrivelseEffektivitetDataintegritetForretningsverdi
Apex-utførelsesstyringer og -grenserLær hvordan Apex håndhever grenserXX
Ressurser for gruppebehandlingOpprette, behandle, planlegge og overvåke gruppejobberXX
Gode fremgangsmåter for SOQL og SOSL Forbedre spørringsytelsen til programmer med store datavolumerX
DesignstandardmalOpprett designstandarder for organisasjonenXXX
Flytmengde i transaksjonerUtforme flyter for å arbeide mot samlingerXX
Vurderinger for flytdataLære om tidsplanutløste flyter for gruppedataXX
FlytfeilsøkingTeste og feilsøke flyterX
Hvordan forespørsler behandlesFinn ut hvordan Salesforce behandler jobber raskt og minimerer feilXX
KPI regnearkmalBestem forretningsverdien for en bestemt målingXX
Få oppkall til eksterne systemer fra kallbare handlingerKalle opp eksterne systemer fra en flyt med ApexX
Miksede DML-operasjoner Vite hvilke sObject-objekter som kan brukes sammen for DML i samme transaksjonXX
UtførelsesordreForstå rekkefølgen av hendelser for innsettinger, oppdateringer og oppdateringerXX
Spørringsplan FAQOptimalisere spørringer som involverer store datavolumerXX
Vurderinger for tidsplanutløste flyterForstå de spesielle virkemåtene til tidsplanutløste flyterX
Transaksjonskontrollgenerere et lagringssted som angir gjeldende databasestatusXX
Hva skjer når en flyt mislykkes? Forstå feilhåndtering i flyterXX
God praksis for arbeidsflytautomatiseringKomme i gang med Salesforce-automatiseringXXX
Arbeide med svært store SOQL-spørringerSkrive mer effektive SOQL-spørringerX

Hjelp oss å holde Salesforce Well-Architected relevant for deg, ta vår undersøkelse for å gi tilbakemelding om dette innholdet og fortell oss hva du vil se videre.