Créer, gérer et publier des applications pilotées par modèle avec du code

Outre la création d’une application pilotée par modèle avec le concepteur d’application Power Apps, vous pouvez créer et gérer de manière programmée les applications pilotées par modèle.

Important

Il n’est pas nécessaire d’écrire du code pour créer des applications pilotées par modèle si vous n’en avez pas besoin ! Le concepteur d’application offre une expérience plus simple et intuitive pour créer des applications pilotées par modèle sans écrire de code grâce à une structure d’informations basée sur une vignette et une interface simplifiée. Pour en savoir plus, consultez Créer des applications pilotées par modèle à l’aide du concepteur d’application

La création d’une application pilotée par modèle implique les étapes suivantes :

  1. Créer une instance de la table AppModule pour définir votre application et ses propriétés.
  2. Ajouter ou supprimer des composants de votre application, comme une table, un plan de site et d’autres composants pour votre application personnalisée à l’aide des actions AddAppComponents et RemoveAppComponents.
  3. Rechercher dans votre application les composants requis manquants à l’aide de la fonction ValidateApp.
  4. Publier votre application.
  5. Associer les rôles de sécurité appropriés à votre application pilotée par modèle pour fournir un accès aux utilisateurs.

Créer votre application pilotée par modèle et définir ses propriétés

Vous devez disposer du rôle de sécurité Administrateur système ou Personnalisateur de système ou d’autorisations équivalentes pour pouvoir créer une application.

Vous devez spécifier les propriétés suivantes au minimum pour créer une application :

  • nom : unique pour votre application.
  • uniquename : peut être différent du nom de votre application, et ne peut contenir que des nombres et des caractères anglais. Lors de la création de cette application, le préfixe de l’éditeur de solutions est automatiquement ajouté au nom (par exemple « new_ »).
  • webresourceid : ID de la ressource web que vous souhaitez définir comme icône d’image pour votre application. Le système fournit une ressource web par défaut (ID : 953b9fac-1e5e-e611-80d6-00155ded156f) que vous pouvez utiliser comme icône pour votre application.

La demande suivante de l’API web crée un type Unified Interface pour une application :

POST [Organization URI]/api/data/v9.0/appmodules HTTP/1.1
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
Accept: application/json

{
    "name": "SDKTestApp",
    "uniquename":"SDKTestApp",
    "webresourceid":"953b9fac-1e5e-e611-80d6-00155ded156f"    
}

L’en-tête OData-EntityId de la réponse contient l’URI de l’application créée.

HTTP/1.1 204 No Content
OData-Version: 4.0
OData-EntityId: [Organization URI]/api/data/v9.0/appmodules(dd621d4a-d898-e711-80e7-00155db763be)

Ajouter ou supprimer des composants de votre application pilotée par modèle

Vous pouvez ajouter des composants dans une application comme un plan de site, une table, un tableau de bord, des flux de processus d’entreprise, des vues et des formulaires que vous souhaitez inclure dans votre application pilotée par modèle, ou les supprimer. Pour plus d’informations sur les composants pouvant être ajoutés à une application pilotée par modèle, voir Ajouter ou modifier des composants d’application dans le concepteur d’application.

Utilisez l’action AddAppComponents ou le message AddAppComponentsRequest pour ajouter des composants à votre application pilotée par modèle. L’action requiert que vous spécifiez les éléments suivants :

  • AppId : ID de l’application où vous souhaitez ajouter des composants.
  • Composants : collection de composants à ajouter. Vous devez spécifier l’ID et le type de table du composant à ajouter. Pour obtenir la liste des types de tables dans l’API Web Microsoft Dataverse pour applications, consultez Web API Entity Type Reference.

La demande suivante de l’API web ajoute une vue (savedquery) et un formulaire (systemform) à votre application :

POST [Organization URI]/api/data/v9.0/AddAppComponents HTTP/1.1
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
Accept: application/json

