Ce texte a été traduit en utilisant le système de traduction automatisé de Salesforce. Répondez à notre sondage pour nous faire part de vos commentaires sur ce contenu et nous dire ce que vous aimeriez voir ensuite.

Découvrez ici nos planifications de mise à jour.

Les systèmes démontrent un comportement automatisé en permettant à l'entreprise d'atteindre les buts et objectifs clés plus rapidement et à grande échelle. Une automatisation saine permet aux utilisateurs de se concentrer sur les tâches à valeur élevée et réduit le temps consacré aux tâches répétitives et manuelles ou à la saisie de données complexes.

Le plus souvent, l'automatisation consiste à traduire les processus métiers d'un formulaire à un autre : du formulaire papier au formulaire numérique, d'un ancien système au nouveau. Chaque traduction de processus métier offre une opportunité de transformation.

La transformation ne consiste pas à utiliser les nouvelles technologies pour introduire des changements perturbateurs et déroutants pour les utilisateurs. La transformation consiste à créer des méthodes de travail plus simples, à permettre à l'entreprise de se développer sans friction et à permettre aux utilisateurs professionnels de se concentrer davantage sur ce qui compte vraiment pour leurs parties prenantes. D'un point de vue architectural, il s'agit d'identifier les tâches qui peuvent être totalement éliminées, ou traitées automatiquement. Elle nécessite un lien clair entre l'utilisation de la technologie et son impact mesurable sur l'entreprise.

Notez un point important à propos de l'automatisation avec Salesforce : elle peut être réalisée avec divers outils, en utilisant des ensembles de compétences par programmation et déclaratives. Concevoir des automatisations bien conçues ne consiste pas à choisir d'élaborer avec un seul outil d'automatisation. Il s'agit d'utiliser des approches cohérentes et prévisibles, et de permettre aux équipes de développer, de tester, de déployer et de maintenir les automatisations que vous concevez. Vos automatisations doivent prendre la forme la plus maintenable et lisible possible.

Cette section présente comment concevoir et refactoriser des automatisations pour permettre aux entreprises d'atteindre rapidement et à grande échelle les objectifs clés. Vous pouvez améliorer l'architecture de vos automatisations dans Salesforce en vous concentrant sur l'efficacité et l'intégrité des données.

Pour plus d'efficacité dans vos automatisations, il ne s'agit pas de recréer consciencieusement le statu quo avec les technologies Salesforce. Il s'agit de comprendre en profondeur les métriques clés et les résultats métiers que les équipes devront respecter ou suivre, et de prendre du recul pour observer les unités fonctionnelles dans et à travers le travail que vous automatisez. Il s'agit d'identifier comment créer des modèles avec vos automatisations qui permettent à l'entreprise de fonctionner plus efficacement et rapidement, à grande échelle.

Une logique d'automatisation efficace permettra à vos systèmes :

  • Plus évolutif et plus utile pour l'entreprise
  • Plus utile pour les utilisateurs
  • Plus adaptable et capable de répondre à l'évolution des besoins métiers

Vous pouvez améliorer l'efficacité de vos automatisations grâce à la conception de processus et à la logique opérationnelle.

La conception de processus consiste à définir les méthodes de travail. L'élaboration de processus efficaces et efficaces signifie que vos conceptions ne se contentent pas de reproduire les méthodes de travail actuelles. Il est essentiel d'identifier et de supprimer les étapes inefficaces ou imprécises. Les processus optimisés doivent créer une valeur métier mesurable (voir indicateurs de performance clés) sans étapes inutiles. Des étapes imprécises ou inutiles créeront probablement une dette technique et entraîneront des automatisations impossibles à maintenir.

Souvent, la responsabilité de la découverte et de la documentation des processus métiers incombe à un analyste commercial ou même à un administrateur système. Les architectes sont responsables de collaborer avec ces membres de votre équipe pour s'assurer que vos conceptions de processus sont techniquement solides et bien structurées. L'application de votre Knowledge de la plate-forme Salesforce le plus tôt possible aidera votre équipe à identifier les processus à rationaliser grâce à l'automatisation ou les processus qui doivent changer pour éviter les personnalisations coûteuses.

Pour élaborer des processus optimisés pour Salesforce, tenez compte des points suivants :

  • Définissez les processus Les processus dont les objectifs ne sont pas clairs ou dont les définitions sont ambiguës sont plus susceptibles d'être mal interprétés au moment de la conception. Cela entraînera des conceptions erronées basées sur des hypothèses, ce qui entraînera des automatisations incorrectes ou inefficaces. Assurez-vous que les processus métiers que vous souhaitez automatiser respectent les normes suivantes :

    • Portée d'une fonction unique et spécifique (voir Unités fonctionnelles)
    • A des extrants clairement définis et mesurables (voir Valeur métier)
    • A des entrées et des sorties clairement définies
  • Bien qu'il soit parfois tentant d'ajouter des étapes supplémentaires qui « pourraient être utiles à l'avenir », cette approche n'est jamais claire. Chaque étape d'une automatisation est pertinente pour le résultat du processus global. Assurez-vous que chaque étape du processus présente les caractéristiques suivantes :

    • Exécute une tâche spécifique et précise (voir composable)
    • Requis pour que le processus génère sa sortie définie (supprimer toutes les étapes non essentielles)
    • Peut être réalisé en utilisant un nombre minimal de ressources
    • Utilise les données système existantes au lieu de demander l'entrée des utilisateurs dans la mesure du possible (voir Engagement)
    • Fournit des options d'entrée que les utilisateurs peuvent comprendre sans avoir à connaître le fonctionnement des systèmes sous-jacents (voir utile)

