Eventos de negocio Microsoft Dataverse

La automatización de la lógica empresarial y la integración con otros sistemas están impulsadas por eventos. Cuando sucede algo interesante en una aplicación empresarial, se produce un evento y los datos que describen el evento están disponibles para que los suscriptores respondan. Microsoft Dataverse proporciona capacidades para retransmitir datos de eventos a los suscriptores utilizando las siguientes aplicaciones y tecnologías:

  • Flujos de Power Automate
  • Azure Service Bus
  • Centros de eventos de Azure
  • Webhooks
  • Complementos de Dataverse

Dataverse tiene un marco de eventos robusto para capturar eventos del sistema dentro de Dataverse. Puede responder a eventos dentro del sistema usando el marco de trabajo de eventos de Dataverse. Esto no cambia. Más información: Marco de trabajo de eventos

Los eventos de negocio de Dataverse proporcionan nuevas formas de exponer eventos y componer su lógica comercial para responder a ellos de forma asincrónica, como el desencadenante Cuando se realiza una acción de Power Automate Dataverse.

Estos son algunos ejemplos:

  • Tiene una lógica que desea aplicar cuando se realiza una operación de uso compartido en un registro propiedad del usuario. La única forma de iniciar la lógica en este mensaje de GrantAccess que ocurre cuando se comparte un registro es a través del marco de trabajo de eventos de Dataverse, normalmente a través de un complemento. Con eventos empresariales, puede catalogar la tabla que expondrá el mensaje de GrantAccess.

  • Un desarrollador de complementos puede tener cierta lógica en un código de complemento sincrónico que responde a un determinado conjunto de condiciones que pasan a las variables compartidas para que otro complemento asincrónico inicie cierta automatización. Con un evento empresarial, en lugar de pasar esos detalles a través de las variables compartidas de la canalización de eventos, puede llamar a una acción personalizada que contenga los detalles del evento en los parámetros. Un complemento asincrónico puede responder a la acción personalizada, o puede optar por utilizar Power Automate en su lugar. También se puede agregar otra lógica para responder a ese evento. Este patrón ofrece una mayor flexibilidad y la oportunidad de simplificar la lógica en su código de complemento.

Catálogos y eventos personalizados

Los eventos de negocios de Dataverse incluyen conceptos de eventos empresariales de finanzas y operaciones de Dynamics junto con el marco de trabajo de eventos de Dataverse para proporcionar una nueva forma de descubrir eventos y crear automatización cuando ocurren estos eventos.

  • Catálogo de eventos: con tantos eventos disponibles en el sistema, puede resultar difícil localizar el correcto. Un catálogo de eventos mejora el descubrimiento de eventos al asociar eventos con una solución y organizar eventos en categorías.

    Un catálogo solo incluye eventos seleccionados de alto valor relevantes para la solución. Agregar un evento a un catálogo es la forma en que expone el evento.

  • Eventos personalizados: puede crear acciones personalizadas para que sean eventos personalizados porque Dataverse los procesará utilizando su marco de eventos.

    Estos eventos pueden o no representar cambios de datos dentro de Dataverse. Puedes usar API personalizadas sin ninguna lógica síncrona que existe solo para notificar a los oyentes que ocurrió un evento de interés. Emite el evento llamando a la acción personalizada.

Catálogo de eventos

Para exponer un evento empresarial debe estar catalogado. Más información: Catálogo y tablas de asignación de catálogo

Un catálogo hace que sea más fácil descubrir el evento empresarial porque están agrupados por la solución contenedora y las categorías definidas para esa solución. El editor de soluciones selecciona qué eventos son más relevantes para su solución.

Un catálogo es una estructura jerárquica donde el nivel superior representa una solución. Entonces el siguiente nivel es una Categoría. Luego, las tablas y los eventos relevantes se asignan a una categoría.

