Partager via


Exemple : API personnalisée ExportDataUsingFetchXmlToAnnotation

Cet exemple montre comment écrire un plug-in qui prend en charge une API personnalisée nommée sample_ExportDataUsingFetchXmlToAnnotation. Vous pouvez accéder à l’exemple de code à partir de PowerApps-Samples/dataverse/orgsvc/C#/ExportDataUsingFetchXmlToAnnotation/.

Le plug-in fournit une logique pour le fonctionnement principal de l’API personnalisée. L’API personnalisée sample_ExportDataUsingFetchXmlToAnnotation récupère les données à l’aide du paramètre d’entrée FetchXML fourni et crée un fichier CSV. Il crée ensuite un enregistrement d’annotation et renvoie la annotationid comme propriété de réponse AnnotationId.

REMARQUE : La taille des données dans le fichier CSV doit être inférieure à la limite de taille de pièce jointe spécifiée dans les paramètres système ; sinon la création de la pièce jointe échoue.

Comment exécuter cet exemple

Pour exécuter le code trouvé dans cet exemple, vous devez d’abord créer une API personnalisée dans votre organisation.

Il existe deux façons de créer une API personnalisée :

  1. Importer le fichier de solution gérée
  2. Créer et utiliser des API personnalisées

Importer le fichier de solution gérée

Le fichier ExportDataUsingFetchXmlToAnnotation_1_0_0_0_managed.zip dans ce dossier contient l’API personnalisée sample_ExportDataUsingFetchXmlToAnnotation qui utilise ce code, ainsi qu’une API de nettoyage sample_CleanupExportedDataAnnotations. Vous pouvez importer ce fichier de solution pour créer l’API personnalisée dans votre organisation. Voir Importer des solutions pour les consignes.

Une fois les tests terminés, utilisez l’API personnalisée sample_CleanupExportedDataAnnotations pour supprimer les données créées et supprimez le solution gérée pour supprimer l’API personnalisée.

sample_ExportDataUsingFetchXmlToAnnotation est une API personnalisée non liée. Il prend un paramètre d’entrée FetchXml, qui est utilisé pour récupérer les données et renvoie l’ID d’enregistrement AnnotationId de l’enregistrement d’annotation créé qui contient les données du fichier CSV.

L’API sample_CleanupExportedDataAnnotations n’a pas de paramètres d’entrée/sortie.

Créer et utiliser des API personnalisées

Vous pouvez également créer l’assembly de plug-in dans ce projet, créer l’API personnalisée et associer l’étape de plug-in à l’aide de plusieurs méthodes. Pour plus d’informations : Créer une API personnalisée

Il existe deux API personnalisées dans cette solution. Le JSON suivant décrivant ces API personnalisées a été récupéré à l’aide de l’API web. Pour plus d’informations : Extraire les données sur les API personnalisées

sample_ExportDataUsingFetchXmlToAnnotation

{
    "uniquename": "sample_ExportDataUsingFetchXmlToAnnotation",
    "allowedcustomprocessingsteptype@OData.Community.Display.V1.FormattedValue": "None",
    "allowedcustomprocessingsteptype": 0,
    "bindingtype@OData.Community.Display.V1.FormattedValue": "Global",
    "bindingtype": 0,
    "boundentitylogicalname": null,
    "description": "Exports data using the input Fetch Xml to CSV attaches to an annotation record.",
    "displayname": "Export Data Using Fetch XML to Annotation",
    "executeprivilegename": null,
    "isfunction@OData.Community.Display.V1.FormattedValue": "No",
    "isfunction": false,
    "isprivate@OData.Community.Display.V1.FormattedValue": "No",
    "isprivate": false,
    "workflowsdkstepenabled@OData.Community.Display.V1.FormattedValue": "No",
    "workflowsdkstepenabled": false,
    "customapiid": "bd8ffcee-5a38-4d0a-b296-6848c94dd22e",
    "iscustomizable": {
        "Value": true,
        "CanBeChanged": true,
        "ManagedPropertyLogicalName": "iscustomizableanddeletable"
    },
    "CustomAPIRequestParameters": [
        {            
            "uniquename": "FetchXml",
            "name": "Fetch Xml",
            "description": "Fetch XML which is used to fetch all data and export to CSV",
            "displayname": "Fetch Xml",
            "type@OData.Community.Display.V1.FormattedValue": "String",
            "type": 10,
            "logicalentityname": null,
            "isoptional@OData.Community.Display.V1.FormattedValue": "No",
            "isoptional": false
        }
    ],
    "CustomAPIResponseProperties": [
        {
            "uniquename": "AnnotationId",
            "name": "Annotation Id",
            "description": "Id of the created annotation entity record.",
            "displayname": "Annotation Id",
            "type@OData.Community.Display.V1.FormattedValue": "Guid",
            "type": 12,
            "logicalentityname": null
        }
    ],
    "PluginTypeId": {
        "typename": "PowerApps.Samples.ExportDataUsingFetchXmlToAnnotationPlugin",
        "version": "1.0.0.0",
        "name": "PowerApps.Samples.ExportDataUsingFetchXmlToAnnotationPlugin",
        "assemblyname": "ExportDataUsingFetchXmlToAnnotation"
    }
}