La liste des modèles et anti-modèles ci-dessous montre à quoi ressemble une optimisation correcte (et médiocre) dans une organisation Salesforce. Vous pouvez les utiliser pour valider vos conceptions d'automatisation avant de les élaborer, ou identifier les automatisations qui doivent être optimisées.

Pour plus d'informations sur les outils d'automatisation des processus disponibles dans Salesforce, consultez Outils pertinents pour Automatisé.

La logique opérationnelle traite de l'efficacité avec laquelle un processus est traduit depuis sa conception jusqu'à sa mise en œuvre réelle. Les automatisations avec une logique opérationnelle forte continuent d'être performantes, quels que soient les pics de volume de transactions ou le nombre d'instances simultanées en cours d'exécution. Logiquement, des automatisations saines aident les entreprises à s'adapter à des niveaux de demande plus élevés. L'intégration d'une logique opérationnelle solide dans vos automatisations est directement liée à la fiabilité globale de votre système.

Les automatisations qui ne fonctionnent pas efficacement offrent une expérience utilisateur et client médiocre, entraînant à la fois des pertes de chiffre d'affaires potentielles et une perte de Trust client. Ils ont également des coûts de maintenance plus élevés et peuvent devenir des goulets d'étranglement qui retardent les processus associés, contribuant à des problèmes de performance générale du système.

