Exemple de plug-ins low-code Dataverse (version préliminaire)
[Cette rubrique fait partie de la documentation en version préliminaire et peut faire l'objet de modifications.]
L’objectif de ces exemples de plug-ins consiste à vous aider à démarrer en les intégrant dans vos applications. Vous comprendrez que l’expérience de création inclut la création d’API personnalisées Microsoft Dataverse soutenues par des expressions Power Fx, qui peuvent déclencher des actions internes ou externes à Dataverse.
Important
- Cette fonctionnalité est en version préliminaire.
- Les fonctionnalités en version préliminaire ne sont pas destinées à une utilisation en production et peuvent être restreintes. Ces fonctionnalités sont disponibles avant une publication officielle afin que les clients puissent y accéder de façon anticipée et fournir des commentaires.
Conditions préalables
Pour utiliser l’un des exemples de plug-ins pour l’événement de données, l’application d’accélérateur Dataverse doit être installée dans l’environnement. Pour plus d’informations : Prérequis pour créer un plug-in de low-code
Notes
Les modèles d’e-mail ne sont disponibles que pour certaines tables. Pour plus d’informations : Créer des modèles pour les e-mails
Renvoyer une valeur non négative
Cet exemple utilise la fonction Abs() pour renvoyer la valeur non-négative de son argument. Si un nombre est négatif, Abs
renvoie l’équivalent positif.
Lancez l’application Dataverse Accelerator, sur la barre de commandes, sélectionnez Nouvelle action > Plug-in instantané.
Fournissez un nom complet, tel que le nom de la formule et sa description.
Créez un paramètre
Out
pour valider le comportement attendu qui a du sens, comme une chaîne Utiliser éventuellement des paramètres d’entrée pour faciliter les tests, qui ont du sens avec la formule.Dans l’éditeur de formule, mettez le paramètre
Out
entre crochets :{Out: "" }
Entrez une expression qui teste la formule :
- Vérifiez qu’Intellisense accepte la formule (le texte devient bleu clair).
- Implémentez une expression qui fournit une sortie pour aider à valider le résultat, par exemple.
{Out: "Abs(-5) = 5: " & Text( Abs(-5) = 5 ) }
Sélectionnez Suivant, puis sélectionnez Enregistrer.
Sélectionnez Tester pour tester la formule. Utilisez le paramètre de sortie pour valider le résultat.
Validation des entrées et erreurs personnalisées
Détection des doublons
Implémentez la validation des entrées côté serveur, telle que la détection des erreurs en double, qui génère un message d’erreur personnalisé.
- Lancez l’application Dataverse Accelerator, sur la barre de commandes, sélectionnez Nouvelle action > Plug-in automatisé.
- Dans le champ Nom, saisissez Vérification des doublons.
- Pour Table, sélectionnez Contact.
- Pour Exécuter ce plugin lorsque la ligne est, sélectionnez Créée.
- Dans la zone Formule, saisissez cette formule :
If( !IsBlank(LookUp([@Contacts],'Last Name'=ThisRecord.'Last Name' && 'First Name'=ThisRecord.'First Name')),
Error("You have existing contacts with the same first name and last name")
)
- Cliquez sur Enregistrer.
Test du plug-in
- Pour tester le plug-in, créez une application de canevas à l’aide du tableau des contacts en suivant les étapes ci-dessous : Spécifier une table
- Créez une ligne de contact.
- Créez un autre contact avec le même nom qu’à l’étape précédente.
- Un message s’affiche indiquant que des enregistrements en double ont été trouvés. Sélectionnez Ignorer et enregistrer à l’invite du message d’erreur.
Ce message d’erreur personnalisé s’affiche : Vous avez deux contacts avec le même nom et prénom.
Validation des données
Affichez des types d’erreurs spécifiques à l’aide de l’énumération ErrorKind.
Créez un plug-in automatisé.
Renseignez les valeurs suivantes :
- Nom : Validation de l’entrée
- Description : Vérifie la date valide et renvoie une erreur si elle n’est pas valide
- Table : Rendez-vous
- Exécutez cette règle de plug-in lorsque la ligne est : Mis à jour
Entrez la formule ci-dessous :
If(ThisRecord.'Due Date' < Now(), Error({ Kind: ErrorKind.Validation , Message: "The due date cannot be in the past" }) );
Sous Options avancées, définissez Quand cela devrait fonctionner pour Opération préalable ; vous souhaitez exécuter cette règle avant que les données ne soient enregistrées pour éviter les données non valides.
Cliquez sur Enregistrer.
Accédez à la fonction Erreur() pour en savoir plus sur les erreurs personnalisées.
Envoyer un e-mail en fonction d’un événement de données
Conditions préalables :
- La synchronisation côté serveur est configurée pour votre environnement. Pour plus d’informations : Configuration de la synchronisation côté serveur des messages électroniques, rendez-vous, contacts et tâches
- Un modèle de courrier électronique.
Exemple de modèle de courrier électronique
Voici un exemple de modèle de courrier électronique que vous pouvez créer pour l’événement de données basé sur SenMail :
- Type de modèle : Global
- Name : Commande Merci
- Description : utilisez ce modèle pour remercier un client d’avoir passé une commande chez vous.
- Objet :
Thank you for your order <orderconfirmation-{!salesorder:Order Number; }>
- Corps : utilisez ce code.
Hello {!Sales Order:First Name;},
Order Type: {! Sales Order: Order Type;},
Location Type: {! Sales Order: Location Type;},
Address1: {! Sales Order: Address 1;},
Address2: {! Sales Order: Address 2;},
Preferred Service Start Date 1: {! Sales Order: Preferred Service Start Date;},
Next Step- We take upto 48 hrs to schedule an in-person and will notify you as soon as we have a In-person Technician allocated at your site. For any questions, please contact us at 1-800-CON-SOLAR
Yours Sincerely,
Contoso Sales
Créer le plug-in automatisé
- Lancez l’application Dataverse Accelerator, puis sélectionnez +Nouveau plug-in sous Plug-ins automatisés.
- Saisissez les informations suivantes :
Nom : SendEmailUponCreate
Table : sélectionnez le nom de la table logique des commandes client, qui est SalesOrder. Cet événement est basé sur le tableau Commandes client.
Exécutez ce plug-in avec la ligne est : Créé
Formule : collez le code ci-dessous dans la zone Formule. Pour plus d’informations sur la fonction SendEmailFromTemplate, consultez action SendEmailFromTemplate.
XSendEmailFromTemplate( LookUp('Email Templates',StartsWith(title,"Order Thank You")).'Email Template', ThisRecord, LookUp(Users,'Primary Email'="sampleemail@sample.com"),[ThisRecord.Email] )
- Sélectionnez Avancé > Opération postérieure.
- Cliquez sur Enregistrer.
Le message de confirmation Plug-in enregistré avec succès s’affiche.
Envoyer des notifications dans l’application en fonction d’une action instantanée
Les notifications intégrées à l’application permettent aux créateurs de configurer des notifications contextuelles et exploitables pour les utilisateurs dans les applications pilotées par modèle.
Créer le plugin de low-code qui envoie une notification dans l’application
- Lancez l’application d’accélérateur Dataverse, puis sélectionnez +Nouveau plug-in sous Plug-ins instantanés.
- Entrez les informations suivantes, puis sélectionnez Suivant :
- Nom : NotifyTechnican1
- Description : ce plug-in instantané avertit l’utilisateur de l’application.
- Sur la page Définitions, créez des paramètres d’entrée avec ces types de données :
- OrderID : Chaîne
- TechnicianEmail : Chaîne
- Formule. Collez le code suivant dans la zone Formule. Pour plus d’informations sur cette fonction, accédez à l’Action SendAppNotification.
XSendAppNotification( "New service", LookUp(Users,'Primary Email'=TechnicianEmail), "You have a new solar panel installation scheduled on "& LookUp('Scheduling Results','OrderId'=OrderID).'ServiceDate'&" in "& LookUp('Service Orders','Order Number'=OrderID).City &". Contact the coordinator with any questions.", [ XCreateSidePaneActionForEntity( "View order", OrderID, "Sales Order", "cr8b8_serviceorder1", LookUp('Service Orders','Order Number'=OrderID).'Service Order' ) ] )
- Cliquez sur Suivant.
- Sur la page Résumé, sélectionnez Enregistrer.
Invoquer l’action instantanée de notification dans l’application
- Sélectionnez une application de canevas, puis sélectionnez Modifier sur la barre de commandes (ou en créer une).
- Sélectionnez l’écran dans le volet de navigation de gauche ou créez-en un nouveau.
- Dans le menu Insérer, ajoutez un Bouton à la page en utilisant Texte Avertir le technicien.
- Sélectionnez le bouton et saisissez ce qui suit dans la barre de formule fx , où DataCardValue17 est la colonne qui contient l’ID de commande et DataCardValue15 est la colonne qui contient l’adresse e-mail du technicien. Dans cet exemple, une application de canevas nommée Application de la commande de service est utilisée.
Environment.cr8b8_Notifytechnician1({ OrderID: DataCardValue17.Text, TechnicianEmail: DataCardValue15.Text }); Notify("The technician was notified!", NotificationType.Success, 2000);
- Enregistrer et Publier vos modifications.
Lorsque l’action Notifier le technicien est sélectionnée dans l’application, une notification dans l’application est envoyée au technicien qui a été affecté à la commande de service. Une action sur la notification ouvre les détails de la commande de service dans un volet latéral.
Exemple de plug-in instantané avec le connecteur MSN Météo
Ce plugin renvoie la météo actuelle pour un emplacement spécifique à l’aide du connecteur MSN Météo.
Conditions préalables :
- Conditions préalables pour créer un plug-in de low-code
- Le connecteur MSN Météo est autorisé dans l’environnement
Créez une référence de connexion pour MSN Météo si elle n’est pas encore disponible dans l’environnement :
Copiez l’extrait de code :
Terminez la modification de la formule à l’aide d’IntelliSense et utilisez les propriétés de réponse du connecteur si nécessaire :
Enregistrer
Conseil
Utilisez la fonction With() pour capturer l’intégralité de la réponse d’une action si vous souhaitez accéder aux différentes propriétés que la réponse peut avoir. Dans l’exemple ci-dessous, il existe un paramètre d’entrée Location
(string) et un paramètre de sortie Out
(string).
With({ /* Capture current weather response from connector */
c: new_MsnWeather.CurrentWeather( Location, "Imperial" ).responses.weather.current
},{ /* Return concatenated weather details */
Out: "Current temp: " & c.temp & " degrees. Feels like " & c.feels & " degrees. Wind speed is " & c.windSpd & " mph."
})
Bonnes pratiques
Gestion des erreurs de boucle infinie dans les plugins automatisés low-code
N’écrivez pas d’instruction de patch sur un plugin automatisé lors de l’événement ’Update’, où le patch se produit sur la même table que le plugin. Cela conduit à des boucles infinies et à des échecs d’exécution du plugin.
Modèle problématique : l’utilisation de la Patch()
formule déclenche une autre mise à jour.
Modèle recommandé : utilisez plutôt la Set()
formule pour éviter ce problème.