developing business events x++

Desarrollo de Business Events con X++

Continuando con nuestra serie de Business Events en Microsoft Dynamics 365 for Finance and Operations, toca hablar de la posibilidad de desarrollar nuestros propios eventos de negocio para ser capaces de notificar o interactuar con aplicaciones externas en casos que no están cubiertos por el catálogo de eventos de negocio.

Antes de comenzar con la creación del propio Business Event, hay ciertos aspectos que debemos tener en cuenta:

  • Los eventos de negocio deben ser duraderos, es decir, si una aplicación externa recibe una notificación de que cierta acción ha ocurrido, esta notificación debe ser fiable. Hay que hacer un diseño transaccional que asegure que este aspecto se cumplirá siempre.
  • Los eventos de negocio deben ser precisos, evitando enviar payloads (contenido del business event) genéricos en los que el receptor tenga que deducir el objetivo del business event.
  • Los eventos de negocio deben evitar el ruido, para conseguirlo se debe intentar lanzar el business event en un punto del código lo suficientemente específico para evitar realizar excesivas operaciones de filtrado.

Una vez tengamos claros estos puntos, podemos empezar a desarrollar, ¡que es a lo que hemos venido hoy! Para el ejemplo en cuestión, vamos a desarrollar un evento de negocio que sea lanzado cuando un cliente pase a estar No Bloqueado.

El primer paso será la creación del contrato de datos, que conformará el contenido del payload que enviaremos al exterior. Para ello creamos una clase que heredará de la BusinessEventContract

En esta clase añadimos las propiedades privadas que conformarán el payload, así como los métodos parm para poder acceder a ellas y los métodos newFromCustTable e initialize para inicializar los valores de las propiedades con los datos del cliente que estamos desbloqueando. Como veis, los métodos parm van decorados con dos atributos que establecerán el nombre y la descripción de los campos que estarán visibles en el cuerpo del business event.

El segundo paso será la creación de una clase que heredará de la BusinessEventBase.

Como podéis ver, decoramos el método buildContract con los atributos Wrappable(true) y Replaceable(true) para permitir la extensibilidad de este. Este método se ejecuta únicamente cuando un evento de negocio es activado o habilitado en una empresa.

Por último, solo nos quedaría establecer el punto concreto en el que se lanzará el evento en cuestión, y añadir las siguientes líneas de código en el mismo:

De este modo, el evento de negocio será lanzado únicamente si se encuentra activo para la empresa en la que estamos trabajando.

Con todos estos pasos hechos, vamos a ver nuestro evento de negocio en el catálogo de eventos. Para ello vamos a Administración del sistema > Configurar > Eventos de negocio > Catálogo de eventos de negocio. Una vez dentro, pulsaremos sobre el menú Generar > Volver a generar catálogo de eventos de negocio. Tras unos segundos, veremos cómo aparece nuestro business event. Si el business event no aparece en el catálogo, es posible que se necesite una sincronización completa de la base de datos porque el catálogo de eventos de negocio se genera durante este proceso.

Una vez terminado, ya estará disponible para ser consumido del mismo modo que vimos en el artículo anterior.

6 comments / Add your comment below

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información. ACEPTAR

Aviso de cookies