sample_CleanupExportedDataAnnotations

{
    "uniquename": "sample_CleanupExportedDataAnnotations",
    "allowedcustomprocessingsteptype@OData.Community.Display.V1.FormattedValue": "None",
    "allowedcustomprocessingsteptype": 0,
    "bindingtype@OData.Community.Display.V1.FormattedValue": "Global",
    "bindingtype": 0,
    "boundentitylogicalname": null,
    "description": "Clean Up Exported Data Annotations",
    "displayname": "Clean Up Exported Data Annotations",
    "executeprivilegename": null,
    "isfunction@OData.Community.Display.V1.FormattedValue": "No",
    "isfunction": false,
    "isprivate@OData.Community.Display.V1.FormattedValue": "No",
    "isprivate": false,
    "workflowsdkstepenabled@OData.Community.Display.V1.FormattedValue": "No",
    "workflowsdkstepenabled": false,
    "iscustomizable": {
        "Value": true,
        "CanBeChanged": true,
        "ManagedPropertyLogicalName": "iscustomizableanddeletable"
    },
    "CustomAPIRequestParameters": [],
    "CustomAPIResponseProperties": [],
    "PluginTypeId": {
        "typename": "PowerApps.Samples.CleanUpExportedDataAnnotationsPlugin",
        "version": "1.0.0.0",
        "name": "PowerApps.Samples.CleanUpExportedDataAnnotationsPlugin",
        "assemblyname": "ExportDataUsingFetchXmlToAnnotation"
    }
}

Utiliser cet exemple

Vous pouvez utiliser l’API Web ou le service d’organisation avec le SDK Dataverse pour .NET pour utiliser l’API personnalisée sample_ExportDataUsingFetchXmlToAnnotation.

  1. Vous pouvez utiliser les exemples Démarrage rapide du SDK pour .NET pour créer une application console .NET Framework avec C#. Voir Démarrage rapide : exécuter une requête SDK pour .NET (C#)

  2. Ajoutez la méthode statique suivante à la classe de programme pour créer une méthode réutilisable pour exporter des données à l’aide de FetchXML vers Annotation.

    static Guid ExportDataUsingFetchXmlToAnnotation(IOrganizationService service)
    {
        var req = new OrganizationRequest("sample_ExportDataUsingFetchXmlToAnnotation")
        {
            ["FetchXml"] = @"<fetch version='1.0' output-format='xml-platform' mapping='logical'>
                            <entity name='account'>
                                <attribute name='accountid'/>
                                <attribute name='name'/>  
                            </entity>
                        </fetch>"
        };
    
        var resp = service.Execute(req);
    
        var annotationId = (Guid)resp["AnnotationId"];
    
        return annotationId;
    }
    
  3. Remplacez le code qui appelle WhoAmIRequest par le code suivant :

     var annotationId = ExportDataUsingFetchXmlToAnnotation(svc)
    

Montre ce qui suit

  1. Comment récupérer récursivement des données à partir de fetch xml.
  2. Comment créer une pièce jointe csv à l’entité d’annotation.
  3. Comment écrire un plug-in pour prendre en charge une API personnalisée
  4. Comment utiliser une API personnalisée à l’aide de l’API Web
  5. Comment utiliser une fonction d’API personnalisée à l’aide du SDK pour .NET

Nettoyer

Pour nettoyer toutes les données créées, utilisez l’action d’API personnalisée sample_CleanupExportedDataAnnotations pour supprimer les enregistrements d’annotation créés, puis désinstallez la solution gérée.

sample_CleanupExportedDataAnnotations supprime tous les enregistrements d’annotation qui répondent aux critères suivants :

Colonne active
subject Export Data Using FetchXml To Csv
filename exportdatausingfetchxml.csv

Vous pouvez utiliser l’API Web ou le service d’organisation avec le SDK Dataverse pour .NET pour utiliser l’API personnalisée sample_CleanupExportedDataAnnotations.

  1. Vous pouvez utiliser les exemples Démarrage rapide du SDK pour .NET pour créer une application console .NET avec C#. Voir Démarrage rapide : exécuter une requête SDK pour .NET (C#)

  2. Ajoutez la méthode statique suivante à la classe de programme pour créer une méthode réutilisable pour supprimer les données créées à l’aide de l’API personnalisée sample_ExportDataUsingFetchXmlToAnnotation.

    static void CleanupExportedDataAnnotations(IOrganizationService service)
    {
        var req = new OrganizationRequest("sample_CleanupExportedDataAnnotations")
    
       service.Execute(req);
    }
    
  3. Remplacez le code qui appelle WhoAmIRequest par le code suivant :

     CleanupExportedDataAnnotations(svc)
    

Voir aussi

Créer et utiliser des API personnalisées
Écrire un plug-in
Enregistrer un plug-in