Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Procesando Salesforce Outbound Messages con PHP...

Procesando Salesforce Outbound Messages con PHP en Heroku

Dentro de la plataforma de Salesforce, es muy común ver requerimientos de integración con sistemas externos. Con Outbound Messages, la plataforma permite enviar notificaciones de cambios (create o update) sobre los distintos objetos definidos en la metadata a diferentes aplicaciones externas. Estas notificaciones, significan implementar una interfase SOAP para poder procesarlas. En esta presentación, mostraremos como crear un Outbound Message en Salesforce y la respectiva aplicacion PHP que capture dichas notificaciones para su procesamiento en un sistema externo.

Avatar for Aldo Fernandez

Aldo Fernandez

August 09, 2015
Tweet

More Decks by Aldo Fernandez

Other Decks in Technology

Transcript

  1. Agenda ▪ Salesforce ▪ Heroku ▪ Ejemplo de integración asincrónica

    ▪ Outbound Messages ▪ Consideraciones de diseño ▪ Esquema de implementación ▪ Demo
  2. 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
  3. 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
  4. Qué es Heroku? ▪ Plataforma ▪ Políglota (Ruby, Python, Java,

    Node.js, PHP, etc) ▪ Stack Ubuntu basado en Debian ▪ PaaS (Platform as a Service)
  5. 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)
  6. 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
  7. 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)
  8. 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
  9. 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)
  10. 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
  11. Muchas gracias! Procesando Salesforce Outbound messages con PHP en Heroku

    Mensajes asincrónicos en las nubes Aldo Fernandez @aldoforce #phpday #uysdug #salesforce #heroku #outboundMessages