Läs om våra uppdateringsscheman här.
System visar automatiserat beteende genom att låta verksamheten uppfylla viktiga mål snabbare och i stor skala. Hälsosam automatisering låter användare fokusera på arbete med högt värde och minskar tiden som läggs på repetitiva, manuella uppgifter eller komplex datainmatning.
Oftast innebär automatisering att översätta verksamhetsprocesser från ett formulär till ett annat: från pappersbaserad form till digital form, från ett gammalt system till ett nytt. Med varje översättning av verksamhetsprocesser kommer en möjlighet till transformation.
Transformation handlar inte om att använda ny teknik för att introducera störande och förvirrande förändringar för användare. Transformation handlar om att skapa enklare sätt för arbete att utföras, låta verksamheten växa utan friktion och ge affärsanvändare möjlighet att fokusera mer på det som verkligen är viktigt för deras intressenter. Ur arkitektonisk synvinkel innefattar detta att identifiera uppgifter som kan elimineras helt eller hanteras automatiskt. Det kräver en tydlig koppling mellan hur teknik används och dess mätbara påverkan på verksamheten.
Något viktigt att notera om automatisering med Salesforce: det kan göras med en mängd olika verktyg, med programmatiska och deklarativa kompetensuppsättningar. Att utforma automatiseringar som är väl uppbyggda handlar inte om att välja att bygga med bara ett automatiseringsverktyg. Det handlar om att använda metoder som är enhetliga och förutsägbara, och låta team utveckla, testa, distribuera och underhålla de automatiseringar du utformar. Dina automatiseringar ska vara så underhållbara och läsbara som möjligt.
Detta avsnitt handlar om hur man utformar och refaktoriserar automatiseringar för att göra det möjligt för företag att uppnå viktiga mål snabbare och i stor skala. Du kan förbättra arkitekturen för dina automatiseringar i Salesforce genom att fokusera på effektivitet och dataintegritet.
Att skapa effektivitet i dina automatiseringar handlar inte om att återskapa verksamheten som vanligt med Salesforce-tekniker. Det handlar om att förstå de nyckelmått och verksamhetsresultat som team kommer att vara ansvariga för att möta eller följa, och att ta ett steg tillbaka för att se funktionella enheter i och genom det arbete du automatiserar. Det handlar om att identifiera hur du kan skapa mönster med dina automatiseringar som gör att verksamheten kan arbeta mer effektivt och snabbt, i stor skala.
Effektiv automatiseringslogik gör att dina system:
- Mer skalbart och värdefullt för verksamheten
- Mer användbart för användare
- Mer anpassningsbar och kan uppfylla växande verksamhetsbehov
Du kan förbättra effektiviteten i dina automatiseringar genom processdesign och operativ logik.
Processdesign innefattar att definiera hur arbete utförs. Att bygga verkligt effektiva och effektiva processer innebär att dina designer inte bara replikerar nuvarande arbetssätt. Det är viktigt att identifiera och ta bort ineffektiva eller otydliga steg. Optimerade processer ska skapa mätbart verksamhetsvärde (se KPI) utan onödiga steg. Otydliga eller onödiga steg kommer sannolikt att skapa tekniska skulder och resultera i ounderhållbara automatiseringar.
Ofta faller ansvaret för att upptäcka och dokumentera verksamhetsprocesser under en verksamhetsanalytiker eller till och med en systemadministratör. Arkitekter ansvarar för att samarbeta med dessa medlemmar i ditt team för att säkerställa att dina processdesigner är tekniskt hållbara och välstrukturerade. Att tillämpa din Knowledge om Salesforce Platform så tidigt som möjligt hjälper ditt team att identifiera processer som behöver effektiviseras genom automatisering eller processer som behöver ändras för att undvika kostsamma anpassningar.
För att bygga optimerade processer för Salesforce, överväg:
-
Definiera processer noggrant. Processer med oklara syften eller otydliga definitioner är mer troliga att misstolkas vid designtillfället. Detta kommer att leda till felaktiga konstruktioner som baseras på antaganden, vilket kommer att resultera i felaktiga eller ineffektiva automatiseringar. Se till att de verksamhetsprocesser du vill automatisera uppfyller följande standarder:
- Begränsad till en enskild, specifik funktion (se Funktionella enheter)
- Har tydligt definierade, mätbara resultat (se Verksamhetsvärde)
- Har tydligt definierade indata och utdata
-
Gör processteg tydliga.* Även om det ibland kan vara frestande att lägga till ytterligare steg som "kan vara användbara i framtiden" är detta aldrig en bra metod. Varje steg i en automatisering vara relevant för resultatet av den övergripande processen. Se till att varje processteg har följande egenskaper:
- Utför en specifik, detaljerad uppgift (se sammansättningsbar)
- Krävs för att processen ska kunna skapa sin definierade utdata (ta bort alla icke-väsentliga steg)
- Kan utföras med ett minimalt antal resurser
- Använder befintliga systemdata istället för att be om användarinmatningar där så är möjligt (Se engagerande)
- Ger indataalternativ som användare kan förstå utan att behöva veta hur de underliggande systemen fungerar (Se hjälpsamt)
Listan över mönster och antimönster nedan visar hur korrekt (och dålig) optimering ser ut i en Salesforce-organisation. Du kan använda dessa för att validera dina automatiseringsdesigner innan du bygger, eller identifiera automatiseringar som behöver optimeras ytterligare.
Mer information om processautomatiseringsverktyg som är tillgängliga från Salesforce finns i Verktyg relevanta för automatiserade processer.
Operativ logik handlar om hur effektivt en process översätts från sin design till en faktisk implementering. Automatiseringar med stark operativ logik fortsätter att fungera bra, oavsett ökningar i transaktionsvolymer eller antalet samtidiga instanser som körs. Logiskt sunda automatiseringar hjälper företag att enklare skala upp för att arbeta på högre nivåer av efterfrågan. Att bygga in stark driftslogik i dina automatiseringar är direkt relaterat till systemets övergripande tillförlitlighet.
Automatiseringar som inte fungerar effektivt ger dåliga användarupplevelser och kundupplevelser, vilket leder till både potentiella intäktsförluster och förlust av Customer Trust. De har även högre underhållskostnader och kan bli flaskhalsar som försenar relaterade processer, vilket bidrar till övergripande problem med systemets prestanda.
För att skapa effektiv operativ logik i automatiseringar, överväg:
- Se till att alla som skapar automatiseringar vet hur de ska göra. Dåliga designval kan göras med alla typer av automatiseringsverktyg. Kod är inte mindre utsatt för fel eller dåliga implementeringsval än klickbaserade verktyg. Användningen av hårdkodade referens-ID:n är till exempel ett antimönster som visas i både flöde och kod. Klickbaserade verktyg ska inte ses som en licens för att låta vem som helst och alla släppa en automatisering i produktion. Varje teammedlem som skapar en automatisering måste veta hur man bygger den på rätt sätt. Se läsbarhets- och designstandarder för mer information om hur du definierar och tillämpar effektiva standarder i dina system.
- Dokumentera alla körningssökvägar. Ökad användning av automatisering ökar inte bara potentiella datavolymer, det ökar även oplanerade åberopningssammanhang. Du måste förstå hur olika automatiseringar kan åberopas och säkerställa att korrekta transaktionskontroller (se datahantering) visas i alla automatiseringar som har flera ingångar. Till exempel kommer skärmflöden inte att köras med massinläsningar av data, men Apex utlöser och utlösta (och autostartade) flöden kommer antagligen att göra det. Att tydligt dokumentera planerade och potentiella körningsvägar för automatisering är en viktig aspekt för att förstå vilka logiska villkor du behöver uppfylla under implementeringen.
- "Bulkifiera" alla dataoperationer (inklusive SOQL). Varje dataoperation (infoga, uppdatera och så vidare) ska utföras mot samlingar. Alltid. Utan undantag. Detta är vad som menas med “buntoperationer”. Även om plattformen kan stödja singletondataoperationer bör du aldrig tillåta att singletonmönster implementeras.
- Använd SOSL för sökoperationer. Det finns en missuppfattning att dataoperationer inte kan utföras mot poster som returneras via SOSL. Det är sant att DML inte kan åberopas direkt mot SOSL-resultat, men kod kan tolka SOSL-resultat och skapa en samling som kan refereras i DML- eller databasklassmetoder. De viktigaste skillnaderna mellan SOSL och SOQL är returtyperna för båda och hur de svarar på generaliserade sökningar eller jokertecken. SOSL kan arbeta mot flera sObject-typer (varför returtypen är annorlunda) och kan hantera jokertecken och allmänna strängsökningar med bättre prestanda än SOQL.
- Behandla SOQL som en dataåtgärd. Använd inte SOQL för att hitta poster — använd den för att förfina dina dataoperationer. SOQL- och dataoperationer kan ha liknande påverkan på prestandan för den underliggande relationsdatabasen. SOQL kan till och med skicka en explicit DML-indikator som låser databasrader i väntan på dataoperationer. För att skapa skalbara automatiseringar, se till att du behandlar SOQL med liknande due diligence: använd det inte utan mycket specifika, välformulerade urvalskriterier, tillåt inte överflödiga fältreferenser och kräv noggrann matchning av datatyp mellan fält och filterinmatningar i
WHERE. Din kod bör även ha rätt kontroller för att säkerställa att en sökfråga aldrig körs i sammanhang utan bunt eller mot null eller tomma filterkriterier. - Håll synkrona åtgärder strikt fokuserade på arbete som hjälper en användare i realtid. Under din processoptimering, identifiera logik som är relevant för vad användare behöver göra i realtid eller nästan i realtid och vad som kan skjutas upp till en asynkron (asynkron) transaktion. Se Datahantering för mer information om att utforma synkroniserings-/asynkroniseringsåtgärder.
Listan över mönster och antimönster nedan visar hur korrekt (och dålig) operativ logik ser ut i Salesforce-automatisering. Du kan använda dessa för att validera dina automatiseringsdesigner innan du bygger, eller identifiera automatiseringar som behöver optimeras ytterligare.
Mer information om de verktyg som finns tillgängliga i Salesforce och som kan hjälpa dig planera din skala finns i Verktyg relevanta för automatiserade processer.
Nyckeltal för automatisering mäter påverkan av en automatisering över tid. Utan dem kommer du inte ha något sätt att veta om en automatisering verkligen lägger till verksamhetsvärde eller skapar oavsiktlig komplexitet för dina användare. Varje automatisering du bygger ska vara knuten till en tydlig, mätbar uppsättning nyckeltal.
Bra nyckeltal definieras av ett mätbart värde tillsammans med en associerad tidsram. Exempel inkluderar:
- [X antal] arbetstimmar sparade per månad
- Bearbetningsfel från manuell datainmatning minskade med [Y%] per vecka
När du har tydliga, mätbara nyckeltal måste du även förstå om och hur en automatisering i Salesforce kommer att generera data som är relevanta för rapportering mot dessa nyckeltal.
Listan över mönster och antimönster nedan visar hur korrekta (och dåliga) nyckeltal ser ut när det gäller Salesforce-automatiseringar. Du kan använda dessa för att validera dina befintliga nyckeltal, eller identifiera var du behöver identifiera nyckeltal bättre innan du bygger.
Mer information om de verktyg som finns tillgängliga från Salesforce för hjälp med nyckeltal finns i Verktyg relevanta för automatiserade.
Följande tabell visar ett urval av mönster att leta efter (eller bygga) i din organisation och antimönster att undvika eller rikta in sig på för att åtgärda.
✨ Upptäck fler mönster för effektivitet i Mönster & Anti-Mattern Explorer.
| Mönster | Anti-Patterns | |
|---|---|---|
| Processdesign | I din organisation:
- Varje flöde tjänar ett enskilt, specifikt syfte - Varje steg utför en specifik, detaljerad uppgift - Flöden är organiserade i en hierarkisk struktur som består av ett huvudflöde och stödjande underflöden - Alla användarinmatningar har ett tydligt syfte inom flödet - Användare ombes endast tillhandahålla data när befintliga systemdata inte kan användas |
I din organisation:
- Flöden tjänar flera syften och kräver ytterligare inmatningar för att ge sammanhang - Flöden kräver inmatningar vars data inte används - Grupper av relaterade steg innehåller funktionalitet som överlappar grupper av steg i andra flöden - Flöden ber om användarinmatningar när lagrade data kan användas istället |
| I Apex:
- Varje klass tjänar ett enskilt, specifikt syfte - Varje metod utför en specifik, detaljerad uppgift - Alla indatavariabler har ett tydligt syfte inom klassen - Kodkörning kräver ett minimalt antal resurser |
I Apex:
- Klasser tjänar flera syften - Metoder utför flera uppgifter eller metoder utför uppgifter som inte överensstämmer med det angivna syftet med klassen de är en del av - Indatavariabler används inte i metoder - Metoder som i onödan hämtar data från databasen eller från externa system |
|
| Operativ logik | I flöde:
- Inga variabler refererar till hårdkodade värden (för posttyper, användare, etc.) - Alla autostartade flöden och processer använder beslut och / eller pauselement för att utvärdera inmatningskriterier och förhindra oändliga loopar eller körningar mot stora datavolymer - Flöden (inklusive processer) skickar logik till Apex i sammanhang med stora datavolymer - Underflöden används för de sektioner av en process som behöver återanvändas i hela verksamheten |
I flöde:
- Variabler har hårdkodade värden - Flöden (inklusive processer) måste inaktiveras manuellt innan massdata läses in - Flöden (inklusive processer) utlöser "ohanterade undantag" meddelanden - Även enkla flöden orsakar ofta fel relaterade till styrande gränser - Delar av ett flöde upprepas över flöden istället för att använda underflöden |
| I Apex:
- Inga variabler refererar till hårdkodade värden (för posttyper, användare, etc.) - Alla jokertecken kriterier visas i SOSL - SOQL är insvept i försöksfångst
- Ingen SOQL visas inom en loop - SOQL-uttryck är selektiva, inklusive: -- ingen användning av GILLA jämförelser eller delvisa textjämförelser
-- jämförelseoperatorer använder positiv logik (t.ex. INCLUDES, IN) som primär eller endast logik
-- användning av = NULL, != NULL är ovanligt och/eller följer alltid en positiv jämförelseoperator
-- inga GRÄNS 1 uttryck visas
-- ingen användning av nyckelordet ALL ROWS
| I Apex:
- Variabler har hårdkodade värden - SOSL används sällan eller inte konsekvent för jokertecken urvalskriterier - SOQL är inte insvept i försöksfångst
- SOQL visas inom loopar - SOQL-uttryck är icke-selektiva, inklusive: -- Filterkriterier för GILLA och jokertecken visas
-- jämförelser med kriterierna NOT, NOT IN används som primär eller enda jämförelseoperator
-- = NULL, != NULL används som primär eller enda jämförelseoperator
-- LIMIT 1 uttryck visas
-- Nyckelordet ALL ROWS används
| |
| I dina designstandarder och dokumentation:
- Planerade och potentiella körningsvägar för automatisering är tydligt angivna - Användningsfallen för synkrona och asynkrona operationer inom automatiseringar beskrivs tydligt som en del av designstandarder |
I dina designstandarder och dokumentation:
- Automatisering åberopning är inte dokumenterad - Användningsfall för synkrona och asynkrona operationer behandlas inte |
|
| KPIs | I din dokumentation:
- Utdata för varje automatisering är mätbara och tidsbundna - Ansvariga intressenter listas för varje nyckeltal |
I din dokumentation:
- Nyckeltal finns inte för automatiseringar eller har oklara tidsramar för mätningar - Nyckeltal finns utan ansvariga intressenter |
| Inom rapporter och instrumentpaneler:
- Alla mått relaterade till nyckeltal inkluderas i minst en rapport eller instrumentpanel |
Inom rapporter och instrumentpaneler:
- Nyckeltalsrapportering finns inte eller rapporter saknar mått relaterade till vissa nyckeltal |
Dataintegritet handlar om hur väl ett system upprätthåller korrekta och fullständiga data. Salesforce Platform upprätthåller en robust, inbyggd bearbetningslogik som är utformad för att skydda integriteten för data som lagras i en enskild organisations relationsdatabas. En av grunderna i att bygga hälsosamma automatiseringar är att förstå Salesforces inbyggda beteenden för dataintegritet och se till att alla dina automatiseringsdesigner stämmer överens med (och bekräftar) dessa beteenden.
De största antimönsterna i automatiseringsdesign uppstår på grund av att de inte känner igen de kraftfulla dataintegritetstjänster som redan tillhandahålls av Salesforce och inte använder standardfunktioner som utnyttjar dessa tjänster. För att utforma automatiseringar som skyddar och upprätthåller dataintegritet måste du känna till den grundläggande ordningen på Salesforces driftbeteenden.
Att utöka dataintegriteten till dina egna automatiseringar innebär att ditt system kan:
- arbeta mot stora datavolymer och stora datavolymer utan manuella ingripanden,
- tillämpa användarsäkerhetspolicyer vid behov och växla till systemsammanhang vid behov,
- stöter på fel vid körning och följer förutsägbara sökvägar för återställning eller fel.
Du kan bygga in bättre dataintegritet i dina Salesforce-automatiseringar genom korrekt datahantering och felhantering.
Det första steget i att utforma för korrekt datahantering i Salesforce är att förstå hur plattformen för flera klienter hanterar transaktioner. Detta inkluderar att förstå den inbyggda ordningen för utförandebeteenden som Salesforce Platform använder för att säkerställa dataintegritet under dataoperationer på postnivå. Mer information om påverkan av detta beteende finns i Databasmanipulation i Salesforce Architecture Basics.
Dålig datahantering i dina automatiseringar kan vara några av de svåraste antimönsterna att identifiera och åtgärda helt. Den återkommande och överlappande karaktären hos plattformens ordning kan göra det svårt att se var problem har sitt ursprung. Den specifika delen av koden eller flödet som orsakar ett dödligt fel eller överskrider styrande gränser kanske inte är grundorsaken till ett underliggande datahanteringsproblem.
Transaktionsmedvetenhet är nyckeln till att bygga automatiseringar som fungerar tillförlitligt och i stor skala med Salesforce. Detta innebär att se till att varje steg i en automatisering utformas med Knowledge om var det befinner sig i förhållande till den plattformsstyrda utförandeordningen, kan utföra sin funktion korrekt och vidarebefordra information till nästa steg korrekt.
Oavsett vilket automatiseringsverktyg du använder följer korrekt transaktionsmedvetenhet liknande mönster och kräver vanliga överväganden:
- Anta att varje automatisering kommer att ombes köras mot stora datavolymer utan föregående meddelande, när som helst. Automatiseringar bör ha vägar för att tillåta körning i sats eller i bunt (se Skalbarhet).
- Blanda inte system- och användarsammanhangsdataoperationer i samma transaktion.
- Reservera synkroniserade dataoperationer för före sammanhang och använd asynkrona operationer för alla efter sammanhangsåtgärder.
- Använd meddelanden och notiser för att undvika att skapa upplevelser i appen som kräver att en användare väntar på data baserat på resultaten av en asynkron operation.
Utöver transaktionsmedvetenhet finns en andra dimension av datahantering: att veta när logik ska utföras i olika körningssammanhang. Vanliga orsaker till att dela upp automatiseringar i olika utförandesammanhang inkluderar:
- Stor volym och/eller komplexa dataoperationer
- Att bunta operationer garanterar inte att en automatisering kommer att hantera stora datavolymer korrekt. Om volymen dataoperationer i en automatisering kommer att överskrida per transaktionsgräns måste du utföra dataoperationer med hjälp av funktionalitet som är specifik för stora datavolymer (till exempel via batch Apex eller Bulk 2.0 API). Dessa har distinkta transaktionsgränser, anpassade till stora datavolymer.
- Dataoperationer som behöver gå igenom komplexa relationshierarkier eller utföra komplexa omräkningar (exklusive formelfält) mellan poster kan lätt överskrida gränser per transaktion när de utförs i bunt. Tänk på hur "bullrig" en uppdatering av en post är, när det gäller de relaterade dataoperationer eller SOQL som behövs för att utföra efterföljande åtgärder i systemet.
- De typer av sObjects som är involverade i hela kedjan i en automatisering kan kräva att du delar upp dataoperationer i separata transaktioner för att undvika fel i blandad DML.
- Logik som behöver köras i användar- eller systemsammanhang
- Salesforce Platform tillämpar delning och synlighet i användarsammanhang. Om du behöver utföra åtgärder som sträcker sig utöver behörighetsnivåerna för användare av din automatisering måste du se till att dessa åtgärder utförs i systemsammanhang.
- Olika verktyg kommer att köras i olika sammanhang eller inte:
- Apex körs i systemsammanhang som standard. Du kan styra om och hur Apex beteenden tillämpar delningsregler på användarnivå genom att använda delningsnyckelord i en Apex klassdefinition.
- Flödet har inget enskilt standardbeteende. Ett flöde körs i användar- eller systemsammanhang baserat på hur flödet startas. Du har alternativet att tillämpa delning i systemsammanhang.
- Processer (det vill säga automatiseringar byggda med Processbyggaren) körs i systemsammanhang utan delningsöverväganden. (Notera: Vi rekommenderar att bygga automatiseringar med låg kod med Flöde.
- Logik som behöver köras asynkront
- Externa systemåtgärder - Synkrona anrop eller åtgärder som får åtkomst till externa data inkluderas inte i några plattformsfunktioner. För att dra nytta av dessa beteenden måste du placera åtgärder som involverar externa system i separata transaktioner (med asynkrona Apex metoder, asynkrona vägar eller åberopbara åtgärder).
- Händelser och meddelanden - För att styra flödet av händelser eller meddelanden relaterade till dataoperationer (och dra nytta av beteenden för plattformsåterställning), placera alla åtgärder relaterade till meddelanden eller händelser i eftersammanhang med hjälp av asynkrona Apex metoder.
Listan över mönster och antimönster nedan visar hur korrekt (och dålig) datahantering ser ut i Salesforce-automatiseringar. Du kan använda dessa för att validera dina automatiseringsdesigner innan du bygger, eller identifiera automatiseringar som behöver omfaktoriseras för att förbättra datahanteringen.
Mer information om verktyg som är tillgängliga från Salesforce för datahantering i automatisering finns i Verktyg relevanta för automatiserade.
Felhantering är viktigt för dataintegriteten. Stark felhantering hjälper även ditt system att skala upp och åldras med mer motståndskraft.
Felaktig felhantering i automatiseringar kan leda till:
- Inkonsekvenser i poster och andra problem med dataintegritet
- Skicka felaktiga notiser till användare och andra system
- Slösa tid och resurser på manuell eller upprepad bearbetning
- Övergripande brist på trust för ett system
Felhantering i automatiseringar kräver att en process som körs ger möjlighet att tolka ett fel för information, komma åt logik om vad nästa steg ska baseras på felinformation och sedan följa rätt väg. Dessa funktioner behöver inte byggas om och om igen i all automatisering (det är ett optimeringsmönster). Istället bör varje automatisering i systemet kunna anslutas till relevanta komponenter för felhantering.
För att bygga in korrekta felhanteringskontroller i dina automatiseringar, ställ dessa frågor:
- Vad är ett "dödligt" fel?
- Vad är ett "återställningsbart" fel?
- För automatiseringar som utlöses av användaråtgärder, hur kan automatiseringen fånga upp och meddela användaren om fel innan de utför ändringar?
När du har bestämt hur du ska hantera dessa fel kan du börja bygga in effektiv felhantering i dina automatiseringar. Listan över mönster och antimönster nedan visar hur korrekt (och dålig) felhantering ser ut i en Salesforce-automatisering. Du kan använda dessa för att validera dina automatiseringsdesigner innan du bygger, eller identifiera automatiseringar som behöver omfaktoriseras för att förbättra felhanteringen.
Mer information om verktyg som är tillgängliga från Salesforce för felhantering finns i Verktyg relevanta för automatiserad hantering.
Följande tabell visar ett urval av mönster att leta efter (eller bygga) i din organisation och antimönster att undvika eller rikta in sig på för att åtgärda.
✨ Upptäck fler mönster för dataintegritet i Mönster & Anti-Mattern Explorer.
| Mönster | Anti-Patterns | |
|---|---|---|
| Datahantering | I din dataordbok:
- Fältnivådata och prioriteringslogik för alla datakällor och datasjöobjekt finns - Fältmappning från datasjöobjekt till datamodellobjekt finns |
I din dataordbok:
- Fältnivådata och prioriteringslogik för datakällor och datasjöobjekt inkluderas inte - Fältmappning från datasjöobjekt till datamodellobjekt inkluderas inte |
| I din Apex:
- Alla synkrona DML-uttryck eller databasklassmetoder utförs innan utlösare körs - Asynkrona Apex åberopningar använder köer för att "kedja" komplex DML över transaktioner - Batch Apex används uteslutande för stora datavolymer - @future Apex används inte eller används sparsamt, för anrop eller systemobjekt-DML |
I din Apex:
- DML-uttryck visas regelbundet i kod som kommer att åberopas efter utlösarsammanhang - Asynkrona Apex används sällan - Asynkrona Apex funktioner används godtyckligt, inklusive: -- Framtida metoder och köbara Apex används inkonsekvent eller utbytbart - Databasoperationer har inte tydlig, konsekvent logik för att skicka körning till Apex i sats vid behov |
|
| I flöde:
- Alla flöden som startas i användarsammanhang abstrakt alla systemsammanhangstransaktioner till underflöden, som konsekvent placeras efter ett pauselement, för att skapa en ny transaktion - Komplexa sekvenser av relaterade dataoperationer skapas med Orchestrator (istället för att åberopa flera underflöden inom ett monolitiskt flöde) - Alla postutlösta flöden har utlösarordervärden ifyllda - Flöden som involverar externa systemanrop eller processer som körs länge använder asynkrona vägar |
I flöde:
- Stora, monolitiska flöden försöker koordinera komplexa sekvenser av relaterade dataoperationer (med eller utan underflöden) - Postutlösta flöden använder inte utlösarorderattribut alls eller använder inte utlösarordervärden konsekvent - Asynkrona vägar används inte konsekvent eller alls |
|
| I din organisation:
- Avstämningsregler för identitetslösning följer prioriteringslogiken i din dataordbok. |
I din organisation:
- Avstämningsregler för identitetslösning följer inte prioriteringslogik i dataordlistan. |
|
| Felhantering | I Apex:
- Kod omger alla DML, SOQL, anrop och andra viktiga processteg i försök-fångst block
- Egna undantag används för att skapa avancerade felmeddelanden och logik - I asynkrona och masssammanhang används databasklassmetoder istället för DML - Databasklassmetoder kan endast användas för alla dataoperationer (istället för DML) |
I Apex:
- DML, SOQL, anrop eller andra viktiga processteg är inte konsekvent inbäddade i försöksfångstblock
- System.debug uttalanden visas i produktionskod (och kommenteras inte ut)
- Inga databasklassmetoder används - Dataoperationer görs uteslutande med DML |
| I Lightning-webbkomponenter (LWC):
- JavaScript omger alla dataoperationer och viktiga processteg i om () / annars om () block
- Alla @wire funktioner använder data och felegenskaper som tillhandahålls av API
- Alla om (fel) / annan om (fel) uttalanden innehåller logik för att bearbeta fel och ge informativa meddelanden |
I LWC:
- JavaScript används inte konsekvent om () / annan om () blockerar med dataoperationer eller kritiska processteg
- @wire-funktioner använder inte data- och felegenskaper som tillhandahålls av API (eller använder dem inte konsekvent)
- Om det används alls, om (fel) / annan om (fel) uttalanden inte faktiskt innehåller logik för att bearbeta fel och ger användbara felmeddelanden |
|
| I Aura:
- JavaScript omger alla dataoperationer och viktiga processteg i försök-fångst block
- Inom försök-fångstblock används inbyggt JavaScript fel i kastuttryck (ingen användning av $A.error())
- All fellogik som går att återställa visas i fångstrapporter och ger tydliga användarmeddelanden |
I Aura:
- JavaScript omger inte konsekvent dataoperationer och viktiga processteg i försöksfångstblock
- Komponenter använder $A.error()
- Logik för fel som går att återställa visas inte alltid i fångstrapporter och felmeddelanden till användare är inte tydliga |
|
| I flöde:
- Skärmflöden använder konsekvent felanslutare för att visa fel för användare - Egna felmeddelanden är konfigurerade för fel som visas på skärmen - Flöden med dataoperationer, anrop och annan viktig bearbetningslogik har felvägar för alla nyckelåtgärder |
I flöde:
- Flöden använder inte felvägar konsekvent eller alls - Egna felmeddelanden används inte, så användare ser standardmeddelandet "Ett ohanterat fel har inträffat i detta flöde" |
Begreppet verksamhetsvärde, i automatiseringssammanhang, handlar om hur väl processer skapar mätbar, positiv påverkan för affärsintressenter. Det bästa är om processautomatisering låter användare lägga mindre tid på repetitiva uppgifter med lågt värde. Det hjälper även till att öka dataintegriteten genom att eliminera manuell bearbetning som kan orsaka fel. Precis som med processdesign kräver identifiering och leverans av automatiseringar som driver verkligt affärsvärde arbete utöver grundläggande upptäckter och verksamhetsanalyser.
Ibland kan det verka som att det bästa sättet att leverera värde till verksamheten är att helt enkelt automatisera varje process som begärs av en företagsanvändare, antingen i den ordning de visas i din eftersläpning (eller ärendekö) eller baserat på politiska faktorer i din organisation. Detta kan leda till två relaterade problem: bygga automatiseringar i en suboptimal ordning och bygga fel automatiseringar helt och hållet. Det första problemet, dålig prioritering, förhindrar processer med högt värde från att implementeras när de borde, vilket kan sakta ner tillväxten. Det andra problemet, att bygga fel automatiseringar, försenar inte bara leveransen av automatiseringar med högt värde, det leder även till fel använd tid, onödiga kostnader och ökad frustration bland leveransteam.
Du kan leverera större verksamhetsvärde genom att fokusera på nyckeltal och prioritering.
| Verktyg | Beskrivning | Effektivitet | Dataintegritet | Affärsvärde |
|---|---|---|---|---|
| Apex Batching | Batcha poster tillsammans och bearbeta dem hanterbara delar | X | X | |
| Apex framtida metoder | Kör asynkront Apex metoder i bakgrunden | X | X | |
| Apex köer | Lägg till Apex jobb i en kö och bevaka dem | X | X | |
| Apex Scheduler | Kör asynkront Apex klasser vid specificerade tidpunkter | X | X | |
| Godkännanden | Specificera de steg som behövs för att godkänna poster | X | X | |
| Asynchronous Apex | Kör Apex kod asynkront | X | X | |
| Automatiserade åtgärder | Utföra fältuppdateringar, e-postutskick och andra åtgärder i bakgrunden | X | X | |
| Einstein Next Best Action | Visa rätt rekommendationer för rätt personer vid rätt tidpunkt | X | X | |
| E-postvarning | Skapa och skicka automatiserade e-postmeddelanden | X | X | |
| Omflyttningsåtgärder | Specificera automatiserade åtgärder att vidta för kundcaseomflyttningar | X | X | |
| Fältuppdatering | Uppdatera fältvärden baserat på automatisering | X | X | |
| Flow Builder | Bygg automatiseringar med ett peka-och-klicka-gränssnitt | X | X | |
| Flödestillägg | Komma åt lagrade variabler som komponentinmatningar i flöden | X | ||
| Flödesmallbibliotek | Använd mallar för att utforma branschspecifika flöden | X | X | |
| Flödesutlösare | Automatisera komplexa verksamhetsprocesser | X | ||
| Åberopbara åtgärder | Lägg till Apex funktionalitet i flöden | X | X | |
| Orkestratör | Skapa och hantera automatiseringar i flera steg | X | X | |
| Utgående meddelande | Skicka information från en automatiserad process med kvitton och försök | X | ||
| Publicera plattformshändelser med flöde | Publicera händelser via användarinteraktioner och automatiseringar | X | ||
| Frågeoptimerare | Använd selektivitet och index för att förbättra prestandan för sökfrågor, rapporter och listvyer | X | X | |
| Salesforce-flöde | Skapa deklarativa processautomatiseringar med Flow Builder | X | X | |
| Skicka notiser med flöden | Skicka meddelanden över SMS, WhatsApp eller Facebook Messenger | X | X | |
| Skicka notiser med processer | Skicka meddelanden över SMS, WhatsApp eller Facebook Messenger | X | X | |
| Ändrare för SOQL FÖR UPPDATERING | Lås poster för att förhindra raceförhållanden och trådsäkerhetsproblem | X | ||
| Strategy Builder | Identifiera rekommendationer att visa på postsidor | X | X | |
| Underflöden | Minska flödeskomplexitet genom återanvändning | X | ||
| Prenumerera på plattformshändelser med flöde | Ta emot meddelanden publicerade genom automatiseringar | X | ||
| Uppgiftsåtgärder | Bestäm tilldelningsdetaljer som ges till en användare av en automatisering | X |
| Resurs | Beskrivning | Effektivitet | Dataintegritet | Affärsvärde |
|---|---|---|---|---|
| Apex styrande och gränser | Få reda på hur Apex runtimemotor tillämpar gränser | X | X | |
| Batchhanteringsresurser | Skapa, hantera, schemalägg och övervaka batchjobb | X | X | |
| Rekommenderade metoder för SOQL och SOSL | Förbättra sökfrågeprestandan för program med stora datavolymer | X | ||
| Designstandardmall | Skapa designstandarder för din organisation | X | X | X |
| Flödesbuntning i transaktioner | Utforma flöden för att arbeta mot samlingar | X | X | |
| Att tänka på vad gäller flödesdata | Lär dig mer om schemautlösta flöden för batchdata | X | X | |
| Flödesfelsökning | Testa och felsök flöden | X | ||
| Hur begäranden behandlas | Få reda på hur Salesforce bearbetar jobb snabbt och minimerar fel | X | X | |
| KPI-kalkylbladmall | Bestäm affärsvärdet för ett visst mått | X | X | |
| Göra anrop till externa system från åberopbara åtgärder | Anropa externa system från ett flöde med Apex | X | ||
| Blandade DML-operationer | Känn till vilka sObjects som kan användas tillsammans för DML i samma transaktion | X | X | |
| Utförandeordning | Förstå ordningen på händelser för infogningar, uppdateringar och infogningar | X | X | |
| Vanliga frågor om frågeplan | Optimera sökfrågor som involverar stora datavolymer | X | X | |
| Att tänka på vad gäller schemautlöst flöde | Förstå speciella beteenden för schemautlösta flöden | X | ||
| Transaktionskontroll | Skapa en sparpunkt som specificerar det aktuella databasläget | X | X | |
| Vad händer om ett flöde misslyckas? | Förstå felhantering i flöden | X | X | |
| Guide för rekommenderade metoder för arbetsflödesautomatisering | Kom igång med Salesforce-automatisering | X | X | X |
| Arbeta med mycket stora SOQL-frågor | Skriv mer effektiva SOQL-frågor | X |
Hjälp oss hålla Salesforce Well-Architected relevant för dig. Gå igenom vår undersökning för att ge feedback om detta innehåll och berätta vad du vill se härnäst.