{
   "AppId":"dd621d4a-d898-e711-80e7-00155db763be",
   "Components":[
      {
         "savedqueryid":"00000000-0000-0000-00aa-000000666000",
         "@odata.type":"Microsoft.Dynamics.CRM.savedquery"
      },
      {
         "formid":"c9e7ec2d-efca-4e4c-b3e3-f63c4bba5e4b",
         "@odata.type":"Microsoft.Dynamics.CRM.systemform"
      }
   ]
}

Pour supprimer un composant d’une application, utilisez l’action RemoveAppComponents ou le message RemoveAppComponentsRequest. Cette action utilise le même ensemble de paramètres que l’action AddAppComponents.

La demande suivante de l’API Web supprime une vue (savedquery) de votre application :

POST [Organization URI]/api/data/v9.0/RemoveAppComponents HTTP/1.1
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
Accept: application/json

{
   "AppId":"dd621d4a-d898-e711-80e7-00155db763be",
   "Components":[
      {
         "savedqueryid":"00000000-0000-0000-00aa-000000666000",
         "@odata.type":"Microsoft.Dynamics.CRM.savedquery"
      }
   ]
}

Valider votre application pilotée par modèle

La validation d’une application consiste à rechercher des dépendances pour les composants que vous avez ajoutés dans votre application pilotée par modèle pour vérifier son bon fonctionnement. Cela revient au même que de sélectionner Valider dans le concepteur d’application. Pour plus d’informations, voir Valider votre application

Utilisez la fonction ValidateApp ou le message ValidateAppRequest pour valider votre application. La demande suivante de l’API Web montre comment valider votre application pilotée par modèle portant l’ID : dd621d4a-d898-e711-80e7-00155db763be :

GET [Organization URI]/api/data/v9.0/ValidateApp(AppModuleId=dd621d4a-d898-e711-80e7-00155db763be)

Si aucune erreur de validation ne se produit, la réponse se présente comme suit :

HTTP/1.1 200 OK
OData-Version: 4.0

{
    "@odata.context": "[Organization URI]/api/data/v9.0/$metadata#Microsoft.Dynamics.CRM.ValidateAppResponse",
    "AppValidationResponse": {
        "ValidationSuccess": true,
        "ValidationIssueList": []
    }
}

Si des problèmes de validation se produisent dans votre application, la réponse affiche des erreurs/avertissements dans la collection ValidationIssueList :

HTTP/1.1 200 OK
OData-Version: 4.0

{
    "@odata.context": "[Organization URI]/api/data/v9.0/$metadata#Microsoft.Dynamics.CRM.ValidateAppResponse",
    "AppValidationResponse": {
        "ValidationSuccess": false,
        "ValidationIssueList": [
            {
                "ErrorType": "Error",
                "Message": "App does not contain Site Map",
                "DisplayName": null,
                "ComponentId": "00000000-0000-0000-0000-000000000000",
                "ComponentType": 0,
                "ComponentSubType": 0,
                "ParentEntityId": "00000000-0000-0000-0000-000000000000",
                "ParentEntityName": null,
                "CRMErrorCode": -2147155684,
                "RequiredComponents": []
            },
            {
                "ErrorType": "Warning",
                "Message": "Account doesn't reference a form or view. App users will see all forms and views.",
                "DisplayName": null,
                "ComponentId": "00000000-0000-0000-0000-000000000000",
                "ComponentType": 0,
                "ComponentSubType": 0,
                "ParentEntityId": "00000000-0000-0000-0000-000000000000",
                "ParentEntityName": null,
                "CRMErrorCode": -2147155691,
                "RequiredComponents": []
            }
        ]
    }
}

Publier votre application pilotée par modèle

Après avoir ajouté les composants nécessaires à votre application pilotée par modèle et l’avoir validé, vous devez la publier pour qu’elle soit accessible aux utilisateurs.

Utilisez l’action PublishXml ou le message PublishXmlRequest pour publier votre application pilotée par modèle. La demande suivante montre comment publier votre application pilotée par modèle portant l’ID : dd621d4a-d898-e711-80e7-00155db763be :