Por ejemplo, lo siguiente representa un catálogo para una solución llamada Gestión de clientes de Contoso:

  • Administraión de clientes de Contoso
    • Tablas
      • Account
      • Contact
      • Pertenencia
    • Eventos de cliente
      • Tienda donde se ha entrado
      • Visitar sitio web
      • Comprar producto
      • Devolver producto

Este ejemplo usa Tablas y Eventos de clientes como categorías, pero puede utilizar cualquier agrupación de categorías que tenga sentido para su solución.

Si su solución consta de múltiples soluciones dependientes, puede definir el catálogo raíz en la solución base, luego agregar categorías adicionales y eventos asignados a las soluciones dependientes que las agregan.

Eventos de tabla

Cuando se asigna una tabla a una categoría, se incluirán ciertas operaciones vinculadas a la tabla. No puede seleccionar cada operación individualmente. Si la tabla admite operaciones de creación, actualización y eliminación, estos eventos se incluirán.

También se incluirán eventos adicionales relacionados con otras operaciones. Por ejemplo, si la tabla es propiedad del usuario, participa en eventos de seguridad. El propietario de cualquier registro de la tabla podrá compartirlo, cambiar la capacidad de compartir o dejar de compartir el registro. Las operaciones relacionadas con el intercambio se exponen como eventos GrantAccess, ModifyAccess y RevokeAccess. También se pueden incluir eventos adicionales dependiendo de la tabla. Si la tabla es una tabla virtual y se ha configurado para admitir eventos de tabla virtual, se incluirán los eventos OnExternalCreated, OnExternalUpdated y OnExternalDeleted. Más información: Habilitar las tablas virtuales para admitir eventos de Dataverse

Agregue solo aquellas tablas que contienen datos comerciales que serán de interés para los suscriptores. No debe intentar incluir todas las tablas.

La misma tabla se puede incluir en varios catálogos. Por ejemplo, si su solución depende de los datos del cliente en las tablas de cuentas o contactos de Dataverse, debe incluirlas. Otros catálogos pueden incluir tablas de su solución.

Eventos personalizados

Use la API personalizada de Dataverse para crear eventos personalizados. Cada API personalizada creará un nuevo mensaje de Dataverse y proporcionará el servicio web punto de conexión para llamar a la API personalizada. Más información: Crear y usar API personalizadas.

Los eventos comerciales personalizados solo pueden enviar notificaciones cuando se completa un evento. El marco de eventos de Dataverse proporciona capacidades para incluir lógica síncrona que puede cancelar una operación o cambiar la salida para que pueda extender el comportamiento del sistema. Muchos de los mismos mensajes expuestos con eventos empresariales pueden extenderse utilizando lógica síncrona del marco de eventos de Dataverse, pero las notificaciones de eventos comerciales solo se producen cuando estas operaciones se completan correctamente.

Por ejemplo, puede tener una API personalizada que encapsule un conjunto de operaciones que representan un proceso empresarial, como Reasignar, que cambiará la propiedad de un registro a otro según ciertos criterios. O Escalar, que elevará el estado de prioridad de un registro y creará tareas asociadas adicionales. Cuando usa una API personalizada de esta manera, está definiendo nuevos eventos que pueden ser de interés para los suscriptores. Si estas operaciones se completan con éxito, la lógica asincrónica se puede activar en ellos.

También puede crear una acción personalizada simplemente para permitir que los suscriptores respondan a ella. Eventos externos describe un caso específico donde los eventos se originan fuera de Dataverse, pero puede crear una API personalizada como eventos para usar dentro de Dataverse también usando la misma configuración. Si su acción personalizada está destinada solo a que los suscriptores respondan, le recomendamos que el nombre de su acción personalizada comience con On, como OnCustomerPurchase u OnVendorPaymentPosted.

La API personalizada se puede utilizar para muchos propósitos diferentes, no todos están relacionados con operaciones que representan eventos interesantes para la lógica empresarial. Por eso es necesario catalogar los eventos empresariales. El propietario de la solución que contiene la API personalizada solo debe catalogar las API personalizadas que representan eventos de alto valor. No debe intentar catalogar todas las acciones personalizadas que se incluyen en su solución.

