USO DE LA API MASIVA DE SALESFORCE Y LOS CÓDIGOS APEX CON BRIGHTCOVE

Foto de JESS R
JESS R
blog-placeholder image

En Brightcove, utilizamos Salesforce para gestionar la información de nuestros clientes. Nuestros equipos de ventas, gestión de cuentas, asistencia y finanzas también lo utilizan para diversas actividades, como ponerse en contacto con clientes potenciales, realizar el seguimiento de casos de asistencia y generar informes de uso. Es importante para nuestro negocio seguir introduciendo datos de clientes en Salesforce de forma puntual y fiable.

El modelo de datos de nuestros productos admite una relación de muchos a muchos entre usuarios y cuentas. Un objeto de cuenta representa una organización o un departamento dentro de una gran organización, y un objeto de usuario representa a un individuo que trabaja para una o varias organizaciones. En Salesforce, personalizamos el objeto Contacto incorporado para representar a cada usuario de los servicios de Brightcove y definimos un objeto personalizado llamado BCAccount para representar una cuenta (véase figura 1).

Figura 1

Figura 1. Modelo de datos en el Servicio de Brightcove y Salesforce

Hace varios años creamos la función de sincronización de datos utilizando la API SOAP de Salesforce y quartz, y hemos observado algunos problemas con esta implementación. Hay dos dificultades principales:

  • Es demasiado hablador, lo que lo hace lento. Solo se pueden sincronizar 700 objetos a Salesforce por hora.
  • Requiere mucho esfuerzo realizar cualquier cambio en el modelo de datos. Para añadir un nuevo campo a un objeto, nos obliga a exportar un nuevo archivo WSDL de Salesforce y generar clases Java a partir del archivo WSDL.

En vista de estas dificultades, decidimos crear un nuevo sistema de sincronización utilizando la API masiva de Salesforce y código Apex. La nueva implementación consiste en un motor de envío de datos llamado RedLine y un conjunto de clases Apex de Salesforce para procesar datos masivos enviados desde RedLine.

Figura 2

Figura 2. Sincronización de nuevos datos

RedLine se ha creado utilizando Sinatra, un servidor web ruby ligero, como servicio autónomo independiente de los demás servicios de Brightcove. RedLine utiliza el programador rufus para consultar periódicamente las creaciones, actualizaciones y eliminaciones de objetos de Brightcove a través de las API RESTful. A continuación, RedLine transforma la respuesta JSON en CSV y la envía a Salesforce como solicitud masiva. Salesforce tiene un límite de 10.000 objetos por solicitud masiva, que es suficiente para nuestro uso. Dado que las solicitudes masivas se procesan de forma asíncrona en Salesforce, ni los servicios de Brightcove ni RedLine necesitan esperar después de enviar los datos a Salesforce.

Escribimos unas cuantas clases Apex para procesar solicitudes masivas, incluida la adaptación de los objetos de usuario y cuenta a los objetos de Salesforce, y después implementamos las clases Apex en Salesforce y programamos trabajos por lotes Apex para ejecutar estas clases una vez que los datos llegan como solicitud masiva. De este modo, no existe código en los servicios de Brightcove para el modelo de datos de Salesforce y sólo es necesario que el código Apex de Salesforce se ocupe del modelo de datos de Salesforce. Salesforce proporciona un conjunto de herramientas de supervisión tanto para solicitudes masivas como para trabajos por lotes de Apex.

Si se produce algún error durante el procesamiento de una solicitud masiva, podemos verlo fácilmente en la interfaz de usuario Web de Salesforce. También desplegamos una clase Apex que se ejecuta periódicamente para comprobar si una solicitud masiva llega con la frecuencia esperada, y alerta si una solicitud no ha llegado durante un tiempo.

En el nuevo sistema de sincronización, para publicar un cambio de nuevos campos del objeto de usuario o cuenta sólo tenemos que añadir los nuevos campos en el objeto personalizado de Salesforce y, a continuación, exponer los nuevos campos en la respuesta JSON de la API del servicio de Brightcove. No necesitamos cambiar ni reiniciar RedLine para el cambio de formato de objeto, ya que RedLine es lo suficientemente inteligente como para convertir los nuevos campos en JSON como nuevas columnas en CSV en solicitudes masivas.

Se han producido cuatro cambios en los objetos de cuenta y un cambio en los objetos de usuario, y no hemos tenido que cambiar ni una línea de código RedLine para estos cambios. Con el antiguo sistema de sincronización basado en la API SOAP, solíamos tardar entre una y dos semanas en sincronizar un nuevo campo para objetos de usuario o de cuenta.

Después de ejecutar esta nueva aplicación de sincronización en producción durante 8 meses, hemos visto que maneja un par de cambios de datos en ráfaga con elegancia. Recientemente se realizó un cambio por lotes de 900 cuentas durante un despliegue, y todas ellas se sincronizaron con Salesforce en menos de un minuto (la mayor parte del tiempo lo emplearon las clases Apex que se ejecutaban en Salesforce). Antes se tardaba más de una hora en sincronizar la misma cantidad de objetos en el antiguo sistema de sincronización.

Compartir

Etiquetas

Brightcove ayudó a un fabricante de equipos de diagnóstico a reducir el tiempo de clase y los gastos, a la vez que mejoraba el éxito ...
Brightcove ayudó al mercado automovilístico más reconocido a gestionar su enorme videoteca heredada y a monetizarla...
Para mantener la integridad de la marca, las marcas minoristas necesitan reproductores de vídeo personalizables que les permitan ajustar los colores, la fuente...

¿PREPARADO PARA EMPEZAR?

Póngase en contacto con nosotros para saber cómo podemos mejorar sus esfuerzos de marketing por vídeo y ayudarle a generar los resultados y el ROI que necesita.