Présentation des solutions

Effectué

Microsoft Power Platform utilise la solution Microsoft Dataverse pour suivre et gérer les applications, les flux, les tables et même les composants de code développeur tels que JavaScript et les plug-ins. Les solutions sont des conteneurs qui peuvent être utilisés pour transporter les actifs du projet d’un environnement à un autre. Les solutions sont un élément clé de la stratégie Application Lifecycle Management (ALM) de Microsoft Power Platform.

Les solutions peuvent être gérées ou non

  • Solutions non gérées : utilisées dans les environnements de développement lorsque vous apportez des modifications à vos composants. De nouveaux composants peuvent être créés dans la solution et tout composant existant dans l’environnement Dataverse peut également être ajouté. Les solutions non gérées peuvent être exportées comme non gérées ou gérées. Les versions non gérées exportées de vos solutions doivent être archivées dans votre système de contrôle de code source. Un outil nommé SolutionPackager peut être utilisé pour préparer les solutions à intégrer. Vous pouvez automatiser ce processus à l’aide des outils Microsoft Power Platform Build Tools.

  • Solutions gérées : permettent de déployer tout environnement autre qu’un environnement de développement pour la solution concernée. Les composants de solution gérée ne peuvent pas être directement modifiés ou supprimés de la solution gérée et aucun nouveau composant ne peut être ajouté. Vous pouvez cependant inclure le composant dans une autre solution non gérée et y apporter des modifications. Cela crée une dépendance à la solution gérée. Les solutions gérées peuvent être gérées indépendamment des autres solutions gérées dans un environnement. Bien que vous puissiez exporter manuellement une solution non gérée en tant que gérée, il est recommandé de générer des solutions gérées en tant qu’artefact de build à partir d’un processus de génération automatisé.

Les solutions peuvent être créées et gérées via le portail des créateurs (make.powerapps.com) et peuvent également être créées et gérées par les développeurs à l’aide de l’API de la plateforme. En outre, des outils comme SolutionPackager, Package Deployer et des tâches et actions de génération DevOps et GitHub permettent aux développeurs d’exécuter et d’automatiser diverses tâches liées à la solution.

Les solutions peuvent être superposées

Plusieurs solutions peuvent coexister au sein d’un environnement. Pour gérer ces solutions, Dataverse les suit à l’aide d’un concept de couche au niveau de chaque composant de solution. Toutes les solutions non gérées sont suivies comme une seule couche, tandis que chaque solution gérée est suivie séparément. Lorsqu’il existe plusieurs couches de solutions gérées, la dernière solution gérée installée dans un environnement est utilisée par rapport aux solutions gérées précédemment importées. Certains composants prennent en charge la fusion au lieu d’une approche de type « La dernière l’emporte ». Par exemple, un formulaire pour une application Power Apps pilotée par modèle peut être modifié par trois solutions gérées, chacune modifiant différentes sections du formulaire. Dans cet exemple, le résultat fusionné serait un formulaire combiné comprenant les modifications des trois solutions gérées. Toutefois, la couche non gérée se trouve toujours en haut et toute modification apportée à la couche non gérée remplace toute modification des solutions gérées dans un environnement. Au final, un utilisateur voit une combinaison de toutes les couches de solution dans un environnement. L’image suivante illustre ce concept :

Le concept de superposition est essentiel pour permettre à plusieurs solutions de fonctionner ensemble dans un seul environnement. Il facilite également la possibilité de personnalisations supplémentaires des composants à partir d’une solution gérée.

Dépendances de solution

Les composants de solution dépendent souvent d’autres composants de solution. Le runtime de solution suit ces dépendances pour garantir que les solutions ne peuvent pas être supprimées si une autre solution en dépend.

Utiliser des solutions à l’aide de la CLI Power Platform

Outre l’utilisation des portails des créateurs, les développeurs peuvent également effectuer de nombreuses tâches de gestion des solutions à l’aide de la CLI Power Platform.

Par exemple, ce qui suit initialiserait un répertoire avec un nouveau projet de solution Dataverse, puis ajouterait une référence à un composant PCF de curseur créé par le développeur.

pac solution init --publisher-name developer --publisher-prefix dev
pac solution add-reference --path c:\Users\Downloads\SliderComponent

Packaging de solution

Les solutions exportées depuis un environnement Dataverse sont simplement un fichier zip compressé avec les métadonnées incluses. En tant que fichier binaire unique, il n’est pas efficace ou utile lorsqu’il est placé dans un référentiel de contrôle de code source.

Pour faciliter le contrôle du code source, des outils de packaging de solution peuvent décompresser une solution Dataverse en une série de fichiers XML et d’autres fichiers plus faciles à gérer par un système de contrôle du code source. Les outils de packaging de solution peuvent également recompresser le fichier zip de la solution à l’aide des composants extraits.

Les développeurs peuvent implémenter la prise en charge du packaging de solution à l’aide des outils suivants :

  • CLI Power Platform
  • Power Platform Build Tools pour implémenter l’automatisation
  • Outil SolutionPackager

Packaging de solution à l’aide de la CLI Power Platform

Par exemple, ce qui suit exporterait une solution depuis Dataverse et décompresserait tous les fichiers individuels à l’aide de la logique SolutionPackager.

pac solution pack --zipfile C:\MyProject.zip --folder .\MyProjectUnpacked\.
pac solution unpack --zipfile C:\MyProject.zip --folder .\MyProjectUnpacked\.

Outil SolutionPackager

L’outil SolutionPackager est distribué dans le cadre du package NuGet Microsoft.CrmSdk.CoreTools.

L’outil packager de solution est un exécutable qui permet d’effectuer les actions suivantes :

  • Extraire : extraction du fichier .zip de la solution dans un dossier

  • Compresser : compression d’un dossier en un fichier .zip

Il prend en charge divers arguments de ligne de commande vous permettant d’effectuer certaines actions lorsque vous extrayez/compressez la solution. Pour en savoir plus sur l’utilisation de l’outil SolutionPackager, consultez l’article Outil SolutionPackager.

Il est parfois nécessaire pour gérer les éléments tels que les ressources web ou les assemblys de plug-in créés et gérés dans des projets distincts. Cela nécessite que les fichiers d’une solution soient mappés de leur emplacement par défaut dans un dossier d’extraction à leur emplacement dans le répertoire de projet approprié. Par exemple, un assembly de plug-in se trouve généralement dans le dossier de sortie bin du projet d’assembly de plug-in. Dans ce cas, utilisez l’argument /map pour gérer le mappage de ces emplacements. Pour une explication détaillée sur la création d’un document de mappage XML, voir Utiliser l’argument de commande /map.

Bien que SolutionPackager puisse être exécuté manuellement de manière autonome, il est le plus souvent exécuté dans le cadre d’un processus de création automatisé. Les tâches de création Microsoft Power Platform Azure DevOps et GitHub Actions comportent des étapes décompressant et compressant une solution à l’aide de SolutionPackager.