Procesando Salesforce Outbound
Messages con PHP en Heroku
Mensajes asincrónicos en las nubes
Ago 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

Procesando Salesforce Outbound Messages con PHP en Heroku

  • 1.
    Procesando Salesforce Outbound Messagescon PHP en Heroku Mensajes asincrónicos en las nubes Ago 8, 2015
  • 2.
  • 3.
    Agenda ▪ Salesforce ▪ Heroku ▪Ejemplo de integración asincrónica ▪ Outbound Messages ▪ Consideraciones de diseño ▪ Esquema de implementación ▪ Demo
  • 4.
    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
  • 5.
    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
  • 6.
    Aprendiendo Salesforce deforma gratuita https://developers.salesforce.com/trailhead
  • 7.
    Qué es Heroku? ▪Plataforma ▪ Políglota (Ruby, Python, Java, Node.js, PHP, etc) ▪ Stack Ubuntu basado en Debian ▪ PaaS (Platform as a Service)
  • 8.
    Aprendiendo Heroku deforma gratuita https://devcenter.heroku.com/start
  • 9.
    Ejemplo de integraciónasincró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)
  • 10.
    Ejemplo de integraciónasincrónica Salesforce org Opportunity (closed/won) ERP system Create Order
  • 11.
    Moviendo datos desdeSalesforce a un sistema externo ▪ De forma manual /o (*oh, no!) ▪ Herramientas ETL ▪ Streaming API ▪ Apex HTTP Callouts (sync/async) ▪ Outbound Messages
  • 12.
    Outbound Messages ▪ Permitede 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)
  • 13.
    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
  • 14.
    Consideraciones de diseñodel 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)
  • 15.
    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
  • 16.
  • 17.
    Crear Workflow ruleen Salesforce
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 25.
  • 26.
    Muchas gracias! Procesando Salesforce Outboundmessages con PHP en Heroku Mensajes asincrónicos en las nubes Aldo Fernandez @aldoforce #phpday #uysdug #salesforce #heroku #outboundMessages