Ejemplo: API personalizada ExportDataUsingFetchXmlToAnnotation

Este ejemplo muestra cómo escribir un complemento que admita una API personalizada denominada sample_ExportDataUsingFetchXmlToAnnotation. Puede acceder al código de muestra desde PowerApps-Samples/dataverse/orgsvc/C#/ExportDataUsingFetchXmlToAnnotation/.

El complemento proporciona lógica para la operación principal de la API personalizada. La api personalizada sample_ExportDataUsingFetchXmlToAnnotation recupera datos utilizando el parámetro de entrada proporcionado FetchXML y crea un archivo CSV. Luego crea un registro de anotación y devuelve el annotationid como la propiedad de respuesta AnnotationId.

NOTA : El tamaño de los datos en el archivo CSV debe estar por debajo del límite de tamaño del archivo adjunto especificado en la configuración del sistema; de lo contrario, la creación del archivo adjunto falla.

Cómo ejecutar esta muestra

Para ejecutar el código que se encuentra en este ejemplo, primero debe crear una API personalizada en su organización.

Hay dos formas de crear la api personalizada:

  1. Importar el archivo de solución administrada
  2. Crear API personalizadas

Importar el archivo de solución administrada

El ExportDataUsingFetchXmlToAnnotation_1_0_0_0_managed.zip de esta carpeta contiene la API personalizada sample_ExportDataUsingFetchXmlToAnnotation que utiliza este código y una API de limpieza sample_CleanupExportedDataAnnotations. Puede importar este archivo de solución para crear la API personalizada en su organización. Consulte Soluciones de importación para obtener instrucciones.

Una vez que haya terminado la prueba, use la API personalizada sample_CleanupExportedDataAnnotations para eliminar los datos creados y elimine solución administrada para eliminar la API personalizada.

sample_ExportDataUsingFetchXmlToAnnotation es una API personalizada independiente. Toma un parámetro de entrada FetchXml, que se usa para obtener los datos y devuelve AnnotationId el ID de registro del registro de anotación creado que contiene los datos del archivo CSV.

La API sample_CleanupExportedDataAnnotations no tiene parámetros de entrada/salida.

Crear API personalizadas

También puede compilar el ensamblaje del complemento en este proyecto, crear la API personalizada y asociar el paso del complemento mediante uno de varios métodos. Más información: Crear una API personalizada

Hay dos API personalizadas en esta solución. El siguiente JSON que describe estas API personalizadas se recuperó mediante la API web. Más información: Recuperar datos sobre API personalizadas

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"
    }
}

Cómo funciona este ejemplo

Puede usar la API web o la SDK Dataverse para .NET para usar la API personalizada sample_ExportDataUsingFetchXmlToAnnotation.

  1. Puede usar las instrucciones de ejemplo de inicio rápido del SDK para .NET para crear una aplicación de consola de .NET Framework con C#. Consulte Inicio rápido: ejecutar una solicitud de SDK para .NET (C#)

  2. Agregue el siguiente método estático a la clase de programa para crear un método reutilizable para exportar datos usando FetchXML to Anotación.

    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. Reemplace el código que llama WhoAmIRequest con el código siguiente:

     var annotationId = ExportDataUsingFetchXmlToAnnotation(svc)
    

Demostraciones

  1. Cómo obtener datos recursivamente de fetch xml.
  2. Cómo crear un adjunto csv a una entidad de anotación.
  3. Cómo escribir un complemento para admitir una API personalizada
  4. Cómo usar una API personalizada utilizando la API web
  5. Cómo usar una función de API personalizada utilizando SDK para .NET

Limpiar

Para limpiar todos los datos creados, use la acción de API personalizada sample_CleanupExportedDataAnnotations para eliminar los registros de anotación creados y luego desinstale solución administrada.

sample_CleanupExportedDataAnnotations elimina todos los registros de anotación que cumplen los siguientes criterios:

Columna valor
subject Export Data Using FetchXml To Csv
filename exportdatausingfetchxml.csv

Puede usar la API web o la SDK Dataverse para .NET para usar la API personalizada sample_CleanupExportedDataAnnotations.

  1. Puede usar las instrucciones de ejemplo de inicio rápido del SDK para .NET para crear una aplicación de consola de .NET con C#. Consulte Inicio rápido: ejecutar una solicitud de SDK para .NET (C#)

  2. Agregue el siguiente método estático a la clase de programa para crear un método reutilizable para eliminar datos creados usando la API personalizada sample_ExportDataUsingFetchXmlToAnnotation.

    static void CleanupExportedDataAnnotations(IOrganizationService service)
    {
        var req = new OrganizationRequest("sample_CleanupExportedDataAnnotations")
    
       service.Execute(req);
    }
    
  3. Reemplace el código que llama WhoAmIRequest con el código siguiente:

     CleanupExportedDataAnnotations(svc)
    

Consulte también

Crear y usar API personalizadas
Escribir un complemento
Registro de un complemento