Principios de diseño

Cuando considere apis personalizadas para catalogar como eventos comerciales en su solución, utilice los siguientes principios de diseño.

  • Intención clara: la intención detrás de creqar un evento de negocios debe entenderse claramente. En otras palabras, ¿cuál es el motivo de la creación del evento empresarial y cómo lo utilizará el suscriptor?

  • Específico: el evento debe ser específico para que un suscriptor no necesite filtrar si debe o no responder a él. No cree eventos comerciales genéricos a los que los suscriptores no siempre respondan.

  • Ligero: el evento debe contener solo los datos necesarios para describir el evento. Si el suscriptor requiere datos adicionales, la información del evento debe proporcionar el contexto que le permita recuperarlos si es necesario.

  • No para transferir datos : si su intención es transferir datos a un destinatario y, de hecho, crea un escenario de exportación de datos, no tiene un buen caso de uso para eventos comerciales. De hecho, el uso de eventos comerciales para escenarios de transferencia de datos es un mal uso de los eventos comerciales.

Acciones del proceso personalizadas

El concepto de Acción personalizada incluye tanto la API personalizada como acciones de procesos personalizados. Ambos crean una nueva API, pero la forma en que lo hacen es diferente. Para eventos de negocio personalizados, recomendamos la API personalizada.

Las acciones de procesos personalizados también se pueden catalogar como eventos comerciales. Esto es para compatibilidad con versiones anteriores si su solución ya utiliza acciones de proceso personalizadas para encapsular alguna lógica empresarial que representaría un evento empresarial. No es necesario que migre esta acción personalizada para utilizar la API personalizada.

Sin embargo, las acciones de procesos personalizados tienen las siguientes limitaciones:

  • Como cualquier flujo de trabajo, se pueden deshabilitar en la interfaz de usuario. Es posible que no sepa cuándo alguien deshabilita su acción de proceso personalizado hasta que de repente deja de funcionar.
  • Hasta hace poco, no había forma de evitar que los pasos del complemento sincrónico se registraran en acciones de procesos personalizados, lo que significa que cualquiera podía registrar pasos sincrónicos que podrían cambiar el comportamiento de la acción del proceso personalizado o incluso cancelarlo. Ahora hay una propiedad administrada IsCustomProcessingStepAllowedForOtherPublishers que permite que una acción de proceso personalizada bloquee esto. Pero si va a actualizar su acción de proceso personalizada para establecer esta propiedad, debería considerar convertirla para usar la API personalizada en su lugar.

Para obtener más información sobre en qué se diferencian, consulte Compare la acción del proceso personalizado y la API personalizada

Si su acción de proceso personalizado no contiene ninguna lógica dentro del diseñador de flujo de trabajo y se basa solo en complementos para realizar operaciones, probablemente pueda migrar la acción de proceso personalizado para que sea una API personalizada para mitigar estos problemas.

La comunidad de Power Platform ya ha creado herramientas para ayudar con esto. Vea el complemento de XrmToolBox Conversor de acción personalizada a API personalizada.

Nota

Las herramientas creadas por la comunidad no reciben soporte de Microsoft. Si tiene preguntas o problemas con las herramientas de la comunidad, comuníquese con el creador de la herramienta.

Eventos externos

Los eventos personalizados pueden representar eventos que ocurren en sistemas externos. Los eventos que ocurren en sistemas externos ya se han completado.

Las API personalizadas creadas para eventos externos deben ajustarse a estos principios:

  • No deben tener ningún tipo de complemento especificado para la operación principal.
  • No deben permitir ningún registro de pasos síncronos.
  • No deben tener propiedades de respuesta, solo parámetros de solicitud.
    • Sin lógica síncrona, no hay forma de establecer propiedades de respuesta.

