Skip to content

Transmita eventos a escala con filtros de eventos y enriquecimiento de campo ☁️

Esta es una traducción que desde EGA Futura ofrecemos como cortesía a toda la Ohana y comunidad de programadores , consultores , administradores y arquitectos de Salesforce para toda Iberoamérica .

El enlace a la publicación original, lo encontrarás al final de este artículo.

Transmita eventos a escala con filtros de eventos y enriquecimiento de campos | Blog de desarrolladores de Salesforce

Las arquitecturas basadas en eventos son excelentes para el desacoplamiento y la escalabilidad. En esta publicación, veremos un par de funciones de la plataforma Salesforce que ayudan a los desarrolladores a usar eventos de plataforma y eventos de captura de datos modificados a escala. Comenzaremos con un repaso sobre la transmisión de eventos y exploraremos el concepto de canales personalizados. Luego nos sumergiremos en el filtrado de eventos y cambiaremos el enriquecimiento de campos de eventos.

Un repaso sobre la transmisión de eventos

Hay varios tipos diferentes de eventos de transmisión que están disponibles en la plataforma de Salesforce. En el contexto de esta publicación, solo nos centraremos en los tipos de eventos modernos: eventos de plataforma y eventos de cambio.

Los eventos de la plataforma son eventos que se activan desde el código, las herramientas de automatización como Flow o las llamadas a la API desde fuera de la plataforma de Salesforce. Estos eventos se utilizan para transmitir mensajes personalizados en el contexto de las integraciones. Usted controla la forma y el contenido de los eventos de la plataforma creando campos personalizados como lo haría al crear objetos personalizados (aunque los tipos de campo son limitados).

Los eventos de captura de datos de cambio (o eventos de cambio en breve) son eventos que Salesforce Platform envía automáticamente casi en tiempo real cuando se crea, modifica, elimina o recupera un registro. La forma de los eventos de cambio refleja fielmente la forma de su objeto relacionado: un evento de cambio de cuenta contiene algunos campos base de eventos de cambio más los campos del objeto de cuenta. No puede activar eventos de cambio manualmente ni definir campos de eventos de cambio personalizados.

Los eventos de plataforma y cambio son herramientas poderosas para crear integraciones basadas en eventos. Se vuelven aún más potentes cuando se usan a escala junto con canales personalizados.

Trabajar con canales personalizados

Para empezar, puede trabajar con eventos estándar y personalizados individuales, pero en algún momento puede ir más allá y crear canales personalizados para desbloquear funciones adicionales. Los canales personalizados le permiten agrupar varios eventos, así como trabajar con filtros y enriquecimiento (los cubriremos en las siguientes secciones).

Canales personalizados ( PlatformEventChannel objeto de metadatos, consulte la documentación ) se componen de uno o más miembros del canal (objeto de metadatos PlatformEventChannelMember , consulte la documentación ). Un miembro está vinculado a un evento de plataforma estándar o personalizado o a un evento de cambio. Un canal determinado no puede mezclar tipos de eventos: está compuesto por eventos de plataforma o eventos de cambio.


A partir de Spring '23, los canales personalizados y los miembros deben declararse y editarse a través de las herramientas o la API de metadatos. Por ejemplo, para crear un canal personalizado que contenga eventos de cambio con la API de herramientas, ejecute una solicitud POST en el punto final compartido a continuación (reemplace INSTANCE_URL con la URL de la instancia de su organización).

<dx-code-block title language code-block="/services/data/v57.0/tooling/sobjects/PlatformEventChannel»>

Utilice el siguiente JSON para el cuerpo de la solicitud.

Solicitar destacados:

  • FullName es el nombre de la API del canal personalizado. Debe terminar con __chn .
  • channeType establece el tipo de miembros que admite el canal. Su valor es data para eventos de captura de datos modificados o event para eventos de plataforma.

Una vez que haya declarado un canal personalizado, puede agregarle miembros llamando a este punto final:

<dx-code-block title language code-block="/services/data/v57.0/tooling/sobjects/PlatformEventChannelMember»>

Utilice el siguiente JSON para el cuerpo de la solicitud.

