procesando salesforce outbound messages con php en heroku
TRANSCRIPT
Procesando Salesforce Outbound Messages con PHP en HerokuMensajes asincrónicos en las nubesAgo 8, 2015
Agenda
▪ Salesforce▪ Heroku▪ Ejemplo de integración asincrónica▪ Outbound Messages▪ Consideraciones de diseño▪ Esquema de implementación▪ Demo
Qué es Salesforce?
▪ CRM▪ Guardar datos de los clientes▪ Establecer procesos de venta▪ Automatización de la gestión del negocio▪ Movilidad
▪ Plataforma ▪ SaaS (Software as a Service)▪ On-demand vs On-premise▪ Multi-tenant (segmentación vs virtualización)▪ Basado en metadatos
Terminología
▪ Objeto = Tabla (Account, Contact, Order, etc)▪ Record = Fila de la tabla con identificador único▪ Campo = Campo de la tabla▪ Org = Abreviación de “Organización” es nuestra instancia
en salesforce ▪ App = Conjunto de campos, objetos, permisos y
funcionalidades para que se cumplan los procesos de negocio
▪ Force.com = Plataforma donde suceden todas las orgs
Aprendiendo Salesforce de forma gratuita
https://developers.salesforce.com/trailhead
Qué es Heroku?
▪ Plataforma▪ Políglota (Ruby, Python, Java, Node.js, PHP, etc)▪ Stack Ubuntu basado en Debian▪ PaaS (Platform as a Service)
Aprendiendo Heroku de forma gratuita
https://devcenter.heroku.com/start
Ejemplo de integración asincrónica
barkingtshirts.com
▪ Implementan los procesos de marketing y ventas con Salesforce
▪ Requerimiento de negocio: para cada oportunidad (venta) cerrada se debe crear una orden en el sistema de facturación externo (ERP)
Moviendo datos desde Salesforce a un sistema externo
▪ De forma manual /o\ (*oh, no!)▪ Herramientas ETL▪ Streaming API▪ Apex HTTP Callouts (sync/async)▪ Outbound Messages
Outbound Messages
▪ Permite de forma declarativa especificar qué cambios sobre determinados objetos deben generar mensajes de notificación a un servidor externo predefinido
▪ Es una funcionalidad integrada con el motor de Workflow de la plataforma.
▪ Define un contrato (WSDL) para que un sistema externo lo implemente▪ El proceso de notificación es asincrónico (Fire and Forget)
Fire and Forget
▪ Una operación de alta o modificación sucede en un conjunto de records en Salesforce
▪ Dada una condición lógica, el motor de workflow ejecuta una regla de negocio (Outbound Message)
▪ Esta regla envía un mensaje SOAP al servidor externo pre-configurado.
▪ El servicio externo toma el mensaje, lo agrega a una cola y retorna un resultado de ACK positivo.
▪ Salesforce recibe el ACK y finaliza la notificación (failover: espera 10 segundos y vuelve a intentar hasta por 24hrs)
▪ En caso de ser necesario un callback, el mensaje SOAP contiene un token (SessionId) para autenticarse contra Salesforce
Consideraciones de diseño del servidor externo
▪ Debe implementar el contrato (WSDL) especificado por Salesforce de antemano
▪ Debe ser Idempotente (la misma notificación aplicada n veces debe dar siempre el mismo resultado)
▪ Idealmente solo debe:▪ Capturar el mensaje XML de la notificación▪ Serializar la notificación en una cola para posterior procesamiento▪ Enviar la respuesta a Salesforce (ACK)
Esquema de implementación (PHP)
▪ Cargar el WSDL con SoapServer▪ Idempotencia: descartar notificaciones duplicadas (NotificationId es
único)▪ Captura el XML: crear una instancia de StdClass▪ Serializar a una cola: SQS, MQ, JMS, RabbitMQ, etc▪ Enviar respuesta a Salesforce: construir un mensaje SOAP especifico
@uysdug #uysdug
/Uruguay-Salesforce-Developer-User-Group/
www.uysdug.com
Salesforce Uruguay