L’Order of Execution dei diversi meccanismi di automazione è importante per capire come e quando avvengono le modifiche richieste, e per evitare di intervenire su alcune modifiche quando esse non sono ancora avvenute.
Partiamo da una infografica piuttosto completa rilasciata da Salesforce:
Quando si crea o si modifica un record, i diversi meccanismi vengono eseguiti in sequenza:
- Si carica il record originale in memoria cosí come il nuovo record (ovvero con le modifiche effettuata).
- Si eseguono le validazioni Standard (formato dei campi, lunghezza degli stessi ecc.) e Custom (Validation rules).
- Si eseguono o “before Save” record triggered-flow
- Si eseguono tutti i before trigger
- Si eseguono di nuovo tutte le validazioni
- Esecuzione Duplicate rules
- Si salva il record (ma non si effettua ancora il commit)
- Si eseguono tutti gli after trigger
- Se si tratta di un recursive-save, quindi si salva di nuovo lo stesso record, si eseguiranno di nuovo i punti elencati in precedenza fino ad un massimo di 5 volte.
- Esecuzione Assignment Rules
- Esecuzione Auto-Response rules
- Esecuzione Escalation Rules
- Esecuzione di tutte le altre automazioni senza rispettare un particolare ordine:
- Processi
- Flow lanciati da processi
- Flow lanciati da Workflow Rules
- Esecuzione “after save” record triggered Flow
- Esecuzione Entitlement Rules
- Calcolo di Roll-up summary field nei record parent (se presenti)
- Calcolo di Roll-up summary field nei record grand-parent (se presenti)
- Esecuzione Criteria-Based sharing rules
- Commit tutte le operazioni DML nel database
- si eseguono tutte le operazioni post commit come:
- Invio di email
- Esecuzione di job asincroni
- Esecuzione di rami di Flow record-triggered
Considerazioni su Order of Execution
L’ordine di esecuzione dei diversi processi può sembrare effettivamente molto complessa. È necessario conoscerla molto bene soprattutto se state studiando per ottenere la certificazione Administrator, ci sono peró dei punti molto importanti da ricordare anche per il lavoro giornaliero:
- La differenza tra save e commit: nel momento in cui il record si trova in stato “Save” è ancora possibile effettuare il rollback delle operazioni, mentre una volta che si è effettuato il commit è necessario effettuare una nuova transazione per cambiare le modifiche in precedenza. In piú dopo il commit alcune azioni non possono essere annullate, come invio di email e callout in corso.
- Prestare attenzione ai campi che si vuole interrogare durante un processo: per esempio durante un After trigger non avrò ancora aggiornato il valore dei roll-up summary field.
- Attenzione alla ricorsione nel salvataggio: evitare quando possibile.
- Potrebbe sembrare anacronistico vedere “workflow rules” e “process builder” in quanto questi strumenti sono stati ritirati (è stato ritirato il supporto). Però potrebbe essere che alcune aziende ancora non abbiano effettuato la migrazione con i flow. È sempre meglio tenere questo aspetto in considerazione
0 commenti