POST [Organization URI]/api/data/v9.0/PublishXml HTTP/1.1
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
Accept: application/json

{  
  "ParameterXml":"<importexportxml><appmodules><appmodule>dd621d4a-d898-e711-80e7-00155db763be</appmodule></appmodules></importexportxml>"
}

Gérer l’accès aux applications basée sur un modèle à l’aide des rôles de sécurité

Pour fournir aux utilisateurs un accès à vos applications afin qu’ils puissent y accéder à partir de la zone Paramètres > Mes applications ou de la page d’accueil, vous pouvez associer des rôles de sécurité à vos applications pilotées par modèle. Les utilisateurs affectés aux rôles de sécurité associés peuvent visualiser et utiliser vos applications pilotées par modèle dans Dataverse.

Utilisez la propriété de navigation appmoduleroles_association de la table AppModule pour associer une application pilotée par modèle à un rôle de sécurité. La demande suivante montre comment associer une application pilotée par modèle à un rôle de sécurité :

POST [Organization URI]/api/data/v9.0/appmodules(dd621d4a-d898-e711-80e7-00155db763be)appmoduleroles_association/$ref HTTP/1.1
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
Accept: application/json

{  
  "@odata.id":"[Organization URI]/api/data/v9.0/roles(<roleId>)"
}

Pour dissocier un rôle de sécurité d’une application pilotée par modèle, utilisez la demande DELETE avec la même propriété de navigation. Par exemple :

DELETE   [Organization URI]/api/data/v9.0/appmodules(dd621d4a-d898-e711-80e7-00155db763be)/appmoduleroles_association/$ref?$id=[Organization URI]/api/data/v9.0/roles(<roleId)

Gérer vos applications basée sur un modèle et leurs composants

Cette section donne des informations sur la récupération de vos applications, la mise à jour des propriétés d’application, la récupération des composants d’application et la suppression des applications.

Récupérer des applications publiées

Pour récupérer des applications publiées, utilisez la demande suivante :

GET [Organization URI]/api/data/v9.0/appmodules?$select=name,clienttype

Récupérer des applications non publiées

Pour récupérer des applications non publiées, utilisez la fonction RetrieveUnpublishedMultiple. Par exemple :

GET [Organization URI]/api/data/v9.0/appmodules/Microsoft.Dynamics.CRM.RetrieveUnpublishedMultiple()?$select=name,clienttype

Récupérer les composants d’une application pilotée par modèle publiée

Pour récupérer les composants d’une application pilotée par modèle, utilisez la fonction RetrieveAppComponents ou le message RetrieveAppComponentsRequest. Par exemple :

GET [Organization URI]/api/data/v9.0/RetrieveAppComponents(AppModuleId=dd621d4a-d898-e711-80e7-00155db763be)

Récupérer les rôles de sécurité associés à une application pilotée par modèle publiée

Pour récupérer les rôles de sécurité associés à votre application pilotée par modèle, utilisez l’option de requête système $expand avec la propriété de navigation appmoduleroles_association. Par exemple, voici la demande de récupération de tous les rôles de sécurité associés à une application pilotée par modèle portant l’ID : dd621d4a-d898-e711-80e7-00155db763be :

GET [Organization URI]/api/data/v9.0/appmodules(dd621d4a-d898-e711-80e7-00155db763be)?$expand=appmoduleroles_association&$select=name,appmoduleroles_association

Supprimer des applications pilotées par modèle

Utilisez la demande DELETE pour supprimer une application pilotée par modèle. Par exemple :

DELETE [Organization URI]/api/data/v9.0/appmodules(dd621d4a-d898-e711-80e7-00155db763be)

Support de l’API client pour les applications pilotées par modèle

Vous pouvez utiliser les API client suivantes avec les applications pilotées par modèle :

Voir aussi

Créer des application pilotée par modèle à l’aide du concepteur d’application

Notes

Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)

Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).