Download - Procesando Salesforce Outbound Messages con PHP en Heroku

Transcript

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