Marco de trabajo de eventos

Completado

Microsoft Dataverse expone eventos para indicar dónde se está ejecutando actualmente la canalización. Podemos controlar estos eventos para cosas como validar datos, evitar que se completen las transacciones o automatizar cualquier lógica de negocios que no se pueda lograr por medios declarativos.

Para suscribirnos a estos eventos, es necesario registrarse en ensamblados .NET (denominados complementos) para ejecutar la lógica personalizada siempre que se produzca un determinado evento. Podemos realizar el registro mediante una herramienta denominada Plug-in Registration Tool. Para obtener más información sobre Plug-in Registration Tool, consulte el tutorial Registrar un complemento.

En un nivel alto, el control de eventos implica tres cosas. Primero, debe suscribirse a un mensaje específico que represente el tipo de operación (o evento) que está ocurriendo (o que está por ocurrir), como Crear, Recuperar, Actualizar, etc. También debe indicar en qué parte de esa canalización de eventos quisiera que se ejecutase su lógica (es decir, antes o después de la operación). También puede controlar eventos antes de que ocurra la validación, un método práctico que puede utilizar para aplicar lógica de validación avanzada que no se puede lograr a través de reglas de negocios o flujos de trabajo. Por último, debe indicar el modo de ejecución en el que le gustaría que la lógica se ejecutase (de forma sincrónica o asincrónica).

Veamos ahora estas tres áreas con más detalle.

Mensajes de eventos

Dataverse expone numerosos mensajes que se publican cuando ocurren varias operaciones de datos. Para obtener más información sobre estos mensajes, consulte Utilizar mensajes con el servicio de la organización.

Las operaciones básicas de datos expuestas por Dataverse son:

  • Create

  • Retrieve

  • RetrieveMultiple

  • Update

  • Delete

  • Associate

  • Disassociate

Además, hay varios mensajes que se exponen contextualmente, según el tipo de tabla que se esté controlando. Por ejemplo, si mi tabla tiene una columna consolidada, puedo implementar un controlador de eventos en el mensaje de evento CalculateRollupField.

En general, podemos encontrar un inventario de estos mensajes personalizados en Dataverse buscando en el espacio de nombres Microsoft.Sdk.Messages las clases cuyo nombre termine en \Request. Otra forma de ver qué mensajes están disponibles para un tipo determinado de tabla es navegar por las combinaciones de tabla y mensaje con Plug-in Registration Tool.

Asimismo, podemos crear y exponer nuestros propios mensajes mediante la creación de acciones personalizadas. Para obtener más información sobre las acciones, consulte Crear acciones propias.

Canalización de eventos

Además de la suscripción a mensajes o tipos de evento específicos, Dataverse también expone una forma de especificar en qué parte de la canalización se ejecuta su lógica personalizada. Para los desarrolladores de ASP.NET, esto es como trabajar con los ciclos de vida de página en una aplicación web. Este enfoque es un patrón de desarrollo común para las arquitecturas de publicación-suscripción, y debería resultar bastante familiar para los desarrolladores con experiencia en otros marcos de trabajo de eventos.

Validación previa

El evento de prevalidación se produce primero en la canalización, antes de que se realicen las comprobaciones de seguridad. Su uso está destinado a garantizar que el usuario que ejecuta la transacción actual tenga los permisos correctos necesarios para realizar la operación prevista.

Como desarrollador, puede utilizar este evento para ejecutar la lógica de validación y cancelar la operación antes de que ocurra la transacción. Por ejemplo, si está configurado para ejecutarse cada vez que se actualice una tabla, puede cancelar la operación antes de que ocurra la actualización iniciando un método InvalidPluginExecutionException dentro de la lógica de ejecución del complemento. Para obtener más información sobre el contexto de ejecución, consulte Entender el contexto de ejecución.

Operación previa

Use este evento si desea cambiar cualquier valor de la tabla antes de que se guarde.

Operación posterior

Use este evento para modificar cualquier propiedad del mensaje antes de que el solicitante reciba la respuesta. Asegúrese de no aplicar ninguna actualización a la tabla correspondiente en este momento, ya que desencadenará otro evento de actualización.

Modos de ejecución (sincrónico y asincrónico)

Pude configurar complementos para ejecutarse de forma sincrónica o asincrónica, en función del tipo de operación de canalización que estemos controlando.

Sincrónico

Los complementos registrados en este modo se ejecutarán tan pronto el procesamiento del evento alcanza su etapa de canalización de ejecución y la operación completa no continuará hasta que la lógica haya finalizado la ejecución. Si se registran varios complementos para ejecutarse en la misma etapa de canalización, el atributo de orden de ejecución (especificado a través de Plug-in Registration Tool) determinará cuál se ejecuta primero.

Asincrónico

Los complementos registrados en este modo se envían como un trabajo del sistema al servicio asincrónico, que ejecuta su lógica una vez que se completa la operación correspondiente. Para obtener más información sobre cómo funcionan los trabajos del sistema, consulte Servicio asincrónico.

Nota

Solo puede registrar los complementos asincrónicos para la etapa de PostOperation de la canalización de eventos.