Didacticiel : Écrire, déployer et déboguer du code X++
L’expérience de développeur unifiée pour les applications de finance et d’opérations vous permet d’écrire du code sur votre ordinateur de développement local et de l’exécuter dans un service cloud. Il existe une séparation de fonctionnalité entre ces deux niveaux (local et cloud).
- Niveau de développement : contient les métadonnées de finances et d’opérations et tout code source X++ sur votre ordinateur de développement local
- Niveau d’exécution : site hébergé dans le cloud qui stocke les données métier et exécute le code X++
Cet article montre comment :
- Écrire et compiler une classe X++ exécutable
- Déployer la classe dans le runtime cloud
- Déboguer le code X++ déployé
Commençons par développer une classe X++ exécutable à utiliser comme exemple. La seule tâche de la classe est d’enregistrer un message dans Infolog. L’important ici n’est pas ce que fait la classe exécutable, mais plutôt la manière dont nous la compilons, l’exécutons et la déboguons. Si vous souhaitez en savoir plus sur le langage X++, consultez la référence de programmation.
Important
Vous pouvez en savoir plus en regardant la présentation et les démos de la série Dynamics 365 FastTrack Tech Talk
Conditions préalables
Vous devez avoir accès à un environnement de développement unifié, le Visual Studio extensions d’outils installées et configurées sur votre machine de développeur et connectées au même environnement. Il est important de conserver les modifications de métadonnées sur votre ordinateur de développeur déployées dans l’environnement connecté. Pour plus d’informations : Installer et configurer les outils de développement
Créer un modèle
Nous commençons par créer un modèle dans Visual Studio.
Lancez Visual Studio et choisissez Continuer sans code.
Choisissez l’option de menu Extensions>Dynamics 365>Gestion des modèles>Créer un modèle.... Si vous ne voyez pas cette option de menu, l’extension Visual Studio requise n’est pas installée.
Saisissez le nom de modèle « MyTestModel » lorsque le formulaire vous y invite, en fournissant des informations pertinentes pour le reste des informations requises.
À l’étape suivante du formulaire, choisissez Créer un nouveau package.
Choisissez tous les modèles référencés. Vous devez simplement spécifier les dépendances dans les packages Application Platform et Application Foundation dans cet exemple simple.
Sélectionnez Suivant plusieurs fois jusqu’à ce que le package soit créé.
Ajouter et compiler la classe X++ exécutable
Créez un projet et une classe X++ dans Visual Studio en procédant comme suit.
- Créez un projet dans Visual Studio qui contient la classe exécutable. Le nom de la classe n’est pas important ici. Pour cet exercice, conservez le nom par défaut, c’est-à-dire FinanceOperations3.
- Ajoutez une classe exécutable au projet dans l’Explorateur de solutions en cliquant avec le bouton droit sur le projet et en choisissant Ajouter>Nouvel élément.
- Sélectionnez une Classe exécutable dans le menu Code sous Éléments Dynamics 365 et appelez-la « MyRunnableClass ». Visual Studio ouvre une fenêtre avec le modèle pour une classe exécutable qui fournit une méthode statique
main
appelée lors de l’exécution de la classe exécutable. - Ajoutez le code X++ suivant à la méthode
main
. Étant donné que nous ne fournissons qu’une implémentation du jeton ici, ajoutez un appel pour enregistrer un message de chaîne dans Infolog :
internal final class MyRunnableClass
{
public static void main(Args _args)
{
Info('Hello World from the Server Side');
}
}
Compilez la classe pour garantir que vous n’avez introduit aucune erreur dans ce code. La compilation est effectuée en sélectionnant Générer dans le menu contextuel du projet.
Déployer la classe
Tout le travail que nous avons effectué jusqu’à présent s’est produit du côté client. Le compilateur X++ et les outils associés sont tous installés localement, ainsi que les métadonnées qui définissent l’application sur laquelle vous développez. Dans Visual Studio, vous pouvez utiliser l’élément de menu Configurer les métadonnées pour gérer la configuration avec laquelle vous travaillez.
Maintenant il est temps d’exécuter le code et, pour l’exécution du code, vous devez déployer le code au niveau du serveur (cloud). Pour cette opération, utilisez l’élément de menu Extension>Dynamics 365>Déployer>Déployer les modèles dans l’environnement en ligne. La boîte de dialogue qui apparaît vous permet de sélectionner les packages à déployer. Dans ce cas, vous devez sélectionner « MyTestModel ». Vous pouvez facilement trouver ce modèle en utilisant le champ de recherche en haut de la liste de packages. Au bas de la boîte de dialogue, consultez les packages référencés. Étant donné que ces packages font partie du code fourni par Microsoft, il n’est pas nécessaire de les déployer car ils sont déjà installés au niveau du serveur.
À ce stade, vous accédez au point de terminaison dans le cloud ; par conséquent, à moins que vous ne soyez déjà connecté, vous devez probablement vous authentifier et vous connecter à l’environnement. Utilisez vos informations d’identification Microsoft Dataverse pour vous connecter à Dataverse et sélectionner la solution à utiliser. Après une courte attente, l’authentification est terminée.
Important
Il existe différentes manières de déployer vos modifications dans l’environnement de développement unifié.
Déployez le modèle complet via la boîte de dialogue Dynamics 365>Déployer>Déployer les modèles... . Vous pouvez choisir de synchroniser la base de données si vous le souhaitez.
Dans le cadre d’une génération complète, déployez le modèle complet. Ce déploiement est lancé via la boîte de dialogue Dynamics 365>Générer les modèles si l’option Déployer dans l’environnement en ligne connecté est activée. L’outil synchronise ou non la base de données en fonction du paramètre Synchroniser la base de données dans le même onglet Options.
Dans le cadre d’une génération incrémentielle à partir de l’Explorateur de solutions, si vous définissez Déployer les modifications dans l’environnement en ligne sur true, seules les modifications depuis le dernier déploiement réussi ou celles effectuées dans le cadre de cette génération sont déployées. Les paramètres du projet sont respectés pour Synchroniser la base de données.
Cliquez avec le bouton droit sur un projet et choisissez Déployer le modèle pour le projet.... Seules les modifications depuis le dernier déploiement réussi sont déployées, mais la base de données du module n’est pas synchronisée.
Synchronisez la base de données pour tous les modèles sans rien déployer de nouveau via Dynamics 365>Synchroniser la base de données....
Vous pouvez suivre la progression du déploiement en accédant au menu déroulant "FinOps Cloud Runtime" dans la Visual Studio fenêtre de sortie. Une fois ce déploiement terminé, vous pouvez voir les informations du journal en suivant le lien affiché dans la fenêtre de sortie.
Déboguer le code déployé
Après avoir compilé le code du projet et l’avoir chargé dans le point de terminaison cloud, le binaire est prêt à être exécuté. Pour vérifier que tout fonctionne avec le code de classe compilé, déboguez-le.
Dans Visual Studio, définissez les options de débogage pour charger les symboles pour votre package ainsi que pour les packages ApplicationPlatform et ApplicationFoundation.
Pour définir les options, commencez par ouvrir les options à partir du menu Extensions, puis accédez à l’onglet Débogage. La page Débogage affiche les options de chargement des symboles. Veillez à indiquer que vous souhaitez charger les éléments dans votre solution ainsi que les packages ApplicationFoundation et ApplicationPlatform.
Définissez un point d’arrêt dans la ligne où nous appelons la méthode
Info
, puis appuyez sur la flèche verte dans la barre d’outils ou utilisez le raccourci clavier F5 pour démarrer le débogage.Une fenêtre du navigateur s’ouvre avec une URL qui désigne la classe exécutable. Après quelques instants, le navigateur charge le formulaire qui montre que l’exécuteur de classe est actif et exécute la classe MyRunnableClass. Ensuite, le débogueur charge les symboles pour votre projet et l’exécution s’arrête au point d’arrêt.
Appuyez sur F5 pour continuer l’exécution, puis voyez que le volet Infolog dans Visual Studio affiche le message que nous avons saisi dans Infolog en utilisant l’appel de la méthode
Info
.Actualisez la fenêtre du navigateur, ce qui recharge l’URL.
Vous verrez que le point d’arrêt se charge immédiatement. Le débogueur est toujours en cours d’exécution et le message de sortie apparaît une seconde fois dans Infolog sans redémarrer le débogueur. Cette technique est particulièrement utile lors de l’exécution de formulaires. Vous pouvez toujours actualiser le navigateur et le formulaire est chargé à nouveau sans aucun retard causé par le chargement des symboles.
Essayons maintenant ceci. Au lieu de réécrire fastidieusement notre propre formulaire, utilisez un formulaire qui existe déjà. Commencez par utiliser le formulaire SysUserSetup qui vous permet de définir la colorisation (thème) utilisée pour afficher les formulaires. Nous allons modifier l’URL pour ouvrir le formulaire SysUserSetup au lieu d’exécuter la classe en modifiant l’élément de menu (mi), cette partie qui désigne l’élément de menu pour démarrer l’exécuteur de classe. L’URL se présentera comme suit :
https://<environment>?prt=initial&debug=vs&activityid=\<unchanged>&cmp=DAT&mi=SysUserSetup
Vous verrez maintenant le formulaire qui vous permet de choisir les couleurs.
Définissons maintenant un point d’arrêt dans le formulaire.
- Ouvrez l’ Explorateur d’applications à partir du menu Afficher.
- Saisissez la chaîne
SysUserSetup type:"form"
dans la barre de recherche de la fenêtre de l’Explorateur d’applications. - Sélectionnez le formulaire, puis sélectionnez Afficher le code pour ouvrir l’éditeur avec le code source pour ce formulaire.
- Dans ce formulaire, définissez un point d’arrêt dans la méthode
selectionChange
du contrôle ThemeChooser. Ce code est déclenché lorsque l’utilisateur sélectionne un nouveau thème de couleur. - Dans la fenêtre du navigateur, sélectionnez l’un des carrés colorés, par exemple le rouge. Vous atteignez le point d’arrêt.
- Continuez l’exécution en appuyant sur F10 ou F5. Un autre carré coloré est atteint et le point d’arrêt est déclenché à nouveau.
- Vous pouvez surveiller les locaux, définir de nouveaux points d’arrêt et effectuer diverses tâches de débogage.
Important
Si vous souhaitez attacher le débogueur au processus AOS en cours d’exécution dans l’environnement unifié, utilisez Dynamics 365>Lancer le débogueur.
Pour détacher le débogueur de l’exécution sans redémarrer AOS, utilisez Détacher au lieu d’arrêter.
Utilisez Application Insights pour surveiller et diagnostiquer l’application en cours d’exécution dans l’environnement de développement unifié. En savoir plus sur l’observabilité : Surveillance et télémétrie avec Application Insights
Synthèse
En guise de récapitulatif, voici un résumé et les points à retenir de cet exercice.
Nous avons commencé par utiliser Visual Studio pour créer une classe exécutable simple. Après la compilation, le package devait être transféré vers le point de terminaison cloud pour exécution. Le code X++ ne peut être exécuté que dans le cloud, nous avons donc effectué une opération de déploiement. Une fois le déploiement terminé, nous avons exécuté le code en définissant un point d’arrêt et en exécutant le débogueur. Nous avons ensuite démarré un formulaire à partir du navigateur et avons remarqué que les points d’arrêt étaient correctement atteints lors de l’utilisation du formulaire, et nous n’avions pas besoin de redémarrer le débogueur pour que cela se produise. En fait, le débogueur peut être démarré en utilisant l’option Lancer le débogueur dans le menu Extension. Vous pouvez ensuite saisir une URL dans le navigateur, exécuter le scénario pour déboguer et les points d’arrêt seront atteints.
Voir aussi
Expérience de développement unifiée pour les finances et les opérations | Dynamics 365 FastTrack Tech Talk
Tests unitaires dans l’expérience unifiée du développeur
Créez et gérez des environnements dans le Power Platform Centre d’administration
Gérer les applications Dynamics 365