Skip to main content

Création d’un flux à l’aide d’actions de service externe

Remarque

Remarque

Vous souhaitez apprendre en français ? Dans ce badge, les validations de défi pratique Trailhead se font en anglais. Les traductions sont fournies entre parenthèses à titre de référence. Dans votre Trailhead Playground, veillez (1) à définir les États-Unis comme région, (2) à sélectionner l’anglais comme langue, et (3) à copier et coller uniquement les valeurs en anglais. Suivez les instructions ici.

Consultez le badge Trailhead dans votre langue pour découvrir comment profiter de l’expérience Trailhead traduite.

Commençons par créer un flux permettant de créer des comptes bancaires ou de mettre à jour les comptes bancaires existants de votre banque fictive. 

Ajout de la zone de dessin de l’écran

Une zone de dessin de l’écran vous permet de collecter les données saisies par les utilisateurs, correspondant aux paramètres d’entrée contenus dans votre spécification d’API. 

  1. Dans Configuration, saisissez Flows dans la case Quick Find (Recherche rapide), puis sélectionnez Flows (Flux).
  2. Cliquez sur New Flow (Nouveau flux), sélectionnez Screen Flow (Flux d’écran), puis cliquez sur Create (Créer).
  3. Remplacez la valeur par défaut Auto-Layout (Présentation automatique) par Free-Form (Forme libre).
  4. Dans la boîte à outils, avec l’onglet Elements (Éléments) sélectionné, faites glisser l’élément Screen (Écran) vers la zone de dessin.
    • Label (Étiquette) : Bank Account Record (Enregistrement de compte bancaire)
    • API Name (Nom d’API) : Bank_Account_Record (Enregistrement_de_compte_bancaire)
  5. Dans la liste des composants d’entrée, faites glisser deux composants Text (Texte) vers la zone de dessin de l’écran Flow Label (Étiquette du flux).
  6. Cliquez sur le premier composant Text (Texte) pour le mettre en surbrillance.
    • Label (Étiquette) : Last Name on Account (Nom sur le compte)
    • API Name (Nom d’API) : Last_Name_on_Account (Nom_sur_le_compte)
  7. Cliquez sur le deuxième composant Text (Texte).
    • Label (Étiquette) : Bank Account Type (Type de compte bancaire)
    • API Name (Nom d’API) : Bank_Account_Type (Type_de_compte_bancaire)
  8. Cliquez sur Done (Terminé).
  9. Cliquez sur Save (Enregistrer) pour enregistrer le flux et définir ses propriétés.
    • Flow Label (Étiquette du flux) : Bank Account Records (Enregistrements de compte bancaire)
    • Flow API Name (Nom d’API du flux) : Bank_Account_Records (Enregistrements_de_compte_bancaire)
  10. Cliquez sur Save (Enregistrer) et ignorez les avertissements.
Remarque

Pour éviter de perdre votre travail, enregistrez-le régulièrement dès que vous commencez à créer votre flux.

Pour le moment, nous avons simplement ajouté un élément d’écran à notre flux qui nous permet d’avoir deux entrées de texte. Passons maintenant aux actions. 

Ajout d'une action

Les éléments d’action présentent et exécutent des actions invocables en dehors du flux qui ont été créées par l’assistant Services externes lorsque vous avez enregistré votre spécification d’API. Par exemple, le fait d’appeler l’une des actions enregistrées par votre service bancaire externe constitue un exemple d’invocation d’une action en dehors du flux.

Vous souhaitez être mesure d’ajouter un compte à notre banque fictive depuis Salesforce. « Mais il ne faut pas être développeur pour le faire ? » Eh bien, non ! L’assistant Services externes a tout préparé en amont. Il ne vous reste plus qu’à utiliser un outil comme Flow Builder ou Robots Einstein pour créer des liaisons.

Reprenons : ajoutez l’action addAccount (opération issue de notre spécification d’API) en tant qu’élément d’action à votre flux. Si aucun compte bancaire n’existe, l’action addAccount crée un compte dans le service bancaire. Cette action récupère les valeurs des deux composants d’entrée, appelle le service bancaire via votre identifiant nommé BankService et recherche un compte bancaire correspondant au nom et au type de compte indiqués.

