Création d’un flux à l’aide d’actions de service externe
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.
- Dans Setup (Configuration), saisissez
Flows
(Flux) dans la zone Quick Find (Recherche rapide), puis sélectionnez Flows (Flux).
- Cliquez sur New Flow (Nouveau flux).
- Vérifiez que l’option Start from Scratch (Commencer à zéro) est sélectionnée, puis cliquez sur Next (Suivant).
- Sélectionnez Screen Flow (Flux d’écran) et cliquez sur Create (Créer).
- Dans la barre de boutons, remplacez le paramètre Auto-Layout (Présentation automatique) par Free-Form (Forme libre).
- 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)
- 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).
- 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)
- 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)
- Cliquez sur Done (Terminé).
- 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)
- Cliquez sur Save (Enregistrer) et ignorez les avertissements.
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.
- Dans la boîte à outils, avec l’onglet Elements (Éléments) sélectionné, faites glisser l’élément Action vers la zone de dessin.
- Définissez Filter By (Filtrer par) sur Type, sélectionnez External Service (Service externe), puis cliquez dans la zone de recherche.
- Sélectionnez Add Account (Ajouter un compte).
- Label (Étiquette) :
Add Bank Account
(Ajouter un compte bancaire) - API Name (Nom d’API) :
Add_Bank_Account
(Ajouter_un_compte_bancaire)
- Cliquez dans le champ Account Name (Nom du compte), sélectionnez Bank Account Record (Enregistrement de compte bancaire), puis Last_Name_on_Account (Nom_sur_le_compte).
- Cliquez dans le champ Account Type (Type de compte), sélectionnez Bank Account Record (Enregistrement de compte bancaire), puis Bank_Account_Type (Type_de_compte_bancaire).
- Développez la section Show advanced options (Afficher les options avancées) et cochez la case Manually assign variables (Attribuer des variables manuellement).
- Sous Store Output Values (Stocker les valeurs de sortie), cliquez dans le champ 201 et sélectionnez 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).
- Cliquez sur Done (Terminé).
- 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).
- Cliquez sur Done (Terminé), puis sur Done (Terminé).
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.
- Dans l’onglet Elements (Éléments) de la boîte à outils, faites glisser Decision (Décision) vers la zone de dessin.
- 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).
- 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).
- 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)).
- Pour Resource (Ressource), saisissez les conditions suivantes.
- Resource (Ressource) : existingAccount
- Opérateur : Is Null (Est nul)
- Valeur : True (Vrai)
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.
- Sélectionnez Default Outcome (Résultat par défaut) et saisissez ce qui suit :
- Label (Étiquette) :
Bank Account Found
(Compte bancaire trouvé)
- Cliquez sur Done (Terminé).
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).
- Dans la boîte à outils, faites glisser l’élément Assignment (Attribution) vers la zone de dessin.
- 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)
- Dans la section Set Variable Values (Définir des valeurs de variable), saisissez les valeurs suivantes.
- Variable (Variable) : sélectionnez account (compte), puis id (identifiant)
- Opérateur : Equals (Est égal à)
- Valeur : sélectionnez existingAccount (compteExistant), puis id (identifiant)
- Cliquez sur Done (Terminé) et ignorez les avertissements.
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.
- Dans la boîte à outils, faites glisser un élément Update Records (Mettre à jour les enregistrements) vers la zone de dessin.
- 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)
- 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).
- Sous Update Records of This Object Type (Mettre à jour les enregistrements de ce type d’objet) :
- Objet : User (Utilisateur)
- 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)
- 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)
- Valeur : sélectionnez account (compte), puis id (identifiant) (sous Apex-Defined [Définie par Apex])
- Cliquez sur + 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)
- 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.
- Reliez l’élément Start (Début) à l’élément Screen Bank Account Record (Écran - Enregistrement de compte bancaire).
- 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).
- 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 ?).
- 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é.
- 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).
- 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é).
- 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).
- 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).
- 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.
- Cliquez sur Debug (Déboguer).
- 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)
- Cliquez sur Run (Exécuter).
- Pour Last Name on Account (Nom sur le compte), saisissez
Thompson
et pour Bank Account Type (Type de compte bancaire), saisissezChecking
(Courant).
- 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.
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 |
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 ?
Et maintenant, c’est le moment de vérifier votre travail.