Procesando Salesforce Outbound Messages con PHP en Heroku

26
Procesando Salesforce Outbound Messages con PHP en Heroku Mensajes asincrónicos en las nubes Ago 8, 2015

Transcript of Procesando Salesforce Outbound Messages con PHP en Heroku

Procesando Salesforce Outbound Messages con PHP en HerokuMensajes asincrónicos en las nubesAgo 8, 2015

Aldo Fernandez Technical Consultant

@aldoforce

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)

Ejemplo de integración asincrónica

Salesforce org

Opportunity (closed/won)

ERP system

Create Order

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

DEMO

http://github.com/aldoforce/uysdug-php-demo

Crear Workflow rule en Salesforce

Definir el Outbound Message

Ganando una oportunidad en Salesforce

Monitoreando Salesforce OM queue

Outbound message desde consola

Monitoreando Salesforce OM queue

App en Heroku

@uysdug #uysdug

/Uruguay-Salesforce-Developer-User-Group/

www.uysdug.com

Salesforce Uruguay

Muchas gracias!Procesando Salesforce

Outbound messages con PHP en Heroku

Mensajes asincrónicos en las nubes

Aldo Fernandez@aldoforce

#phpday#uysdug#salesforce#heroku#outboundMessages