Dans notre spécification d’API, l’opération addAccount contient deux valeurs de sortie que vous définissez ici sous forme de variables. 

  • 201 : aucun nom correspondant n’a été trouvé. Il n’existe actuellement aucun compte bancaire. Par conséquent, un nouveau compte bancaire est créé via l’opération addAccount.
  • 409 : cette exception signifie qu’un nom correspondant a été trouvé (le compte bancaire existe déjà). Il est alors inutile d’en créer un autre. Dans ce cas, un message est renvoyé dans le flux avec les informations du compte existant. Ces informations sont renvoyées pour nous permettre d’identifier le compte qui a déclenché l’exception 409.

Si vous définissez ces valeurs de sortie ici, c’est pour améliorer l’efficacité des éléments en aval de notre flux. OK. Nous tenons quand même à préciser une chose : ce n’est pas parce que vous codez en italique que vous maîtriserez à la perfection Salesforce… Par contre, c’est ce que vous pouvez viser en allant au bout de cette unité et en relevant le défi pratique qui suit.

  1. Dans la boîte à outils, avec l’onglet Elements (Éléments) sélectionné, faites glisser l’élément Action vers la zone de dessin.
  2. Définissez Filter By (Filtrer par) sur Type, sélectionnez External Service (Service externe), puis cliquez dans la zone de recherche.
  3. Sélectionnez addAccount.
    • Label (Étiquette) : Add Bank Account (Ajouter un compte bancaire)
    • API Name (Nom d’API) : Add_Bank_Account (Ajouter_un_compte_bancaire)
  4. Sous Set Input Values (Définir des valeurs d’entrée), cliquez dans le champ accountName, saisissez Name (Nom) et sélectionnez Last_Name_on_Account (Nom_sur_le_compte).
  5. Sous Set Input Values (Définir des valeurs d’entrée), cliquez dans le champ accountType, saisissez Type et sélectionnez Bank_Account_Type (Type_de_compte_bancaire).
  6. Développez la section Advanced (Avancé) et cochez la case Manually assign variables (Attribuer des variables manuellement).
  7. Sous Store Output Values (Stocker les valeurs de sortie), cliquez dans le champ _201 et sélectionnez New Resource (Nouvelle ressource).
  8. Sous New Resource (Nouvelle ressource) :
    • Resource Type (Type de ressource) : Variable
    • API Name (Nom d’API) : account
    • Data Type (Type de données) : Définie par Apex
    • Apex Class (Classe Apex) : ExternalService__BankService_accountDetails
    • Availability Outside the Flow (Disponibilité hors du flux) : Sélectionnez Available for input (Disponible pour l’entrée) et Available for output (Disponible pour la sortie).
  9. Cliquez sur Done (Terminé).
  10. Sous Store Output Values (Stocker les valeurs de sortie), cliquez dans le champ _409 Exception (Exception _409) et sélectionnez New Resource (Nouvelle ressource).
    • Resource Type (Type de ressource) : Variable
    • API Name (Nom d’API) : existingAccount
    • Data Type (Type de données) : Définie par Apex
    • Apex Class (Classe Apex) : ExternalService__BankService_accountDetails
    • Availability Outside the Flow (Disponibilité hors du flux) : Sélectionnez Available for input (Disponible pour l’entrée) et Available for output (Disponible pour la sortie).
  11. Cliquez sur Done (Terminé), puis sur Done (Terminé).

Fenêtre New action (Nouvelle action) avec l’action addAccount paramétrée.

Compte tenu du nombre de représentants de la banque qui recrutent de nouveaux clients, qui sait avec certitude si un compte existe déjà pour Maria Thompson ? Nous allons donc ajouter une logique pour déterminer si ce compte existe ou non. 

Ajout d’une décision