Pour créer une logique opérationnelle efficace dans les automatisations, tenez compte des points suivants :

  • Assurez-vous que tous les utilisateurs qui créent des automatisations savent comment procéder. De mauvais choix de conception peuvent être faits avec tout type d'outil d'automatisation. Le code n'est pas moins sujet aux erreurs ou aux mauvais choix d'implémentation que les outils basés sur le clic. L'utilisation d'ID de référence codés en dur, par exemple, est un anti-modèle affiché dans Flux et dans le code. Les outils basés sur le clic ne doivent pas être considérés comme une licence permettant à tout le monde de publier une automatisation en production. Chaque membre de l'équipe qui crée une automatisation doit savoir comment la construire correctement. Pour plus d'informations sur la définition et l'application de normes efficaces dans vos systèmes, consultez Normes de lisibilité et de conception.
  • Documentez clairement tous les chemins d'exécution. L'utilisation accrue des automatisations augmente non seulement les volumes de données potentiels, mais également les contextes d'invocation imprévus. Vous devez comprendre comment les différentes automatisations peuvent être invoquées et vous assurer que des contrôles de transaction appropriés (voir Gestion des données) sont affichés dans toutes les automatisations qui ont plusieurs points d'entrée. Par exemple, les flux d"écran ne seront pas exécutés avec des chargements de données en masse, mais les déclencheurs Apex et les flux déclenchés (et lancés automatiquement) le seront probablement. Documenter clairement les parcours d'exécution planifiés et potentiels pour les automatisations est un aspect clé pour comprendre les conditions logiques que vous devrez accepter pendant l'implémentation.
  • “Bulkify” toutes les opérations de données (y compris SOQL). Chaque opération de données (insertion, mise à jour, etc.) doit être effectuée sur des collections. Toujours. Sans exception. C’est ce que l’on entend par opérations de « mise en masse ». Bien que la plate-forme puisse prendre en charge les opérations de données singleton, vous ne devez jamais autoriser l'implémentation de modèles singleton.
  • Utilisez SOSL pour les opérations de recherche. Il existe une idée fausse selon laquelle les opérations sur les données ne peuvent pas être effectuées sur des enregistrements renvoyés via SOSL. Il est vrai que DML ne peut pas être invoqué directement contre les résultats SOSL, mais un code peut analyser les résultats SOSL et créer une collection qui peut être référencée dans des méthodes de classe DML ou Database. Les principales différences entre SOSL et SOQL résident dans les types de renvoi de chacun et dans leur réponse aux recherches généralisées ou génériques. SOSL peut fonctionner avec plusieurs types de sObject (c'est pourquoi le type de retour est différent) et gérer les recherches de caractères génériques et de chaînes généralisées avec de meilleures performances que SOQL.
  • Traitez SOQL comme une opération de données. N'utilisez pas SOQL pour rechercher des enregistrements, utilisez-le pour affiner vos opérations sur les données. Les opérations SOQL et de données peuvent avoir un impact très similaire sur les performances de la base de données relationnelle sous-jacente. SOQL peut même transmettre un indicateur DML explicite qui verrouille les lignes de la base de données en prévision des opérations sur les données. Pour créer des automatisations évolutives, assurez-vous de traiter SOQL avec la même diligence raisonnable : ne l'utilisez pas sans critères de sélection très spécifiques et bien formés, n'autorisez pas les références de champs inutiles et exigez une correspondance minutieuse des types de données entre les champs et les entrées de filtrage dans la logique d'instruction WHERE. Votre code doit également avoir des contrôles appropriés pour garantir qu'une requête ne sera jamais exécutée dans des contextes non traités en masse ou avec des critères de filtrage nuls ou vides.
  • Gardez les opérations synchrones strictement concentrées sur le travail qui aide un utilisateur en temps réel. Pendant votre optimisation des processus, identifiez la logique pertinente pour les actions que les utilisateurs doivent exécuter en temps réel ou en temps quasi réel, et celles qui peuvent être reportées dans une transaction asynchrone (asynchrone). Pour plus d'informations sur la conception d'opérations de synchronisation/asynchronie, consultez Traitement des données.

La liste des modèles et anti-modèles ci-dessous montre à quoi ressemble une logique opérationnelle correcte (et mauvaise) dans l'automatisation de Salesforce. Vous pouvez les utiliser pour valider vos conceptions d'automatisation avant de les élaborer, ou identifier les automatisations qui doivent être optimisées.

Pour plus d'informations sur les outils disponibles dans Salesforce qui peuvent vous aider à planifier l'échelle, consultez Outils pertinents pour Automatisé.

Les indicateurs de performance clés de l'automatisation mesurent l'impact d'une automatisation au fil du temps. Sans eux, vous n'aurez aucun moyen de déterminer si une automatisation ajoute réellement de la valeur métier ou crée une complexité inattendue pour vos utilisateurs. Chaque automatisation que vous élaborez doit être associée à un ensemble clair et mesurable d'indicateurs de performance clés.

Les bons indicateurs de performance clés sont définis par une valeur mesurable avec une période associée. Exemples :

  • [Nombre X] heures de travail gagnées par mois
  • Traitement des échecs de saisie manuelle de données réduit de [Y%] par semaine

Lorsque vous avez des indicateurs de performance clés clairs et mesurables, vous devez également comprendre si et comment une automatisation dans Salesforce génère des données pertinentes pour la génération de rapports sur ces indicateurs.

La liste des modèles et anti-modèles ci-dessous montre à quoi ressemblent les indicateurs de performance clés appropriés (et médiocres) en ce qui concerne les automatisations Salesforce. Vous pouvez les utiliser pour valider vos indicateurs de performance clés existants ou identifier les points à mieux identifier avant de les élaborer.

Pour plus d'informations sur les outils disponibles dans Salesforce pour l'aide sur les indicateurs de performance clés, consultez Outils pertinents pour Automatisé.

Le tableau ci-dessous présente une sélection de modèles à rechercher (ou à élaborer) dans votre organisation et d'anti-modèles à éviter ou à cibler pour remédier.

✨ Découvrez d'autres modèles d'efficacité dans l'Explorateur de modèle et anti-modèle.

Modèles Anti-Patterns
Conception de processus Dans votre organisation :
- Chaque flux sert un seul objectif spécifique
- Chaque étape effectue une tâche spécifique, granulaire
- Les flux sont organisés dans une structure hiérarchique composée d'un flux principal et de flux secondaires de support
- Toutes les entrées utilisateur ont un but clair dans le flux
- Les utilisateurs sont invités à fournir des données uniquement lorsque les données système existantes ne peuvent pas être utilisées
Dans votre organisation :
- Les flux servent plusieurs objectifs et nécessitent des entrées supplémentaires pour fournir le contexte
- Les flux nécessitent des entrées dont les données ne sont pas utilisées
- Les groupes d'étapes associés contiennent des fonctionnalités qui chevauchent les groupes d'étapes d'autres flux
- Les flux demandent des entrées utilisateur lorsque des données stockées peuvent être utilisées à la place
Dans Apex :
- Chaque classe sert un but unique et spécifique
- Chaque méthode effectue une tâche spécifique, granulaire
- Toutes les variables d'entrée ont un but clair dans la classe
- L'exécution de code nécessite un nombre minimal de ressources
Dans Apex :
- Les classes servent plusieurs objectifs
- Les méthodes exécutent plusieurs tâches ou les méthodes exécutent des tâches qui ne correspondent pas à l'objectif déclaré de la classe dont elles font partie
- Les variables d'entrée ne sont pas réellement utilisées dans les méthodes
- Les méthodes récupèrent inutilement les données de la base de données ou de systèmes externes
Logique opérationnelle Dans Flux :
- Aucune variable ne référence des valeurs codées en dur (pour des types d'enregistrement, des utilisateurs, etc.)
- Tous les flux et processus lancés automatiquement utilisent des éléments de décision et/ou d'interruption pour évaluer les critères d'entrée et empêcher les boucles infinies ou les exécutions sur des volumes de données importants
- Les flux (y compris les processus) transmettent la logique à Apex dans des contextes de volume de données important
- Les flux secondaires sont utilisés pour les sections d'un processus qui doivent être réutilisées dans l'ensemble de l'entreprise
Dans Flux :
- Les variables ont des valeurs codées en dur
- Les flux (y compris les processus) doivent être désactivés manuellement avant le chargement de données en masse
- Les flux (y compris les processus) déclenchent des avis d'"exception non gérée"
- Même de simples flux entraînent régulièrement des erreurs liées aux limites du gouverneur
- Les parties d'un flux sont répétées à travers les flux plutôt que d'utiliser des flux secondaires
Dans Apex :
- Aucune variable ne référence des valeurs codées en dur (pour des types d'enregistrement, des utilisateurs, etc.)
- Tous les critères génériques sont affichés en SOSL
- SOQL est encapsulé dans try-catch
- Aucun SOQL n'est affiché dans une boucle
- Les instructions SOQL sont sélectives, notamment :
-- aucune utilisation de comparaisons J'AIME ou de comparaisons de texte partiel
-- les opérateurs de comparaison utilisent une logique positive (c.-à-d. INCLUSE, IN) comme logique principale ou uniquement
-- l'utilisation de = NULL, != NULL est rare et/ou suit toujours un opérateur de comparaison positif
-- aucune instruction LIMIT 1 n'est affichée
-- aucune utilisation du mot-clé ALL ROWS
Dans Apex :
- Les variables ont des valeurs codées en dur
- SOSL est rarement ou pas systématiquement utilisé pour les critères de sélection de caractères génériques
- SOQL n'est pas encapsulé dans try-catch
- SOQL affiché dans les boucles
- Les instructions SOQL ne sont pas sélectives, notamment :
-- Les critères de filtrage J'AIME et générique sont affichés
-- les comparaisons utilisant des critères NOT, NOT IN sont utilisées comme opérateur de comparaison principal ou unique
-- = NULL, != NULL critères sont utilisés comme opérateur principal ou seulement de comparaison
-- Affichage des instructions LIMIT 1
-- Le mot-clé ALL ROWS est utilisé
Dans vos normes de conception et votre documentation :
- Les parcours d'exécution planifiés et potentiels pour les automatisations sont clairement indiqués
- Les cas d'utilisation des opérations synchrones et asynchrones dans les automatisations sont clairement décrits dans le cadre des normes de conception
Dans vos normes de conception et votre documentation :
- L'invocation de l'automatisation n'est pas documentée
- Les cas d'utilisation d'opérations synchrones et asynchrones ne sont pas traités
Indicateurs de performance clés Dans votre documentation :
- Les sorties de chaque automatisation sont mesurables et limitées dans le temps
- Les parties prenantes responsables sont répertoriées pour chaque indicateur de performance clé
Dans votre documentation :
- Les indicateurs de performance clés n'existent pas pour les automatisations ou ont des délais de mesure imprécis
- Les indicateurs de performance clés existent sans parties prenantes responsables
Dans des rapports et des tableaux de bord :
- Toutes les métriques associées aux indicateurs de performance clés sont incluses dans au moins un rapport ou tableau de bord
Dans des rapports et des tableaux de bord :
- Les rapports sur les indicateurs de performance clés n'existent pas ou des métriques manquantes sont associées à certains indicateurs de performance clés

L'intégrité des données consiste à déterminer si un système conserve des données précises et complètes. Salesforce Platform maintient une logique de traitement robuste et intégrée conçue pour protéger l'intégrité des données stockées dans la base de données relationnelle d'une organisation individuelle. L'un des principes fondamentaux de l'élaboration d'automatisations saines est de comprendre les comportements d'intégrité des données intégrés à Salesforce, et de vous assurer que toutes vos conceptions d'automatisation respectent (et reconnaissent) ces comportements.

Les principaux anti-modèles de conception de l'automatisation proviennent de l'incapacité de reconnaître les puissants services d'intégrité des données déjà fournis par Salesforce et de l'incapacité d'utiliser une fonctionnalité standard qui tire parti de ces services. Pour concevoir des automatisations qui protègent et maintiennent l'intégrité des données, vous devez connaître l'ordre fondamental des comportements de fonctionnement de Salesforce.

En étendant correctement l'intégrité des données dans vos automatisations personnalisées, votre système peut :

  • fonctionner contre des volumes de données en masse et importants sans intervention manuelle,
  • appliquer les stratégies de sécurité des utilisateurs en cas de besoin et basculer vers le contexte système en cas de besoin,
  • rencontrent des erreurs à l'exécution et suivent des parcours de reprise ou d'échec prévisibles.

Vous pouvez améliorer l'intégrité des données dans vos automatisations Salesforce en traitant correctement les données et les erreurs.

La première étape de la conception d'un traitement approprié des données dans Salesforce consiste à comprendre comment la plate-forme multilocataire gère les transactions. Cela comprend la compréhension des comportements d'exécution intégrés que Salesforce Platform utilise pour garantir l'intégrité des données pendant les opérations de données au niveau de l'enregistrement. Pour plus d'informations sur les impacts de ce comportement, consultez Manipulation de base de données dans Bases de l'architecture Salesforce.

Une mauvaise gestion des données dans vos automatisations peut être l'un des anti-modèles les plus difficiles à identifier et à corriger. La nature récursive et superposée de l'ordre d'exécution de la plate-forme peut rendre difficile l'identification de l'origine des problèmes. La section spécifique d'un code ou d'un flux qui entraîne une erreur fatale ou dépasse les limites du gouverneur peut ne pas être à l'origine d'un problème de traitement des données sous-jacent.

La sensibilisation aux transactions est essentielle pour élaborer des automatisations fiables et adaptées à Salesforce. Cela signifie que chaque étape d'une automatisation est conçue en Knowledge de sa position par rapport à l'ordre d'exécution contrôlé par la plate-forme, peut remplir correctement sa fonction et transmet correctement les informations à l'étape suivante.

Quel que soit l'outil d'automatisation que vous utilisez, la sensibilisation appropriée aux transactions suit des modèles similaires et nécessite des considérations communes :

  • Supposons que chaque automatisation doit être exécutée à tout moment et sans préavis sur des volumes de données importants. Les automatisations doivent avoir des chemins permettant l'exécution par lot ou en masse (voir Évolutivité).
  • Ne mélangez pas les opérations de données de contexte système et utilisateur dans la même transaction.
  • Réservez les opérations de synchronisation des données pour les actions avant contexte et utilisez des opérations asynchrones pour toutes les actions après contexte.
  • Utilisez la messagerie et les notifications pour éviter de créer des expériences dans l'application qui obligeraient un utilisateur à attendre les données basées sur les résultats d'une opération asynchrone.

Au-delà de la sensibilisation aux transactions, il existe une deuxième dimension au traitement des données : savoir quand réaliser une logique dans différents contextes d'exécution. Les raisons courantes pour séparer les automatisations en différents contextes d'exécution sont les suivantes :

  • Opérations de volume important et/ou de données complexes
    • Les opérations de transfert en masse ne garantissent pas qu'une automatisation gère correctement les volumes de données importants. Si le volume d'opérations de données dans une automatisation dépasse les limites par transaction, vous devrez effectuer des opérations de données en utilisant une fonctionnalité spécifique aux volumes de données importants (par exemple via Apex batch ou l'API Bulk 2.0). Elles ont des limites en transactions distinctes, adaptées aux volumes de données importants.
    • Les opérations de données qui doivent traverser des hiérarchies de relations complexes ou effectuer des recalculs complexes (sans inclure les champs de formule) entre les enregistrements peuvent facilement dépasser les limites par transaction lorsqu'elles sont effectuées en masse. Tenez compte du « bruit » d'une mise à jour d'un enregistrement, en termes d'opérations de données associées ou de SOQL nécessaires pour exécuter les actions suivantes dans le système.
    • Les types de sObjects impliqués dans la chaîne complète d'une automatisation peuvent vous obliger à séparer les opérations de données en transactions séparées afin d'éviter les erreurs « DML mixtes ».
  • Logique à exécuter dans le contexte utilisateur ou système
    • Salesforce Platform impose le partage et la visibilité dans le contexte de l'utilisateur. Si vous devez exécuter des opérations qui dépassent les niveaux d'autorisation des utilisateurs de votre automatisation, assurez-vous que ces opérations sont exécutées dans le contexte système.
    • Différents outils seront exécutés ou non dans différents contextes :
      • Apex sera exécuté par défaut en contexte système. Vous pouvez contrôler si et comment les comportements Apex appliquent les règles de partage au niveau de l'utilisateur en utilisant des mots-clés de partage dans une définition de classe Apex.
      • Le flux n'a pas de comportement par défaut unique. Un flux est exécuté dans le contexte de l'utilisateur ou du système selon son lancement. Vous pouvez appliquer automatiquement le partage dans le contexte système.
      • Les processus (c'est-à-dire les automatisations élaborées avec le Générateur de processus) sont exécutés dans le contexte système sans considérations de partage. (Note : Nous recommandons d'élaborer des automatisations à faible code avec Flow.
  • Logique qui doit être exécutée de façon asynchrone
    • Opérations système externes : les appels externes synchrones ou les actions qui accèdent à des données externes ne sont inclus dans aucun comportement de restauration de la plate-forme. Pour tirer parti de ces comportements, vous devez placer les actions impliquant des systèmes externes dans des transactions séparées (en utilisant des méthodes Apex asynchrones, des chemins asynchrones ou des actions invocables).
    • Concours complet et messagerie - Pour contrôler le flux d'événements ou de messages liés aux opérations sur les données (et tirer parti des comportements d'annulation de la plate-forme), placez toutes les actions liées à la messagerie ou aux événements dans des contextes postérieurs, en utilisant des méthodes Apex asynchrones.

La liste des modèles et anti-modèles ci-dessous montre à quoi ressemble le traitement correct (et médiocre) des données dans les automatisations Salesforce. Vous pouvez les utiliser pour valider vos conceptions d'automatisation avant de les élaborer, ou identifier les automatisations qui doivent être refactorisées pour améliorer le traitement des données.

Pour plus d'informations sur les outils disponibles dans Salesforce pour le traitement des données dans l'automatisation, consultez Outils pertinents pour Automatisé.

Le traitement des erreurs est essentiel pour l'intégrité des données. Un traitement efficace des erreurs aide également votre système à évoluer et à vieillir avec plus de résilience.

Une mauvaise gestion des erreurs dans les automatisations peut entraîner :

  • Incohérences dans les enregistrements et autres problèmes d'intégrité des données
  • Envoi de notifications imprécises aux utilisateurs et à d'autres systèmes
  • Perte de temps et de ressources en traitement manuel ou répété
  • Manque général de Trust dans un système

Le traitement des erreurs dans les automatisations nécessite de donner à n'importe quel processus en cours la capacité d'analyser une erreur pour rechercher des informations, d'accéder à une logique sur les étapes suivantes basées sur les informations d'erreur, puis de suivre le chemin correct. Ces capacités n'ont pas besoin d'être renforcées à chaque automatisation (c'est un anti-schéma d'optimisation). À la place, chaque automatisation du système devrait avoir la possibilité de se connecter aux composants de traitement des erreurs appropriés.

Pour intégrer des contrôles de gestion des erreurs appropriés à vos automatisations, posez les questions suivantes :

  • Qu'est-ce qu'une erreur « fatale » ?
  • Qu'est-ce qu'une erreur « récupérable » ?
  • Pour les automatisations déclenchées par des actions utilisateur, comment l'automatisation peut-elle détecter et notifier l'utilisateur des erreurs avant de tenter d'engager des modifications ?

Une fois que vous avez décidé comment gérer ces erreurs, vous pouvez commencer à intégrer un traitement efficace des erreurs dans vos automatisations. La liste des modèles et anti-modèles ci-dessous montre à quoi ressemble le traitement correct (et médiocre) des erreurs dans une automatisation Salesforce. Vous pouvez les utiliser pour valider vos conceptions d'automatisation avant de les élaborer, ou identifier les automatisations qui doivent être refactorisées pour améliorer le traitement des erreurs.

Pour plus d'informations sur les outils disponibles dans Salesforce pour le traitement des erreurs, consultez Outils pertinents pour Automatisé.

Le tableau ci-dessous présente une sélection de modèles à rechercher (ou à élaborer) dans votre organisation et d'anti-modèles à éviter ou à cibler pour remédier.

✨ Découvrez d'autres modèles d'intégrité des données dans l'Explorateur de modèle et anti-modèle.

Modèles Anti-Patterns
Traitement des données Dans votre dictionnaire de données :
- Données au niveau du champ et logique de priorisation pour toutes les sources de données et objets lac de données
- Le mappage de champs entre un objet lac de données et un objet modèle de données existe
Dans votre dictionnaire de données :
- Les données au niveau du champ et la logique de priorisation des sources de données et des objets lac de données ne sont pas incluses
- Mappage de champs entre des objets lac de données et des objets modèle de données n'est pas inclus
Dans votre Apex :
- Toutes les instructions DML synchrones ou méthodes de classe Database sont exécutées dans des contextes d'exécution avant déclenchement
- Les invocations Apex asynchrones utilisent des files d'attente pour 'enchaîner' des DML complexes entre les transactions
- Apex par lot est utilisé exclusivement pour des volumes de données importants
- @future Apex n'est pas utilisé ou utilisé avec précaution, pour les appels externes ou l'objet système DML
Dans votre Apex :
- Les instructions DML sont régulièrement affichées dans le code qui sera invoqué dans les contextes après le déclenchement
- Apex asynchrone est rarement utilisé
- Les fonctionnalités Apex asynchrones sont utilisées arbitrairement, notamment:
-- Les méthodes futures et Apex Queueable sont utilisées de façon incohérente ou interchangeable
-- Les opérations de base de données n'ont pas de logique claire et cohérente pour transmettre l'exécution à Apex par lot en cas de besoin
Dans Flux :
- Tous les flux lancés dans le contexte de l'utilisateur excluent toutes les transactions du contexte système dans des flux secondaires, qui sont régulièrement placés après un élément Interrompre, pour créer une
- Des séquences complexes d'opérations de données associées sont créées avec Orchestrateur (au lieu d'invoquer plusieurs flux secondaires dans un flux monolithique)
- Tous les flux déclenchés par un enregistrement ont des valeurs d'ordre
- Les flux impliquant des appels système externes ou des processus longs utilisent des chemins asynchrones
Dans Flux :
- De grands flux monolithiques tentent de coordonner des séquences complexes d'opérations de données associées (avec ou sans flux secondaire)
- Les flux déclenchés par un enregistrement n'utilisent pas du tout les attributs d'ordre de déclenchement ou n'utilisent pas de façon cohérente les valeurs d'ordre de déclenchement
- Les parcours asynchrones ne sont pas utilisés de façon cohérente ou du tout
Dans votre organisation :
- Les règles de réconciliation de résolution de l'identité suivent la logique de priorisation de votre dictionnaire de données
Dans votre organisation :
- Les règles de réconciliation de résolution de l'identité ne suivent pas la logique de priorité dans le dictionnaire de données
Traitement des erreurs Dans Apex :
- Le code enveloppe toutes les étapes DML, SOQL, appels externes et autres étapes critiques du processus dans des blocs d'essai
- Des exceptions personnalisées sont utilisées pour créer un message d'erreur avancé et une logique
- Dans des contextes asynchrones et en masse, les méthodes de classe Base de données sont utilisées au lieu de DML
- Les méthodes de classe de base de données peuvent être utilisées exclusivement pour toutes les opérations de données (au lieu de DML)
Dans Apex :
- DML, SOQL, appels externes ou autres étapes critiques du processus ne sont pas toujours encapsulés dans des blocs d'essai
-Les instructions System.debug sont affichées dans le code de production (et ne sont pas commentées)
- Aucune méthode de classe Database n'est utilisée
- Les opérations sur les données sont effectuées exclusivement avec DML
Dans Lightning Web Components (LWC) :
- JavaScript enveloppe toutes les opérations de données et les étapes critiques du processus dans les blocs if ()/else if ()
- Toutes les fonctions @wire utilisent des propriétés de données et d'erreur fournies par l'API
- Tous les énoncés si (erreur)/si (erreur) contiennent une logique de traitement des erreurs et fournissent des messages informatifs
Dans LWC :
- JavaScript n'utilise pas toujours if ()/else if () bloque avec des opérations de données ou des étapes de processus critiques
- les fonctions @wire n'utilisent pas les données et les propriétés d'erreur fournies par l'API (ou ne les utilisent pas de façon cohérente)
- Si elles sont utilisées, les instructions if (error)/else if (error) ne contiennent pas réellement de logique pour traiter les erreurs et fournir des messages d'erreur utiles
Dans Aura :
JavaScript regroupe toutes les opérations de données et les étapes critiques du processus dans des blocs d'essai
- Dans les blocs try-catch, l'erreur JavaScript native est utilisée dans les instructions throw (pas d'utilisation de $A.error())
- Toute la logique d'erreur récupérable est affichée dans les instructions de capture et fournit des messages utilisateur clairs
Dans Aura :
JavaScript n'enveloppe pas de façon cohérente les opérations de données et les étapes critiques du processus dans des blocs d'essai
- Les composants utilisent $A.error()
- La logique d'erreur récupérable n'est pas toujours affichée dans les relevés de capture et les messages d'erreur aux utilisateurs ne sont pas clairs
Dans Flux :
- Les flux d'écran utilisent régulièrement des connecteurs de défaut pour afficher les erreurs aux utilisateurs
- Les messages d'erreur personnalisés sont configurés pour les erreurs affichées à l'écran
- Les flux avec des opérations de données, des appels externes et d'autres logiques de traitement critiques ont des chemins de défaut pour toutes les actions clés
Dans Flux :
- Les flux n'utilisent pas les chemins de défaut de façon cohérente ou du tout
- Les messages d'erreur personnalisés ne sont pas utilisés. Par conséquent, les utilisateurs affichent le message par défaut « Une erreur non gérée s'est produite dans ce flux ».

Le concept de valeur métier, dans le contexte de l'automatisation, consiste à déterminer dans quelle mesure les processus créent un impact mesurable et positif pour les parties prenantes de l'entreprise. Idéalement, l'automatisation des processus permet aux utilisateurs de consacrer moins de temps à des tâches répétitives et de faible valeur. Il contribue également à renforcer l'intégrité des données en éliminant les activités de traitement manuelles qui peuvent entraîner des erreurs. De la même façon que la conception de processus, l'identification et la livraison d'automatisations qui généreront une réelle valeur métier nécessitent un travail qui va au-delà de la découverte de base et de l'analyse métier.

Parfois, il peut sembler que la meilleure façon d'offrir de la valeur à l'entreprise est simplement d'automatiser chaque processus demandé par un utilisateur professionnel, soit dans l'ordre dans lequel il est affiché dans votre backlog (ou file d'attente de billetterie), soit en fonction de facteurs politiques dans votre organisation. Cela peut entraîner deux problèmes liés : construire des automatisations dans un ordre non optimal et construire des automatisations incorrectes. Le premier problème, une mauvaise priorisation, empêche la mise en œuvre des processus à valeur élevée quand ils le devraient, ce qui peut ralentir la croissance. Le deuxième problème, l'élaboration d'automatisations incorrectes, non seulement retarde la livraison d'automatisations à valeur élevée, mais entraîne également un temps perdu, des coûts inutiles et une frustration accrue parmi les équipes de livraison.

Vous pouvez accroître la valeur métier en vous concentrant sur les indicateurs de performance clés et la priorisation.

OutilDescriptionEfficacitéIntégrité des donnéesValeur métier
Lot ApexEnregistrements par lot et traitement des segments maniablesXX
Apex Future MethodsExécuter de façon asynchrone des méthodes Apex en arrière-planXX
Apex Queueing Ajouter des tâches Apex à une file d'attente et les surveillerXX
Apex SchedulerExécuter de façon asynchrone des classes Apex à des heures spécifiéesXX
ApprobationsSpécifier les étapes requises pour approuver les enregistrementsXX
Asynchronous ApexExécuter un code Apex de façon asynchroneXX
Actions automatiséesExécuter des mises à jour de champ, des envois d'e-mails et d'autres actions en arrière-planXX
Einstein Next Best ActionAfficher les recommandations appropriées aux bonnes personnes au moment opportunXX
Alerte par e-mailCréer et envoyer des e-mails automatisésXX
Actions d'escaladeSpécifier les actions automatisées à exécuter pour les escalades de requêtesXX
Mise à jour de champMettre à jour les valeurs de champ en fonction de l'automatisationXX
Flow BuilderÉlaborer des automatisations avec une interface par pointer-cliquerXX
Extensions de fluxAccéder aux variables stockées en tant qu'entrées de composant dans des fluxX
Bibliothèque de modèles de fluxUtiliser des modèles pour concevoir des flux spécifiques au secteur d'activitéXX
Déclencheur de fluxAutomatiser les processus métiers complexesX
Actions invocablesAjouter une fonctionnalité Apex à des fluxXX
OrchestrateurCréer et gérer des automatisations à plusieurs étapesXX
Message sortantEnvoyer des informations à partir d'un processus automatisé avec des reçus et des tentatives X
Publication d'événements de plate-forme avec un fluxPublier des événements via des interactions utilisateur et des automatisationsX
Optimiseur de requêteUtiliser la sélectivité et les index pour améliorer les performances des requêtes, des rapports et des vues de listeXX
Flux SalesforceCréer des automatisations de processus déclaratives avec Flow BuilderXX
Envoi de notifications avec des fluxEnvoyer des messages par SMS, WhatsApp ou Facebook MessengerXX
Envoi de notifications avec des processusEnvoyer des messages par SMS, WhatsApp ou Facebook MessengerXX
Modificateur SOQL FOR UPDATEVerrouiller les enregistrements pour éviter les conditions de course et les problèmes de sécurité des threadsX
Stratégie BuilderIdentifier les recommandations à exposer dans les pages d'enregistrementXX
SubflowsRéduire la complexité des flux en les réutilisantX
S'abonner à des événements de plate-forme avec un fluxRecevoir les messages publiés via des automatisationsX
Actions de tâcheDéterminer les détails d'attribution donnés à un utilisateur par une automatisationX
RessourceDescriptionEfficacitéIntégrité des donnéesValeur métier
Exécution Apex Gouverneurs et limitesDécouvrez comment le moteur d'exécution Apex applique les limitesXX
Ressources de gestion par lotCréer, gérer, planifier et surveiller des tâches par lotXX
Meilleures pratiques pour SOQL et SOSL Améliorer les performances de requête des applications avec des volumes de données importantsX
Modèle Design StandardsCréer des normes de conception pour votre organisationXXX
En masse de flux dans les transactionsConcevoir des flux pour fonctionner avec des collectionsXX
Considérations relatives aux données de fluxDécouvrez les flux déclenchés par une planification pour des données par lotXX
Débogage de fluxTester et dépanner les fluxX
Comment les demandes sont traitéesDécouvrez comment Salesforce traite les tâches rapidement et réduit les échecsXX
Modèle de feuille de calcul KPIDéterminer la valeur métier d'une métrique particulièreXX
Passer des appels externes à des systèmes externes à partir d'actions invocablesAppeler des systèmes externes à partir d'un flux en utilisant ApexX
Opérations DML mixtesConnaître les sObjects qui peuvent être utilisés ensemble pour DML dans la même transactionXX
Ordre d'exécutionComprendre l'ordre des événements pour les insertions, les mises à jour et les mises à jour/insertionsXX
FAQ sur les plans de requêteOptimiser les requêtes impliquant des volumes de données importantsXX
Considérations relatives aux flux déclenchés par une planificationComprendre les comportements spéciaux des flux déclenchés par une planificationX
Contrôle des transactionsGénérer un point d'enregistrement qui spécifie l'état actuel de la base de donnéesXX
Que se passe-t-il lorsqu'un flux échoue ?Comprendre le traitement des erreurs dans les fluxXX
Guide des meilleures pratiques d'automatisation des workflowsPremiers pas avec l'automatisation de SalesforceXXX
Utilisation de requêtes SOQL très volumineusesÉcrire des requêtes SOQL plus efficacesX

Aidez-nous à garder Salesforce Well-Architected pertinent pour vous ; répondez à notre sondage pour nous faire part de vos commentaires sur ce contenu et nous dire ce que vous souhaitez voir ensuite.