Glossaire Salesforce

Ordre d’exécution Salesforce

L’ordre d’exécution Salesforce est la séquence que suit la plateforme chaque fois qu’un enregistrement est inséré, mis à jour ou traité par upsert : flows avant enregistrement, déclencheurs before, validation, enregistrement proprement dit, déclencheurs after, anciens workflows, flows après enregistrement, synthèses de cumul et partage, puis commit de la transaction et traitements post-commit. Le connaître permet de prévoir ce que fait réellement un enregistrement.

Avant l’enregistrement

Salesforce charge d’abord l’enregistrement existant (ou en initialise un nouveau) et remplace ses valeurs par celles de la requête. Il exécute ensuite la validation système, qui dépend de l’origine de la requête : depuis une page de modification de l’interface, il contrôle les règles de présentation, les champs obligatoires, les formats et les longueurs ; pour un appel Apex ou API, il contrôle les clés étrangères, les formats, les longueurs et les listes de sélection restreintes.

Viennent ensuite les flows déclenchés par un enregistrement exécutés avant l’enregistrement, puis tous les déclencheurs Apex before. La validation système s’exécute à nouveau, avec les règles de validation personnalisées de l’org, puis les règles de doublons. Une règle de doublons configurée pour bloquer arrête l’enregistrement à ce stade : rien de ce qui suit ne s’exécute.

Enregistrement, déclencheurs after et suite des automatisations

L’enregistrement est alors écrit en base, sans que la transaction soit encore validée (commit), et tous les déclencheurs after s’exécutent. Suivent les règles d’affectation, les règles de réponse automatique et les règles de workflow. Si une mise à jour de champ de workflow modifie l’enregistrement, les déclencheurs before update et after update s’exécutent une nouvelle fois, et une seule, tandis que les règles de validation personnalisées ne sont pas réévaluées.

Viennent ensuite les règles d’escalade, les processus Process Builder et les flows lancés par des règles de workflow, puis les flows déclenchés par un enregistrement exécutés après l’enregistrement et les règles de droits. Si l’enregistrement alimente un champ de synthèse de cumul ou un workflow inter-objets, l’enregistrement parent passe à son tour par sa propre sauvegarde. Le partage basé sur des critères est évalué, et toutes les opérations DML de la transaction sont enfin validées.

Après le commit

La logique post-commit s’exécute une fois les données validées, sans ordre particulier : envoi des e-mails, exécution de l’Apex asynchrone mis en file d’attente, comme les tâches queueable et les méthodes future, et chemins asynchrones des flows déclenchés par un enregistrement.

Ce que l’ordre ne garantit pas

Salesforce documente plusieurs zones d’incertitude. Lorsque plusieurs déclencheurs sont définis sur le même objet pour le même événement, leur ordre relatif n’est pas garanti. Les processus et les flows lancés par un workflow s’exécutent eux aussi sans ordre garanti entre eux. Salesforce recommande un mécanisme d’entrée principal par objet, et choisit entre Flow, Flow avec Apex invocable ou Apex selon la densité d’automatisation. Une conception hybride gouvernée se distingue de déclencheurs et de flows indépendants dont la responsabilité est éclatée.

La place d’aprity

Ce qu’apporte aprity

aprity lit les métadonnées d’une org en lecture seule et construit un graphe d’exécution par objet : les déclencheurs, les flows et les règles métier qui s’exécutent à chaque événement d’enregistrement, regroupés par événement et calculés de façon déterministe à partir du graphe de dépendances. Chaque règle métier renvoie au composant dont elle est tirée, ce qui permet à un relecteur de vérifier ce qui se déclenche lors d’un enregistrement sans ouvrir un à un chaque déclencheur et chaque flow.

Termes liés

  • Flow avant ou après enregistrement — Les deux optimisations d’un flow déclenché par un enregistrement : Mises à jour rapides des champs avant, Actions et enregistrements associés après.
  • Déclencheur Apex — Du code Apex exécuté automatiquement avant ou après l’insertion, la mise à jour, la suppression ou la restauration d’enregistrements d’un objet.
  • Règle de validation — Une formule qui empêche la sauvegarde d’un enregistrement et affiche un message d’erreur dès qu’elle renvoie vrai.
  • Flow déclenché par un enregistrement — Un Flow que Salesforce lance automatiquement lorsqu’un enregistrement d’un objet donné est créé, mis à jour ou supprimé.

Tout le glossaire Salesforce →

Sources

La documentation officielle de Salesforce sur laquelle cette définition a été vérifiée (pages en anglais). Le comportement de la plateforme évolue d’une version à l’autre : la page citée fait foi.