Si le compte n’existe pas, lorsque le flux est exécuté, celui-ci suit le chemin « créer un compte » et procède à la mise à jour du nouveau compte utilisateur via addAccount. Si le compte existe déjà (résultat par défaut), il suit le chemin « mettre à jour ». Nous mettons alors simplement à jour l’enregistrement utilisateur Salesforce avec les informations issues du service bancaire. Ce type de logique d’évaluation et de branchement convient parfaitement à l’élément Decision (Décision) de Flow Builder. 

  1. Dans l’onglet Elements (Éléments) de la boîte à outils, faites glisser Decision (Décision) vers la zone de dessin.
  2. En haut de la fenêtre New Decision (Nouvelle décision), saisissez les valeurs suivantes.
    • Label (Étiquette) : Bank Account Updated? (Compte bancaire mis à jour ?)
    • API Name (Nom d’API) : Bank_Account_Updated (Compte_bancaire_mis_à_jour). Supprimez le ? à la fin de la chaîne API_Name (Nom_API).
  3. Dans la section Outcomes (Résultats), deux résultats sont affichés à gauche : New Outcome (Nouveau résultat) et Default Outcome (Résultat par défaut).
  4. Assurez-vous que New Outcome (Nouveau résultat) est sélectionné et saisissez les valeurs suivantes dans la section Outcome Details (Détails du résultat).
    • Label (Étiquette) : Bank Account Created (Compte bancaire créé)
    • API Name (Nom d’API) : Bank_Account_Created (Compte_bancaire_créé)
    • Sous Condition Requirements to Execute Outcome (Conditions requises pour exécuter le résultat), sélectionnez All Conditions are Met (AND) (Toutes les conditions sont remplies (ET)).
  5. Pour Resource (Ressource), saisissez les conditions suivantes.
    • Resource (Ressource) : existingAccount
    • Opérateur : Is Null (Est nul)
    • Valeur : $GlobalConstant.true
      Notez que la ressource existingAccount ne contient aucun suffixe (par exemple, existingAccount.id ou existingAccount.name). C’est pour que vous puissiez rechercher une correspondance dans l’ensemble de l’objet, et non dans un seul champ. Ainsi, le nom et le type de compte, saisis au tout début, doivent tous les deux correspondre pour qu’un compte existant soit mis à jour. Si vous ne trouvez pas de correspondance, créez un compte. 
  6. Sélectionnez Default Outcome (Résultat par défaut) et saisissez ce qui suit :
    • Label (Étiquette) : Bank Account Found (Compte bancaire trouvé)
  7. Cliquez sur Done (Terminé).
Remarque

Notez que Bank Account Found (Compte bancaire trouvé) n’indique aucune condition. C’est parce qu’il s’agit du résultat par défaut. Si les conditions ne sont pas remplies pour que le flux crée un compte, le flux emprunte toujours ce chemin et met à jour les informations du compte.

Ajout d’une attribution

Dans le cas où un compte bancaire existe déjà, nous allons dire au flux de mettre à jour le champ Salesforce User Account ID (ID du compte utilisateur Salesforce) en le remplaçant par l’ID du compte bancaire. Pour cela, vous devez attribuer la valeur à une variable (account.id).

  1. Dans la boîte à outils, faites glisser l’élément Assignment (Attribution) vers la zone de dessin.
  2. Dans la fenêtre New Assignment (Nouvelle attribution), saisissez les valeurs suivantes :
    • Label (Étiquette) : Assign Existing Bank Account ID (Attribuer l’ID du compte bancaire existant)
    • API Name (Nom d’API) : Assign_Existing_Bank_Account_ID (Attribuer_l’ID_du_compte_bancaire_existant)
  3. Dans la section Set Variable Values (Définir des valeurs de variable), saisissez les valeurs suivantes.
    • Variable : account.id
    • Opérateur : Equals (Est égal à)
    • Value (Valeur) : existingAccount.id
  4. Cliquez sur Done (Terminé) et ignorez les avertissements.
Remarque

Vous ne pouvez pas copier et coller les valeurs de variable. Pour la variable, saisissez account (compte), et cliquez sur account sous Apex-Defined Variable (Variable définie par Apex) et sélectionnez id.

Ajout de l’élément de mise à jour des enregistrements

