Adición de una acción o función de Dataverse a la aplicación de código

En este artículo se muestra cómo detectar y agregar acciones y funciones de Dataverse a una aplicación de código Power Apps mediante la CLI de Power Apps.

Prerrequisitos

  • Una aplicación de código Power Apps inicializada con pa app init
  • @microsoft/power-apps versión 1.1.1 o posterior en el package.json
  • Acceso al entorno de Dataverse que contiene la operación que desea usar

La CLI le pide que inicie sesión si aún no está autenticado.

Paso 1: Búsqueda de operaciones disponibles

Use pa app find-dataverse-api para buscar operaciones por nombre en el entorno configurado para la aplicación de código:

pa app find-dataverse-api --search "WhoAmI"

La salida enumera las operaciones coincidentes e incluye el tipo de operación, los parámetros, la tabla de enlace y el tipo de valor devuelto.

====================================================================================================
Dataverse Operations
====================================================================================================

  WhoAmI  (Function)
  Returns: mscrm.WhoAmIResponse

----------------------------------------------------------------------------------------------------
Total: 1 operation(s)
====================================================================================================

Esta función y el tipo de valor devuelto se documentan aquí:

También puede buscar acciones. Por ejemplo:

pa app find-dataverse-api --search "AddToQueue"
====================================================================================================
Dataverse Operations
====================================================================================================

  AddToQueue  (Action)
  Bound to: mscrm.queue
  Parameters:
    - Target: mscrm.crmbaseentity
    - SourceQueue?: mscrm.queue
    - QueueItemProperties?: mscrm.queueitem
  Returns: mscrm.AddToQueueResponse

----------------------------------------------------------------------------------------------------
Total: 1 operation(s)
====================================================================================================

Esta acción, los tipos de parámetros y los tipos devueltos se documentan aquí:

La búsqueda usa una coincidencia de subcadena sin distinción entre mayúsculas y minúsculas en el nombre de la operación. Para devolver JSON para escenarios de scripting o de agente de codificación, incluya --json:

pa app find-dataverse-api --search "WhoAmI" --json

Paso 2: Agregar la operación

Después de encontrar el nombre de la operación, agréguelo a la aplicación:

pa app add dataverse-api --api-name WhoAmI

El comando:

  1. Obtiene la definición de la operación del punto de conexión de Dataverse$metadata.
  2. Escribe el esquema de la operación en <schemaPath>/dataverse/<ApiName>.Schema.json.
  3. Guarda esquemas para las tablas de Dataverse a las que hace referencia la operación.
  4. Actualiza power.config.json.
  5. dataSourcesInfo.tsRegenera .
  6. Genera modelos typeScript y una clase de servicio en <codeGenPath>/generated/.

Al agregar la operación, la CLI devuelve una confirmación:

Dataverse API 'WhoAmI' added successfully.

Paso 3: Uso del servicio generado

El comando genera una <ApiName>Service clase para la operación. Después de agregar WhoAmI, importe su servicio:

import { WhoAmIService } from './generated/services/WhoAmIService';

Llame al método generado:

const result = await WhoAmIService.WhoAmI();
// result.value contains BusinessUnitId, UserId, and OrganizationId.

Para una acción enlazada como AddToQueue, el primer argumento es el identificador del registro en el que opera la acción:

import { AddToQueueService } from './generated/services/AddToQueueService';

const result = await AddToQueueService.AddToQueue(
  queueId,
  target,
  sourceQueue,
  queueItemProperties
);

Los tipos de parámetro y valor devuelto se basan en el esquema de Dataverse:

  • Los parámetros GUID usan el string tipo .
  • Los parámetros de búsqueda que hacen referencia a una tabla de Dataverse usan Record<string, unknown>.
  • Las operaciones sin un valor devuelto usan Promise<IOperationResult<void>>.
  • Las operaciones que devuelven un valor escalar usan Promise<IOperationResult<T>>.
  • Las operaciones que devuelven un tipo complejo o una tabla usan Promise<IOperationResult<Record<string, unknown>>>.

Actualización de una operación

Vuelva a ejecutar pa app add dataverse-api con el mismo nombre de operación para obtener la definición más reciente:

pa app add dataverse-api --api-name WhoAmI

El comando sobrescribe el esquema de la operación, regenera dataSourcesInfo.ts, quita las entradas de configuración duplicadas y conserva los archivos de esquema de tabla a los que se hace referencia.

Archivos creados o actualizados

File Cambio
<schemaPath>/dataverse/<ApiName>.Schema.json Crea o sobrescribe el esquema de la operación.
<schemaPath>/dataverse/<TableName>.Schema.json Crea esquemas para tablas a las que se hace referencia si aún no existen.
<schemaPath>/appschemas/dataSourcesInfo.ts Regenera la información del origen de datos.
power.config.json Agrega la referencia de Dataverse y, para una operación enlazada, la tabla de enlace.
<codeGenPath>/generated/models/<TableName>Model.ts Genera modelos para tablas a las que se hace referencia.
<codeGenPath>/generated/services/<ApiName>Service.ts Genera la clase de servicio para la operación.

Troubleshooting

No se encontraron operaciones

La búsqueda solo coincide con el nombre de la operación. Pruebe un término de búsqueda más corto o diferente. Incluya --json para inspeccionar la respuesta.

Los archivos generados no están actualizados

Vuelva a ejecutar pa app add dataverse-api con el mismo nombre de operación. Si cambió el nombre o quitó la operación y los archivos generados obsoletos permanecen, elimine esos archivos antes de volver a generar la operación.