Lees hier meer over onze updateschema's.
Systemen laten geautomatiseerd gedrag zien door het bedrijf in staat te stellen de belangrijkste doelen en doelstellingen sneller en op schaal te behalen. Gezonde automatisering zorgt ervoor dat gebruikers zich kunnen richten op hoogwaardig werk en reduceert tijd die ze kwijt zijn aan repetitieve, handmatige taken of complexe gegevensinvoer.
Automatisering betekent meestal het vertalen van bedrijfsprocessen van het ene formulier naar het andere: van papieren formulier naar digitaal formulier, van een oud systeem naar een nieuw. Bij elke vertaling van een bedrijfsproces hoort een mogelijkheid voor transformatie.
Transformatie gaat niet over het gebruik van nieuwe technologieën om verstorende en verwarrende veranderingen voor gebruikers te introduceren. Transformatie gaat over het creëren van eenvoudigere manieren om werk gedaan te krijgen, zodat bedrijven zonder wrijving kunnen groeien en zakelijke gebruikers zich meer kunnen concentreren op wat echt belangrijk is voor hun belanghebbenden. Vanuit architecturaal oogpunt omvat dit het identificeren van taken die volledig kunnen worden geëlimineerd of automatisch kunnen worden afgehandeld. Het vereist een duidelijke verbinding tussen de manier waarop technologie wordt gebruikt en de meetbare impact ervan op het bedrijf.
Iets belangrijks om te weten over automatisering met Salesforce: het kan worden gedaan met een verscheidenheid aan tools, met behulp van programmatische en declaratieve vaardighedensets. Automatiseringen ontwerpen die goed zijn ontworpen, gaat niet over de keuze om te bouwen met slechts één automatiseringstool. Het gaat om het gebruik van benaderingen die consistent en voorspelbaar zijn, en teams in staat stellen om de automatiseringen die u ontwerpt, te ontwikkelen, testen, implementeren en onderhouden. Uw automatiseringen moeten een zo onderhoudbaar en leesbaar mogelijke vorm aannemen.
Deze sectie behandelt de manier waarop u automatiseringen ontwerpt en refactoren aanbrengt om bedrijven in staat te stellen de belangrijkste doelstellingen sneller en op schaal te behalen. U kunt de architectuur van uw automatiseringen in Salesforce verbeteren door u te richten op efficiëntie en gegevensintegriteit.
Efficiëntie creëren in uw automatiseringen gaat niet over het plichtsgetrouw opnieuw creëren van business as usual met Salesforce-technologieën. Het gaat om een diepgaand inzicht in de belangrijkste meetgegevens en bedrijfsuitkomsten waarvoor teams verantwoordelijk zijn voor vergaderingen of bijhouden, en om een stap terug doen om functionele eenheden te zien binnen en binnen het werk dat u automatiseert. Het gaat om het identificeren van hoe u met uw automatiseringen patronen kunt maken die het bedrijf in staat stellen effectiever en sneller te werken, op schaal.
Efficiënte automatiseringslogica zorgt ervoor dat uw systemen:
- Schaalbaarder en waardevoller voor het bedrijf
- Nuttiger voor gebruikers
- Meer aanpasbaar en in staat om te voldoen aan veranderende bedrijfsbehoeften
U kunt de efficiëntie van uw automatiseringen verbeteren door middel van procesontwerp en operationele logica.
Procesontwerp omvat het definiëren van de manieren waarop werk wordt gedaan. Het bouwen van echt efficiënte en effectieve processen betekent dat uw ontwerpen niet alleen de huidige manieren van werken repliceren. Het identificeren en verwijderen van ineffectieve of onduidelijke stappen is essentieel. Geoptimaliseerde processen moeten meetbare bedrijfswaarde creëren (zie KPI's) zonder onnodige stappen. Onduidelijke of onnodige stappen zullen waarschijnlijk leiden tot technische schulden en resulteren in ononderhoudbare automatiseringen.
Vaak valt de verantwoordelijkheid voor het ontdekken en documenteren van bedrijfsprocessen onder de verantwoordelijkheid van een bedrijfsanalist of zelfs een systeembeheerder. Architecten zijn verantwoordelijk voor de samenwerking met deze leden van uw team om ervoor te zorgen dat uw procesontwerpen technisch gezond en goed gestructureerd zijn. Door uw Knowledge van het Salesforce-platform zo vroeg mogelijk toe te passen, kan uw team processen identificeren die moeten worden gestroomlijnd door automatisering of processen die moeten worden gewijzigd om dure aanpassingen te voorkomen.
Als u geoptimaliseerde processen wilt samenstellen voor Salesforce, kunt u het volgende overwegen:
-
Definieer processen grondig. Processen met onduidelijke doeleinden of onduidelijke definities worden eerder verkeerd geïnterpreteerd tijdens het ontwerpen. Dit leidt tot gebrekkige ontwerpen die zijn gebaseerd op aannames, wat zal resulteren in onjuiste of inefficiënte automatiseringen. Zorg ervoor dat de bedrijfsprocessen die u wilt automatiseren, voldoen aan de volgende normen:
- Beperkt tot één specifieke functie (zie Functionele eenheden)
- Heeft duidelijk gedefinieerde, meetbare outputs (zie Bedrijfswaarde)
- Heeft duidelijk gedefinieerde in- en uitgangen
-
Maak processtappen duidelijk.* Hoewel het soms verleidelijk kan zijn om extra stappen toe te voegen die "in de toekomst nuttig kunnen zijn", is dit nooit een goede benadering. Elke stap in een automatisering is relevant voor de uitkomst van het totale proces. Zorg ervoor dat elke processtap de volgende kenmerken heeft:
- Voert een specifieke, fijnmazige taak uit (zie samenstelbaar)
- Vereist voor het proces om de gedefinieerde uitvoer ervan te genereren (verwijder alle niet-essentiële stappen)
- Kan worden voltooid met behulp van een minimaal aantal resources
- Maakt gebruik van bestaande systeemgegevens in plaats van gebruikersinvoer te vragen waar mogelijk (Zie Betrokkenheid)
- Biedt invoeropties die gebruikers kunnen begrijpen zonder te hoeven weten hoe de onderliggende systemen werken (Zie nuttig)
De onderstaande lijst met patronen en antipatronen toont hoe goede (en slechte) optimalisering eruitziet in een Salesforce-organisatie. U kunt deze gebruiken om uw automatiseringsontwerpen te valideren voordat u gaat samenstellen, of om automatiseringen te identificeren die verder moeten worden geoptimaliseerd.
Zie Tools Relevant voor Automated voor meer informatie over procesautomatiseringstools die beschikbaar zijn vanuit Salesforce.
Operationele logica gaat over hoe effectief een proces wordt vertaald van het ontwerp naar een feitelijke implementatie. Automatiseringen met een sterke operationele logica blijven goed presteren, ongeacht pieken in transactievolumes of het aantal gelijktijdige exemplaren dat wordt uitgevoerd. Logisch verantwoorde automatiseringen helpen bedrijven om gemakkelijker op te schalen om op hogere niveaus van de vraag te werken. Het inbouwen van sterke operationele logica in uw automatiseringen is direct gerelateerd aan de algemene betrouwbaarheid van uw systeem.
Automatiseringen die niet effectief werken, bieden slechte gebruikers- en klantervaringen, wat leidt tot zowel potentieel omzetverlies als verlies van Customer Trust. Ze hebben ook hogere onderhoudskosten en kunnen bottlenecks worden die gerelateerde processen vertragen, wat bijdraagt aan algemene problemen met systeemprestaties.
Als u effectieve operationele logica wilt maken in automatiseringen, overweegt u het volgende:
- Zorg ervoor dat iedereen die automatiseringen maakt, weet hoe het moet. Slechte ontwerpkeuzes kunnen worden gemaakt met elk soort automatiseringstool. Code is niet minder gevoelig voor fouten of slechte implementatiekeuzen dan op klikken gebaseerde tools. Het gebruik van hard-coded verwijzings-ID's is bijvoorbeeld een antipatroon dat zowel in Flow als in code wordt weergegeven. Op klikken gebaseerde tools moeten niet worden beschouwd als een licentie waarmee iedereen een automatisering kan vrijgeven in productie. Elk teamlid dat een automatisering maakt, moet weten hoe deze op de juiste manier moet worden samengesteld. Zie leesbaarheids- en ontwerpnormen voor meer informatie over de manier waarop u effectieve normen definieert en toepast in uw systemen.
- Documenteer alle uitvoeringstrajecten duidelijk. Toegenomen gebruik van automatiseringen vergroot niet alleen de potentiële gegevensvolumes, maar ook de ongeplande aanroepcontexten. U moet begrijpen hoe verschillende automatiseringen kunnen worden aangeroepen en ervoor zorgen dat de juiste transactiebesturingselementen (zie Gegevensverwerking) worden weergegeven in alle automatiseringen die meerdere invoerpunten hebben. Schermstromen worden bijvoorbeeld niet uitgevoerd met bulkgegevens, maar Apex triggers en geactiveerde (en automatisch gestarte) stromen waarschijnlijk wel. Het duidelijk documenteren van geplande en potentiële uitvoeringstrajecten voor automatiseringen is een belangrijk aspect om te begrijpen welke logische voorwaarden u tijdens de implementatie moet hanteren.
- Alle gegevensbewerkingen (inclusief SOQL) in bulk maken. Elke gegevensbewerking (invoegen, bijwerken, enzovoort) moet worden uitgevoerd op basis van verzamelingen. Altijd. Zonder uitzonderingen. Dit is wat wordt bedoeld met “bulkifying”-bewerkingen. Hoewel het platform singleton-gegevensbewerkingen kan ondersteunen, moet u nooit toestaan dat singleton-patronen worden geïmplementeerd.
- Gebruik SOSL voor zoekbewerkingen. Er is een misvatting dat gegevensbewerkingen niet kunnen worden uitgevoerd op records die via SOSL worden geretourneerd. Het klopt dat DML niet rechtstreeks kan worden aangeroepen tegen SOSL-resultaten, maar code kan SOSL-resultaten parseren en een verzameling maken waarnaar kan worden verwezen in DML- of Database-klassenmethoden. De belangrijkste verschillen tussen SOSL en SOQL zijn de retourtypen voor elk type en de manier waarop ze reageren op gegeneraliseerde of jokerzoekopdrachten. SOSL kan werken tegen verschillende sObject-typen (vandaar dat het retourtype anders is) en het kan zoekopdrachten met jokertekens en gegeneraliseerde tekenreeksen afhandelen met betere prestaties dan SOQL.
- Behandel SOQL als een gegevensbewerking. Gebruik SOQL niet om records te zoeken, maar om uw gegevensbewerkingen te verfijnen. SOQL en gegevensbewerkingen kunnen een zeer vergelijkbare invloed hebben op de prestaties van de onderliggende relationele database. SOQL kan zelfs een expliciete DML-indicator doorgeven die databaserijen vergrendelt in afwachting van gegevensbewerkingen. Als u schaalbare automatiseringen wilt maken, moet u SOQL met soortgelijke zorgvuldigheid behandelen: gebruik SOQL niet zonder zeer specifieke, goed gevormde selectiecriteria, sta geen externe veldverwijzingen toe en verlang zorgvuldige overeenkomsten tussen gegevenstypen en filterinvoer in
WHERE. Uw code moet ook de juiste besturingselementen hebben om ervoor te zorgen dat een query nooit wordt uitgevoerd in contexten zonder bulk of op basis van null- of blanco filtercriteria. - Houd synchrone bewerkingen strikt gericht op werk dat een gebruiker in realtime helpt. Identificeer tijdens uw procesoptimalisering logica die relevant is voor wat gebruikers in realtime of vrijwel realtime moeten doen, en wat kan worden uitgesteld tot een asynchrone (asynchrone) transactie. Zie Gegevensverwerking voor meer overwegingen bij het ontwerpen van synchronisatie-/asynchrone bewerkingen.
De onderstaande lijst met patronen en antipatronen toont hoe de juiste (en slechte) operationele logica eruitziet in Salesforce-automatisering. U kunt deze gebruiken om uw automatiseringsontwerpen te valideren voordat u gaat samenstellen, of om automatiseringen te identificeren die verder moeten worden geoptimaliseerd.
Zie Tools Relevant to Automated voor meer informatie over tools die beschikbaar zijn vanuit Salesforce en die u kunnen helpen bij het plannen van schaal.
Automatiserings-KPI's meten de impact van een automatisering in een tijdsverloop. Zonder deze tools kunt u niet zien of een automatisering echt bedrijfswaarde toevoegt of onbedoelde complexiteit voor uw gebruikers veroorzaakt. Elke automatisering die u samenstelt, moet zijn gekoppeld aan een duidelijke, meetbare set KPI's.
Goede KPI's worden gedefinieerd door een meetbare waarde in combinatie met een gekoppeld tijdsbestek. Voorbeelden omvatten:
- [X-getal] bespaarde werkuren per maand
- Verwerkingsfouten door handmatige gegevensinvoer verminderd met [Y%] per week
Zodra u duidelijke, meetbare KPI's hebt, moet u ook begrijpen of en hoe een automatisering in Salesforce gegevens genereert die relevant zijn voor rapportage over die KPI's.
De onderstaande lijst met patronen en antipatronen toont hoe goede (en slechte) KPI's eruitzien als het gaat om Salesforce-automatiseringen. U kunt deze gebruiken om uw bestaande KPI's te valideren of om te bepalen waar u KPI's beter moet identificeren voordat u gaat samenstellen.
Zie Tools Relevant to Automated voor meer informatie over tools die beschikbaar zijn vanuit Salesforce voor hulp bij KPI's.
De volgende tabel toont een selectie van patronen die u in uw organisatie kunt zoeken (of samenstellen) en antipatronen die u kunt vermijden of die u kunt gebruiken voor herstel.
✨ Ontdek meer patronen voor efficiëntie in de Patroon & Anti-Patroon Explorer.
| Patronen | Antipatronen | |
|---|---|---|
| Process Design | In uw organisatie:
- Elke stroom dient een enkel, specifiek doel - Elke stap voert een specifieke, fijnmazige taak uit - Stromen zijn georganiseerd in een hiërarchische structuur die bestaat uit een hoofdstroom en ondersteunende substromen - Alle gebruikersinvoer heeft een duidelijk doel binnen de stroom - Gebruikers worden alleen gevraagd om gegevens te verstrekken wanneer bestaande systeemgegevens niet kunnen worden gebruikt |
In uw organisatie:
- Stromen dienen meerdere doelen en vereisen extra invoer om context te bieden - Stromen vereisen invoer waarvan de gegevens niet worden gebruikt - Groepen gerelateerde stappen bevatten functionaliteit die overlapt met groepen stappen in andere stromen - Stromen vragen om gebruikersinvoer wanneer opgeslagen gegevens in plaats daarvan kunnen worden gebruikt |
| In Apex:
- Elke klasse dient een enkel, specifiek doel - Elke methode voert een specifieke, fijnmazige taak uit - Alle invoervariabelen hebben een duidelijk doel binnen de klasse - Code-uitvoering vereist een minimaal aantal resources |
In Apex:
- Klassen dienen meerdere doelen - Methoden voeren meerdere taken uit of methoden voeren taken uit die niet overeenkomen met het aangegeven doel van de klasse waarvan ze deel uitmaken - Invoervariabelen worden niet daadwerkelijk gebruikt in methoden - Methoden halen onnodig gegevens op uit de database of uit externe systemen |
|
| Operationele logica | In stroom:
- Geen variabelen verwijzen naar hard-coded waarden (voor recordtypen, gebruikers, enz.) - Alle automatisch gestarte stromen en processen gebruiken beslissings- en/of onderbrekingselementen om invoercriteria te evalueren en oneindige lussen of uitvoeringen voor grote gegevensvolumes te voorkomen - Stromen (inclusief processen) geven logica door aan Apex in contexten met grote gegevensvolumes - Substromen worden gebruikt voor de secties van een proces die moeten worden hergebruikt binnen het bedrijf |
In stroom:
- Variabelen hebben hard-coded waarden - Stromen (inclusief processen) moeten handmatig worden gedeactiveerd voordat bulkgegevens worden geladen - Stromen (inclusief processen) activeren "onverwerkte uitzondering" kennisgevingen - Zelfs eenvoudige stromen veroorzaken regelmatig fouten met betrekking tot beheerlimieten - Delen van een stroom worden herhaald tussen stromen in plaats van substromen te gebruiken |
| In Apex:
- Geen variabelen verwijzen naar hard-coded waarden (voor recordtypen, gebruikers, enz.) - Alle jokertekencriteria worden weergegeven in SOSL - SOQL is verpakt in try-catch
- Er wordt geen SOQL weergegeven binnen een lus - SOQL-instructies zijn selectief, waaronder: -- geen gebruik van LIKE vergelijkingen of gedeeltelijke tekstvergelijkingen
-- vergelijkingsoperatoren gebruiken positieve logica (d.w.z. INCLUSIEF, IN) als primaire of alleen logica
-- gebruik van = NULL, != NULL is zeldzaam en/of volgt altijd een positieve vergelijkingsoperator
-- er worden geen LIMIT 1-instructies weergegeven
-- geen gebruik van ALLE RIJEN trefwoord
| In Apex:
- Variabelen hebben hard-coded waarden - SOSL wordt zelden of niet consistent gebruikt voor jokerteken selectiecriteria - SOQL is niet verpakt in try-catch
- SOQL wordt weergegeven binnen lussen - SOQL-instructies zijn niet-selectief, waaronder: -- LIKE en jokerfiltercriteria worden weergegeven
-- vergelijkingen met behulp van criteria NOT, NOT IN worden gebruikt als de primaire of enige vergelijkingsoperator
-- = NULL, != NULL criteria worden gebruikt als de primaire of enige vergelijkingsoperator
-- LIMIET 1 instructies worden weergegeven
-- ALLE RIJEN trefwoord wordt gebruikt
| |
| In uw ontwerpnormen en documentatie:
- Geplande en potentiële uitvoeringstrajecten voor automatiseringen worden duidelijk beschreven - De gebruikscases voor synchrone en asynchrone bewerkingen binnen automatiseringen worden duidelijk beschreven als onderdeel van ontwerpnormen |
In uw ontwerpnormen en documentatie:
- Automatiseringsaanroep is niet gedocumenteerd - Gebruikscases voor synchrone en asynchrone bewerkingen worden niet behandeld |
|
| KPIs | In uw documentatie:
- Outputs voor elke automatisering zijn meetbaar en tijdgebonden - Verantwoordelijke belanghebbenden worden vermeld voor elke KPI |
In uw documentatie:
- KPI's bestaan niet voor automatiseringen of hebben onduidelijke tijdsbestekken voor metingen - KPI's bestaan zonder verantwoordelijke belanghebbenden |
| Binnen rapporten en dashboards:
- Alle meetgegevens gerelateerd aan KPI's zijn opgenomen in minstens één rapport of dashboard |
Binnen rapporten en dashboards:
- KPI rapportage bestaat niet of rapporten ontbreken meetgegevens gerelateerd aan sommige KPI's |
Gegevensintegriteit gaat over hoe goed een systeem nauwkeurige en volledige gegevens onderhoudt. Het Salesforce Platform onderhoudt robuuste, ingebouwde verwerkingslogica die is ontworpen om de integriteit te beschermen van gegevens die zijn opgeslagen in de relationele database van een afzonderlijke organisatie. Een van de basisprincipes van het samenstellen van gezonde automatiseringen is inzicht in de ingebouwde werking van gegevensintegriteit van Salesforce en ervoor zorgen dat al uw automatiseringsontwerpen overeenkomen met (en erkenning geven voor) deze werkingen.
De grootste anti-patronen in automatiseringsontwerp ontstaan doordat de krachtige gegevensintegriteitsservices die Salesforce al biedt, niet worden herkend en er geen standaardfunctionaliteit wordt gebruikt die deze services benut. Als u automatiseringen wilt ontwerpen die de gegevensintegriteit beschermen en onderhouden, moet u vertrouwd zijn met de fundamentele werkingsvolgorde van Salesforce.
Als u de gegevensintegriteit goed uitbreidt naar uw aangepaste automatiseringen, kan uw systeem:
- werken tegen bulk- en grote gegevensvolumes zonder handmatige tussenkomst;
- beveiligingsbeleidsvormen voor gebruikers afdwingen indien nodig en overschakelen naar systeemcontext indien nodig;
- fouten tegenkomen tijdens run-time en voorspelbare herstel- of fouttrajecten volgen.
U kunt betere gegevensintegriteit in uw Salesforce-automatiseringen inbouwen door de juiste gegevensverwerking en foutafhandeling.
De eerste stap voor het ontwerpen voor een juiste gegevensverwerking in Salesforce is inzicht in de manier waarop het platform voor meerdere belanghebbenden transacties afhandelt. Dit omvat inzicht in de ingebouwde volgorde van uitvoering die het Salesforce Platform gebruikt om gegevensintegriteit te waarborgen tijdens gegevensbewerkingen op recordniveau. Zie Databasemanipulatie in Salesforce Architecture Basics voor meer informatie over de gevolgen van deze werking.
Slechte gegevensverwerking in uw automatiseringen kan een van de moeilijkste antipatronen zijn om te identificeren en volledig te verhelpen. De terugkerende en overlappende aard van de uitvoeringsvolgorde van het platform kan het moeilijk maken om te zien waar problemen vandaan komen. De specifieke sectie code of stroom die een fatale fout veroorzaakt of beheerlimieten overschrijdt, is mogelijk niet de hoofdoorzaak van een onderliggend probleem met gegevensverwerking.
Transactiebewustzijn is de sleutel tot gebouwautomatiseringen die betrouwbaar en op schaal presteren met Salesforce. Dit betekent ervoor zorgen dat elke stap in een automatisering is ontworpen met de Knowledge van waar deze zich bevindt ten opzichte van de platformgestuurde volgorde van uitvoering, zijn functie correct kan uitvoeren en informatie correct doorgeeft aan de volgende stap.
Ongeacht de automatiseringstool die u gebruikt, volgt een goed transactiebewustzijn soortgelijke patronen en vereist veelvoorkomende overwegingen:
- Stel dat elke automatisering wordt gevraagd om op elk moment zonder kennisgeving te worden uitgevoerd tegen grote gegevensvolumes. Automatiseringen moeten paden hebben om batch- of bulkuitvoering mogelijk te maken (zie Schaalbaarheid).
- Gebruik geen gegevensbewerkingen in systeem- en gebruikerscontext in dezelfde transactie.
- Reserveer synchronisatiegegevensbewerkingen voor vóór contexten en gebruik asynchrone bewerkingen voor alle acties na context.
- Gebruik berichtenverkeer en kennisgevingen om te voorkomen dat in-app omgevingen worden gemaakt waarvoor een gebruiker moet wachten op gegevens op basis van de resultaten van een asynchrone bewerking.
Naast transactiebewustzijn is er een tweede dimensie aan gegevensverwerking: weten wanneer logica moet worden uitgevoerd in verschillende uitvoeringscontexten. Veel voorkomende redenen om automatiseringen op te splitsen in verschillende uitvoeringscontexten zijn:
- Groot volume en/of complexe gegevensbewerkingen
- Bulkbewerkingen garanderen niet dat een automatisering grote gegevensvolumes correct afhandelt. Als het volume van gegevensbewerkingen binnen in een automatisering de transactielimieten overschrijdt, moet u gegevensbewerkingen uitvoeren met behulp van functionaliteit die specifiek is voor grote gegevensvolumes (zoals via batch Apex of de Bulk 2.0 API). Deze hebben verschillende transactielimieten, geschikt voor grote gegevensvolumes.
- Gegevensbewerkingen die complexe relatiehiërarchieën moeten doorlopen of complexe herberekeningen (met uitzondering van formulevelden) moeten uitvoeren binnen records, kunnen gemakkelijk transactielimieten overschrijden wanneer ze in bulk worden uitgevoerd. Denk aan hoe luidruchtig een update van één record is, in termen van de bewerkingen van gerelateerde gegevens of SOQL die nodig zijn voor het voltooien van daaropvolgende acties in het systeem.
- De typen sObjects die betrokken zijn bij de gehele keten van een automatisering, kunnen vereisen dat u gegevensbewerkingen splitst in afzonderlijke transacties om "gemengde DML"-fouten te voorkomen.
- Logica die moet worden uitgevoerd in gebruikers- of systeemcontext
- Het Salesforce Platform dwingt delen en zichtbaarheid in gebruikerscontext af. Als u bewerkingen moet uitvoeren die verder reiken dan de machtigingsniveaus van gebruikers van uw automatisering, moet u ervoor zorgen dat deze bewerkingen worden uitgevoerd in systeemcontext.
- Verschillende tools worden al dan niet in verschillende contexten uitgevoerd:
- Apex wordt standaard uitgevoerd in systeemcontext. U kunt bepalen of en hoe Apex werkingen regels voor delen op gebruikersniveau afdwingen door trefwoorden voor delen te gebruiken in een Apex klassedefinitie.
- Stroom heeft niet één standaardwerking. Een stroom wordt uitgevoerd in gebruikers- of systeemcontext op basis van hoe de stroom wordt gestart. U hebt de optie om delen in systeemcontext af te dwingen.
- Processen (d.w.z. automatiseringen die zijn samengesteld met Processamensteller) worden uitgevoerd in systeemcontext zonder overwegingen bij delen. (Opmerking: U wordt aangeraden om low-code automatiseringen samen te stellen met Flow.
- Logica die asynchroon moet worden uitgevoerd
- Externe systeembewerkingen - Synchrone aanroepen of acties die toegang hebben tot externe gegevens, worden niet opgenomen in terugdraaiwerkingen van platforms. Als u deze werking wilt benutten, moet u acties waarbij externe systemen zijn betrokken, in afzonderlijke transacties plaatsen (met behulp van asynchrone Apex methoden, asynchrone paden of aanroepbare acties).
- Eventing en berichtenverkeer - Om de stroom van events of berichten gerelateerd aan gegevensbewerkingen te controleren (en gebruik te maken van platform rollback-werkingen), plaatst u alle acties gerelateerd aan berichtenverkeer of events in na contexten, met behulp van asynchrone Apex methoden.
De onderstaande lijst met patronen en antipatronen toont hoe een goede (en slechte) gegevensverwerking eruitziet in Salesforce-automatiseringen. U kunt deze gebruiken om uw automatiseringsontwerpen te valideren voordat u gaat samenstellen, of om automatiseringen te identificeren die moeten worden aangepast om de gegevensverwerking te verbeteren.
Zie Tools Relevant to Automated voor meer informatie over tools die beschikbaar zijn vanuit Salesforce voor gegevensverwerking in automatisering.
Foutenafhandeling is essentieel voor gegevensintegriteit. Sterke foutafhandeling helpt ook om uw systeem op te schalen en ouder te maken, met meer veerkracht.
Onjuiste foutafhandeling in automatiseringen kan leiden tot:
- Recordinconsistenties en andere problemen met gegevensintegriteit
- Onjuiste kennisgevingen verzenden naar gebruikers en andere systemen
- Tijd en resources verspillen aan handmatige of herhaalde verwerking
- Algeheel gebrek aan Trust in een systeem
Foutenafhandeling in automatiseringen vereist dat elk uitvoerend proces de mogelijkheid krijgt om een fout te parseren voor informatie, om toegang te krijgen tot logica over wat de volgende stappen moeten zijn op basis van foutinformatie en om vervolgens het juiste pad te volgen. Deze mogelijkheden hoeven niet in elke automatisering opnieuw te worden opgebouwd (dat is een optimaliseringsantipatroon). In plaats daarvan moet elke automatisering in het systeem de mogelijkheid hebben om verbinding te maken met de relevante componenten voor foutafhandeling.
Stel de volgende vragen om de juiste besturingselementen voor foutafhandeling in uw automatiseringen in te bouwen:
- Wat is een "fatale" fout?
- Wat is een "herstelbare" fout?
- Voor automatiseringen die worden geactiveerd door acties van de gebruiker, hoe kan de automatisering fouten opsporen en de gebruiker informeren voordat wordt geprobeerd om wijzigingen door te voeren?
Zodra u hebt besloten hoe u deze fouten wilt afhandelen, kunt u beginnen met het inbouwen van effectieve foutafhandeling in uw automatiseringen. De onderstaande lijst met patronen en antipatronen toont hoe een goede (en slechte) foutafhandeling eruitziet in een Salesforce-automatisering. U kunt deze gebruiken om uw automatiseringsontwerpen te valideren voordat u gaat samenstellen, of om automatiseringen te identificeren die moeten worden aangepast om de foutafhandeling te verbeteren.
Zie Tools Relevant voor Geautomatiseerd voor meer informatie over tools die beschikbaar zijn vanuit Salesforce voor foutafhandeling.
De volgende tabel toont een selectie van patronen die u in uw organisatie kunt zoeken (of samenstellen) en antipatronen die u kunt vermijden of die u kunt gebruiken voor herstel.
✨ Ontdek meer patronen voor gegevensintegriteit in de Patroon & Anti-patroon Explorer.
| Patronen | Antipatronen | |
|---|---|---|
| Gegevensverwerking | In uw gegevenswoordenlijst:
- Gegevens op veldniveau en prioriteringslogica voor alle gegevensbronnen en gegevens-lakeobjecten bestaat - Veldtoewijzing van gegevens-lakeobject naar gegevensmodelobject bestaat |
In uw gegevenswoordenlijst:
- Gegevens op veldniveau en prioriteringslogica voor gegevensbronnen en gegevens-lakeobjecten zijn niet inbegrepen - Veldtoewijzing van gegevens-lakeobjecten naar gegevensmodelobjecten is niet inbegrepen |
| In uw Apex:
- Alle synchrone DML-instructies of Databaseklassemethoden worden uitgevoerd in contexten vóór de uitvoering van de trigger - Asynchrone Apex aanroepen gebruiken wachtrijen om complexe DML over transacties heen te 'ketenen' - Batch Apex wordt uitsluitend gebruikt voor grote gegevensvolumes - @future Apex wordt niet gebruikt of spaarzaam gebruikt, voor aanroepen of systeemobject-DML |
In uw Apex:
- DML-instructies verschijnen regelmatig in code die zal worden aangeroepen in na trigger contexten - Async Apex wordt zelden gebruikt - Asynchrone Apex functies worden willekeurig gebruikt, waaronder: -- Toekomstige methoden en Apex met wachtrij worden inconsistent of onderling verwisselbaar gebruikt -- Databasebewerkingen hebben geen duidelijke, consistente logica voor het doorgeven van uitvoering aan Batch Apex wanneer dat nodig is |
|
| In stroom:
- Alle stromen die worden gestart in gebruikerscontext abstraheren alle systeemcontexttransacties naar substromen, die consistent na een element Onderbreking worden geplaatst, om een nieuwe transactie te maken - Complexe reeksen gerelateerde gegevensbewerkingen worden gemaakt met Orchestrator (in plaats van meerdere substromen aanroepen binnen een monolithische stroom) - Alle door records geactiveerde stromen hebben triggervolgordewaarden ingevuld - Stromen met externe systeemaanroepen of langlopende processen gebruiken asynchrone paden |
In stroom:
- Grote, monolithische stromen proberen complexe reeksen gerelateerde gegevensbewerkingen te coördineren (met of zonder substromen) - Door records geactiveerde stromen gebruiken helemaal geen triggervolgordekenmerken of gebruiken triggervolgordewaarden niet consistent - Asynchrone paden worden niet consistent of helemaal niet gebruikt |
|
| In uw organisatie:
- Afstemmingsregels voor Identiteitsoplossing volgen de prioriteringslogica in uw gegevenswoordenlijst |
In uw organisatie:
- Afstemmingsregels voor Identiteitsoplossing volgen geen prioriteringslogica in de gegevenswoordenlijst |
|
| Foutafhandeling | In Apex:
- Code wraps alle DML, SOQL, aanroepen en andere kritieke processtappen in try-catch blokken
- Aangepaste uitzonderingen worden gebruikt om geavanceerde foutberichten en logica te maken - In asynchrone en bulkcontexten worden databaseklassemethoden gebruikt in plaats van DML - Databaseklassemethoden mogen uitsluitend worden gebruikt voor alle gegevensbewerkingen (in plaats van DML) |
In Apex:
- DML, SOQL, aanroepen of andere kritieke processtappen zijn niet consistent verpakt in blokken voor try-catch
- System.debug instructies worden weergegeven in productiecode (en zijn niet gemarkeerd)
- Er worden geen databaseklassenmethoden gebruikt - Gegevensbewerkingen worden uitsluitend gedaan met DML |
| In Lightning Web Components (LWC):
- JavaScript wraps alle gegevensbewerkingen en kritieke processtappen in als () / anders als () blokkeert
- Alle @wire functies gebruiken gegevens en fouteigenschappen die worden geleverd door de API
- Alle indien (fout) / anders indien (fout) instructies logica bevatten om fouten te verwerken en informatieve berichten te geven |
In LWC:
- JavaScript wordt niet consistent gebruikt als () / anders als () blokkeert met gegevensbewerkingen of kritieke processtappen
- @wire functies gebruiken geen gegevens en fouteigenschappen die door de API worden geleverd (of gebruiken deze niet consistent)
- Indien überhaupt gebruikt, als (fout) / anders als (fout)instructies geen logica bevatten om fouten te verwerken en nuttige foutberichten bieden |
|
| In Aura:
- JavaScript wraps alle gegevensbewerkingen en kritieke processtappen in try-catch blokken
- Binnen try-catch blokken wordt native JavaScript Error gebruikt in throw-instructies (geen gebruik van $A.error ())
- Alle herstelbare foutlogica wordt weergegeven binnen vangstinstructies en biedt duidelijke gebruikersberichten |
In Aura:
- JavaScript verpakt gegevensbewerkingen en kritieke processtappen niet consistent in try-catchblokken
- Componenten gebruiken $A.error()
- Herstelbare foutlogica wordt niet consistent weergegeven binnen vangstverklaringen en foutberichten aan gebruikers zijn niet duidelijk |
|
| In stroom:
- Schermstromen gebruiken consistent defectenconnectoren om fouten aan gebruikers te tonen - Aangepaste foutberichten worden geconfigureerd voor fouten die op het scherm worden weergegeven - Stromen met gegevensbewerkingen, aanroepen en andere kritieke verwerkingslogica hebben foutpaden voor alle belangrijke acties |
In stroom:
- Stromen gebruiken foutpaden niet consistent of helemaal niet - Aangepaste foutberichten worden niet gebruikt, zodat gebruikers het standaardbericht "Er heeft zich een onverwerkte fout voorgedaan in deze stroom" zien |
Het concept van bedrijfswaarde, in de context van automatisering, gaat over hoe goed processen meetbare, positieve impact creëren voor zakelijke belanghebbenden. Idealiter stelt procesautomatisering gebruikers in staat om minder tijd te besteden aan repetitieve taken met een lage waarde. Het helpt ook de gegevensintegriteit te verbeteren door handmatige verwerkingsactiviteiten te elimineren die fouten kunnen veroorzaken. Net als bij Procesontwerp vereist het identificeren en leveren van automatiseringen die echte bedrijfswaarde genereren, werk dat verder gaat dan basale ontdekking en bedrijfsanalyse.
Soms lijkt het misschien de beste manier om waarde te leveren aan het bedrijf door eenvoudigweg elk proces te automatiseren dat door een zakelijke gebruiker wordt aangevraagd, hetzij in de volgorde waarin ze in uw achterstand (of wachtrij voor tickets) verschijnen, hetzij op basis van politieke factoren in uw organisatie. Dit kan leiden tot twee gerelateerde problemen: het bouwen van automatiseringen in een suboptimale volgorde en het bouwen van helemaal de verkeerde automatiseringen. Het eerste probleem, slechte prioritering, verhindert dat hoogwaardige processen worden geïmplementeerd wanneer dat zou moeten, wat de groei kan vertragen. Het tweede probleem, het samenstellen van de verkeerde automatiseringen, vertraagt niet alleen de levering van hoogwaardige automatiseringen, het leidt ook tot verkeerd uitgegeven tijd, onnodige kosten en grotere frustratie bij leveringsteams.
U kunt meer bedrijfswaarde creëren door u te richten op KPI's en prioritering.
| Tool | Beschrijving | Efficiëntie | Gegevensintegriteit | Bedrijfswaarde |
|---|---|---|---|---|
| Apex batching | Batchrecords bij elkaar en verwerk ze handelbare blokken | X | X | |
| Apex Future-methoden | Apex methoden asynchroon uitvoeren op de achtergrond | X | X | |
| Apex wachtrij | Apex taken toevoegen aan een wachtrij en deze bewaken | X | X | |
| Apex Scheduler | Apex klassen asynchroon uitvoeren op opgegeven tijden | X | X | |
| Goedkeuringen | Geef de vereiste stappen op om records goed te keuren | X | X | |
| Asynchronous Apex | Apex code asynchroon uitvoeren | X | X | |
| Geautomatiseerde acties | Veldupdates, e-mailverzendingen en andere acties op de achtergrond uitvoeren | X | X | |
| Einstein Next Best Action | Geef de juiste aanbevelingen weer aan de juiste mensen op het juiste moment | X | X | |
| E-mailwaarschuwing | Automatische e-mailberichten maken en verzenden | X | X | |
| Escaleringsacties | Geautomatiseerde acties opgeven die moeten worden ondernomen voor case-escalaties | X | X | |
| Veldupdate | Veldwaarden bijwerken op basis van automatisering | X | X | |
| Flow Builder | Automatiseringen samenstellen met een "point-and-click" interface | X | X | |
| Stroomextensies | Toegang tot opgeslagen variabelen als componentinvoer in stromen | X | ||
| Bibliotheek Stroomsjablonen | Sjablonen gebruiken om branchespecifieke stromen te ontwerpen | X | X | |
| Stroomtrigger | Complexe bedrijfsprocessen automatiseren | X | ||
| Aanroepbare acties | Apex functionaliteit toevoegen aan stromen | X | X | |
| Orkestrator | Automatiseringen in meerdere stappen maken en beheren | X | X | |
| Uitgaand bericht | Informatie verzenden vanuit een geautomatiseerd proces met ontvangstbewijzen en nieuwe pogingen | X | ||
| Platformevents publiceren met Flow | Events publiceren via gebruikersinteracties en automatiseringen | X | ||
| Queryoptimalisering | Selectiviteit en indexen gebruiken om de prestaties van query's, rapporten en lijstweergaven te verbeteren | X | X | |
| Salesforce Flow | Declaratieve procesautomatiseringen maken met Flow Builder | X | X | |
| Kennisgevingen verzenden met stromen | Berichten verzenden via sms, WhatsApp of Facebook Messenger | X | X | |
| Kennisgevingen verzenden met processen | Berichten verzenden via sms, WhatsApp of Facebook Messenger | X | X | |
| SOQL VOOR UPDATE-modifier | Records vergrendelen om raceomstandigheden en threadveiligheidsproblemen te voorkomen | X | ||
| Strategie Builder | Aanbevelingen identificeren die zichtbaar worden op recordpagina's | X | X | |
| Subflows | Complexiteit van stromen verminderen door hergebruik | X | ||
| Abonneren op platformevents met Flow | Berichten ontvangen die zijn gepubliceerd via automatiseringen | X | ||
| Taakacties | Toewijzingsdetails bepalen die door een automatisering aan een gebruiker worden gegeven | X |
| Resource | Beschrijving | Efficiëntie | Gegevensintegriteit | Bedrijfswaarde |
|---|---|---|---|---|
| Apex Uitvoeringsbeheer en -limieten | Leer hoe de Apex runtime engine limieten afdwingt | X | X | |
| Batchbeheerresources | Batchtaken maken, beheren, plannen en bewaken | X | X | |
| Best practices voor SOQL en SOSL | Queryprestaties verbeteren van toepassingen met grote gegevensvolumes | X | ||
| Standaardsjabloon ontwerpen | Ontwerpnormen maken voor uw organisatie | X | X | X |
| Bulkverwerking van stromen in transacties | Stromen ontwerpen voor gebruik met verzamelingen | X | X | |
| Overwegingen bij stroomgegevens | Meer informatie over door planning geactiveerde stromen voor batchgegevens | X | X | |
| Foutopsporing bij stroom | Stromen testen en oplossen | X | ||
| Hoe verzoeken worden verwerkt | Leer hoe Salesforce taken snel verwerkt en mislukkingen minimaliseert | X | X | |
| KPI-spreadsheetsjabloon | De bedrijfswaarde van een bepaald meetgegeven bepalen | X | X | |
| Aanroepen naar externe systemen doen vanuit aanroepbare acties | Externe systemen aanroepen vanuit een stroom met behulp van Apex | X | ||
| Gemengde DML-bewerkingen | Weten welke sObjects samen voor DML in dezelfde transactie kunnen worden gebruikt | X | X | |
| Volgorde van uitvoering | Inzicht in de volgorde van events voor invoegingen, updates en upserts | X | X | |
| Veelgestelde vragen over queryplannen | Query's optimaliseren met grote gegevensvolumes | X | X | |
| Overwegingen bij door planning geactiveerde stromen | Inzicht in de speciale werking van door planning geactiveerde stromen | X | ||
| Transactiebeheer | Een opslagpunt genereren dat de huidige databasestatus aangeeft | X | X | |
| Wat gebeurt er wanneer een stroom mislukt? | Inzicht in foutafhandeling in stromen | X | X | |
| Best Practice Guide voor werkstroomautomatisering | Aan de slag met Salesforce-automatisering | X | X | X |
| Werken met zeer grote SOQL-query's | Efficiëntere SOQL-query's schrijven | X |
Help ons Salesforce Well-Architected relevant voor u te houden; neem deel aan onze enquête om feedback te geven over deze inhoud en vertel ons wat u als volgende wilt zien.