Nous allons reprendre les valeurs stockées dans les variables pour mettre à jour notre enregistrement utilisateur Salesforce avec le type et l’ID du compte bancaire. 

  1. Dans la boîte à outils, faites glisser un élément Update Records (Mettre à jour les enregistrements) vers la zone de dessin.
  2. Dans la fenêtre New Update Records (Nouveau Mettre à jour des enregistrements), saisissez les valeurs suivantes :
    • Label (Étiquette) : Update Salesforce User Record (Mettre à jour l’enregistrement utilisateur Salesforce)
    • API Name (Nom d’API) : Update_Salesforce_User_Record (Mettre_à_jour_l’enregistrement_utilisateur_Salesforce)
  3. Sélectionnez Specify conditions to identify records, and set fields individually (Spécifier des conditions d'identification des enregistrements, puis définir les champs individuellement).
  4. Sous Update Records of This Object Type (Mettre à jour les enregistrements de ce type d'objet) :
    • Objet : User (Utilisateur)
  5. Sous Filter User Records (Filtrer les enregistrements utilisateur) :
    • Exigences de condition pour la mise à jour de l’enregistrement : Toutes les conditions sont remplies (ET)
    • Field (Champ) : LastName (Nom)
    • Opérateur : Equals (Est égal à)
    • Valeur : Last_Name_on_Account (Nom_sur_le_compte)
  6. Sous Set Field Values for the User Records (Définir les valeurs de champ sur les enregistrements utilisateur) :
    • Field (Champ) : Account_ID__c (ID_de_compte___c)
    • Value (Valeur) : account.id, sous Apex-Defined (Définie par Apex)
  7. Sélectionnez + Add Field (+ Ajouter un champ).
    • Field (Champ) : Account_Type__c (Type_de_compte___c)
    • Valeur : Bank_Account_Type (Type_de_compte_bancaire), sous Screen Components (Composants d’écran), et non sous Apex-Defined (Définie par Apex)Fenêtre New Update Records (Nouveau Mettre à jour des enregistrements) dans laquelle des valeurs ont été saisies.
  8. Cliquez sur Done (Terminé).

Liaison des éléments

Bientôt terminé ! Vous avez juste besoin de relier votre flux. Commençons par relier les éléments dans le bon ordre en faisant glisser le nœud de connecteur vers l’élément cible afin que notre processus métier se déroule correctement au moment de l’exécution. N’oubliez pas de l’enregistrer.  

  1. Reliez l’élément Start (Début) à l’élément Screen Bank Account Record (Écran - Enregistrement de compte bancaire).
  2. Reliez l’élément Screen Bank Account Record (Écran - Enregistrement de compte bancaire) à l’élément Action Add Bank Account (Action - Ajouter un compte bancaire).
  3. Reliez l’élément Action Add Bank Account (Action - Ajouter un compte bancaire) au résultat Decision Bank Account Updated? (Décision - Compte bancaire mis à jour ?).
  4. Alignez l’élément Decision (Décision) sur la zone de dessin de manière à avoir de l’espace pour placer un connecteur sortant de chaque côté.
  5. Reliez le résultat Decision Bank Account Updated? (Décision - Compte bancaire mis à jour ?) à l’élément Assignment Assign Existing Bank Account ID (Attribution - Attribuer l’ID du compte bancaire existant).
  6. Lorsque vous y êtes invité, sélectionnez Bank Account Found (Compte bancaire trouvé) pour le résultat de décision à attribuer au chemin, puis cliquez sur Done (Terminé).Fenêtre Select outcome for decision connector (Sélectionner le résultat du connecteur de décision)
  7. Reliez l’élément Assignment Assign Existing Bank Account ID (Attribution - Attribuer l’ID du compte bancaire existant) à l’élément Update Records Update Salesforce User Record (Mettre à jour les enregistrements - Mettre à jour l’enregistrement utilisateur Salesforce).
  8. Reliez le résultat Decision Bank Account Updated? (Décision - Compte bancaire mis à jour ?) à l’élément Update Records Update Salesforce User Record (Mettre à jour les enregistrements - Mettre à jour l’enregistrement utilisateur Salesforce).
  9. Cliquez sur Save (Enregistrer).

Débogage de votre flux

Vous avez presque fini. Mais avant de conclure, nous allons utiliser le mode de débogage pour vérifier l’exécution de votre flux. 

  1. Cliquez sur Debug (Déboguer).
  2. Sélectionnez Show details of what’s executed and render flow in Lightning runtime (Afficher les détails des éléments exécutés et restituer le flux à l’exécution de Lightning)
  3. Cliquez sur Run (Exécuter).
  4. Pour Last Name on Account (Nom sur le compte), saisissez Thompson et pour Bank Account Type (Type de compte bancaire), saisissez Checking (Courant).
  5. Cliquez sur Next (Suivant).

Le flux est exécuté avec nos entrées. 

Sous Debug Details (Détails de débogage), suivez l’ensemble du flux que vous venez de créer. 

En premier, vous pouvez voir vos entrées de texte. Ensuite, sous BANKSERVICE.ADDACCOUNT, vous pouvez voir que les entrées de texte ont été correctement attribuées et que les sorties indiquent soit qu’un compte existe :

{!existingAccount} = 409exc

et

{!account} = 201 (null)

…soit qu’aucun compte n’a été trouvé et qu’un compte a été créé :

{!existingAccount} = 409exc (null)

et

{!account} = 201

La phase Decision (Décision) vérifie le résultat de la décision. Les variables ont été attribuées.

Et maintenant, sous Update Records (Mettre à jour les enregistrements), vous pouvez voir que les champs Account Type (Type de compte) et Account ID (ID du compte) de Salesforce ont été remplis avec les nouvelles valeurs issues du service Web de la banque.  

Remarque

Ce n’est pas grave si vous obtenez des résultats différents (201 ou 401). Le résultat dépend de l’actualisation des comptes par l’application.

Et voilà ! L’enregistrement utilisateur de Maria Thompson est prêt dans Salesforce.

Sous votre casquette de représentant de la banque, vous avez saisi le nom et le type de compte dans Salesforce, et notre application Flow a automatiquement mis à jour un compte bancaire existant (ou en a créé un) dans le service de la banque et a renvoyé l’ID du compte et le nouveau type de compte à l’enregistrement utilisateur Salesforce. 

Vous disposez désormais d’un moyen de suivre les opérations des comptes bancaires de votre clientèle directement depuis Salesforce. « Sans code », avez-vous dit ? Oui. Vous avez fait tout ceci sans écrire une seule ligne de code.

Limites de votre application

Vous devez également savoir que vous pouvez recevoir une erreur. Par exemple, si vous indiquez « Maria Thompson » dans le champ Last Name on Account (Nom sur le compte), vous recevrez une erreur, car les espaces ne sont pas autorisés dans ce champ. De même, une erreur peut s’afficher si vous saisissez un nom de moins de six caractères (par exemple, Jones). Il s’agit là d’une autre limite de notre application. Voici quelques-uns des codes que vous pourriez rencontrer.

Code Description pour le service bancaire Acme

200

Le système trouve un compte avec un nom donné

201

Réponse lorsque le compte n’existe pas et que nous pouvons en créer un

204

Réponse lorsque le système trouve un compte avec un nom donné

400

Réponse en cas d’erreur si le nom du compte contient moins de six caractères minimum ou contient des espaces

404

Réponse en cas d’erreur si le compte n’est pas pris en charge par le service ou s’il est introuvable

409

Réponse lorsque le compte existe et que nous ne pouvons pas en créer un

Remarque

Si nous avions créé un flux à utiliser avec un véritable service bancaire externe, nous aurions créé des enregistrements avec des identifiants uniques, et non des noms. Il existe d’autres logiques qui sont certainement trop élémentaires pour un scénario bancaire, mais encore une fois, nous préférons privilégier la simplicité pour vous aider à bien comprendre le fonctionnement de l’assistant Services externes. 

Récapitulatif

Super ! Vous avez fait un excellent travail. Revenons quelques instants sur la façon dont vous avez créé ce flux avec l’assistant Services externes et examinons les étapes que vous avez suivies tout au long du processus. Notez que même si vous avez dû utiliser une définition de schéma conforme à OpenAPI dans votre spécification d’API, la majeure partie du travail repose sur une méthode déclarative (c’est-à-dire avec peu ou pas de code). Pratique, n’est-ce pas ?

Image illustrant les six étapes d’utilisation de l’assistant Services externes avec Flow.

Et maintenant, c’est le moment de vérifier votre travail.

Formez-vous gratuitement !
Créez un compte pour continuer.
Qu’est-ce que vous y gagnez ?
  • Obtenez des recommandations personnalisées pour vos objectifs de carrière
  • Mettez en pratique vos compétences grâce à des défis pratiques et à des questionnaires
  • Suivez et partagez vos progrès avec des employeurs
  • Découvrez des opportunités de mentorat et de carrière