Solicitar destacados:

  • FullName es el nombre de la API del miembro del canal personalizado. Puede nombrarlo como desee, pero una convención es concatenar el nombre de la API del canal con el nombre de la entidad seleccionada. Tenga en cuenta que este campo no permite guiones bajos dobles, por lo que debe modificar el sufijo del nombre de la API del canal a simplemente _chn en lugar de __chn .
  • eventChannel asigna al nombre de la API del canal (el valor del atributo FullName de la solicitud anterior).
  • selectedEntity se asigna a un evento de plataforma o cambia el nombre de la API del evento. En este ejemplo, AccountChangeEvent es el evento de cambio estándar para el objeto Cuenta.

Después de agregar un miembro del canal, puede repetir la operación y agregar otros miembros. En el ejemplo anterior, le gustaría agregar otro miembro que realice un seguimiento de los eventos de cambio de contacto estándar.

Los canales personalizados se vuelven aún más poderosos cuando agrega la capacidad de especificar filtros de eventos y enriquecer los datos de eventos de cambio.

Filtrar eventos

Las organizaciones complejas generan grandes cantidades de eventos. Esto puede ser problemático para sus integraciones cuando necesita discriminar eventos relevantes del "ruido". No solo necesita manejar la lógica de filtrado en el lado del cliente, sino que también consume más eventos y esto afecta los límites de su organización.


Afortunadamente, ya no necesita suscribirse a todos los eventos y filtrar con alguna lógica de preprocesamiento en el lado del cliente, tiene la capacidad de especificar filtros de eventos de la plataforma y cambiar los filtros de eventos en el lado de la plataforma.

Al registrar miembros de canales personalizados, tiene acceso a un campo filterExpression que le permite especificar alguna lógica para filtrar eventos según los tipos de operación y los valores de campo. Las expresiones de filtro se basan en SOQL y admiten un subconjunto de operadores SOQL y tipos de campo con algunas limitaciones .

Por ejemplo, puede aplicar un filtro en eventos de cambio de cuenta para recibir solo operaciones de actualización para registros en la industria agrícola o bancaria con esta definición de miembro de canal:

Además de los filtros de eventos, también puede usar canales personalizados para enriquecer los eventos de cambio con campos adicionales.

Enriquecer los eventos de cambio

Al realizar la integración con un sistema de terceros, generalmente desea utilizar una ID externa para vincular un registro de Salesforce Platform con su representación en el otro sistema. Es probable que este ID externo sea inmutable, por lo que crea un desafío cuando se trabaja con Change Data Capture, ya que solo los campos modificados se envían como parte de los eventos. Gracias al enriquecimiento de campos , ahora puede especificar hasta diez campos que siempre se enviarán en eventos de cambio.

Para beneficiarse de los campos enriquecidos, simplemente especifique el atributo enrichedFields en los miembros del canal y declare una lista de campos enriquecidos. Por ejemplo, esta definición agrega el campo External_Id__c personalizado a los eventos de cambio de cuenta:

Nota : los campos que forman parte de las expresiones de filtro se agregan automáticamente a los eventos de cambio, por lo que no es necesario declararlos como campos enriquecidos.

Resumen

Ya sea que use la API de Streaming para integrarse con CometD o la nueva API Pub Sub, asegúrese de aprovechar los canales personalizados. Los canales personalizados lo ayudan a escalar operaciones con filtrado de eventos y enriquecimiento de campos de eventos de cambio. Estas funciones le permiten eliminar la lógica de filtrado de eventos de los clientes, disminuir la cantidad de eventos que se envían (reduce el consumo límite de la organización) y facilitar la conciliación de registros en los clientes.

Nos iremos con dos herramientas útiles: la colección Postman de las API de la plataforma de Salesforce lo ayuda a administrar canales personalizados con algunas plantillas de solicitud de API de herramientas, y Streaming Monitor le permite suscribirse a sus canales personalizados.

Recursos

  • Documentación
  • Proyectos iniciales
  • Herramientas
  • Video

Sobre el Autor

Philippe Ozil es un defensor principal de desarrolladores en Salesforce, donde se enfoca en la plataforma de Salesforce. Escribe contenido técnico y habla con frecuencia en conferencias. Es un desarrollador full-stack y disfruta trabajar en proyectos DevOps, robótica y VR. Sígalo en Twitter @PhilippeOzil o consulte sus proyectos de GitHub @pozil .

Obtenga las últimas publicaciones de blog de desarrolladores de Salesforce y episodios de podcast a través de Slack o RSS.

Agregar a Slack Suscríbete a RSS

Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://developer.salesforce.com/blogs/2023/01/stream-events-at-scale-with-event-filters-and-field-enrichment.html

Entradas recomendadas