Nota

Estos ajustes no son solo para eventos que ocurren fuera de Dataverse. La API personalizada se puede utilizar con esta configuración para representar eventos que ocurren también dentro de Dataverse.

Ejemplos

Comparemos dos ejemplos de eventos externos:

Escenario A: OnCustomerPurchase

Tiene una aplicación de punto de venta y la compra de un cliente es un evento importante que desea capturar. Quizás desee enviarles un correo electrónico agradeciéndoles por su compra y desea almacenar información sobre el monto total que el cliente ha gastado en Dataverse. Puede definir una API personalizada OnCustomerPurchase en Dataverse. Su aplicación de punto de venta puede enviar información sobre este evento a Dataverse. En Dataverse, desea actualizar un registro con el total. Entonces quiere usar Power Automate para enviar un correo electrónico agradeciéndoles su compra.

Puede parecer más eficiente implementar la lógica para calcular el total y actualizar el registro en una operación principal de la API personalizada. Pero la introducción de la lógica síncrona de esta manera introduce la posibilidad de que la lógica falle y devuelva un error a la aplicación de punto de venta que la llama. Debido a que el evento ya ha ocurrido, no es necesario realizar ninguna lógica síncrona que pueda causar el fallo de la llamada a Dataverse. En cambio, depende de Power Automate incluir toda la lógica o incluir otro paso de complemento asincrónico en el evento OnCustomerPurchase para actualizar el registro en Dataverse.

Escenario B: OnVendorPaymentPosted

Tiene una aplicación ERP que tiene un evento OnVendorPaymentPosted y simplemente desea simplificar la forma en que centraliza su lógica de automatización. Puede crear una api personalizada que represente este evento externo y configurar la aplicación ERP para llamar a esta API de Dataverse. Cuando catalogue esta API personalizada como un evento, podrá utilizar el conector Dataverse Power Automate para utilizar este evento como un desencadenador.

Este ejemplo espera que no se haga nada en Dataverse excepto permitir que se registre la lógica asíncrona para el evento.

Invocar API personalizada desde aplicaciones externas

El requisito clave para utilizar una API personalizada para enviar eventos comerciales es que su aplicación debe tener la capacidad de realizar solicitudes HTTP autorizadas a Dataverse. Para la autorización, las solicitudes que se originan en otras aplicaciones normalmente utilizarán una cuenta de usuario de la aplicación especial que debe crearse en el entorno de Dataverse. Los usuarios con licencia de Dataverse autenticados también pueden utilizar aplicaciones para enviar estas solicitudes.

Al eliminar toda la lógica síncrona de la API personalizada, la probabilidad de que un error provoque un error en la operación es extremadamente baja, pero no imposible. Su aplicación de llamada debe proporcionar una forma de lidiar con errores transitorios en caso de que el servicio Dataverse no responda, hay problemas de conectividad de red o se devuelven errores de límite de protección del servicio.

Para habilitar llamadas autorizadas a Dataverse desde su aplicación debe haber un usuario de la aplicación configurado para el entorno de Dataverse. Más información: Crear aplicaciones web mediante la autenticación de servidor a servidor (S2S).

Utilizar eventos de negocio para desencadenar la automatización

A medida que los eventos comerciales se conviertan en un patrón común, habrá múltiples formas de habilitar la automatización.

La primera experiencia donde se exponen los eventos empresariales es en el conector Power Automate Dataverse usando el desencadenador Cuando se realiza una acción.

Desencadenador Cuando se realiza una acción.

Dentro de esta experiencia, los eventos Crear, Actualizar y Eliminar no se muestran para los eventos de la tabla. Estos eventos ya están disponibles usando el desencadenador Cuando se agrega, modifica o elimina una fila.

Vea también

Catálogo y tablas de asignación de catálogo
Habilitar las tablas virtuales para admitir eventos de Dataverse

Nota

¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)

La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).