Liferay 7: Un esempio d’integrazione con Salesforce.com

Qualche settimana fa mi è capitato sotto gli occhi il post Liferay Salesforce.com integration sul forum di Liferay dell’anno 2010. Certamente il post è un pochino vecchiotto e personalmente a quel tempo non sapevo neppure dell’esistenza di Liferay. La richiesta di Nicolas Raoul (autore del post) era questa:

Hello all,

Is there any way to integrate Salesforce.com into a Liferay portal without writing code?

If not, a solution would be to create a new portlet that calls Salesforce.com’s Web Services, but I am wondering if anything already exists that I could just reuse.

I am not asking for perfect integration of everything, but if you know of a portlet that shows some data or allows any Salesforce.com action that would be great already 🙂

Thank you!
Nicolas Raoul

Ho preso la sfida in mano e nel corso di questo articolo vedremo l’approccio in chiave moderna (Liferay 7 & OSGi) della soluzione che ho sviluppato per integrare a colpi di bundle OSGi, Liferay 7 e Salesforce.com.

Non sai come integrare #Liferay 7 e #Salesforce? Ti spiego come realizzare l'integrazione in un contesto OSGi.Click To Tweet

1. Cosa devi sapere prima di partire

Tutto il software sviluppato a cui si fa riferimento è disponibile sul mio account GitHub che in particolare riguarda due repository Salesforce SOAP API Client OSGi BundleSalesforce Gogo Shell Command Client.

Per i vostri test d’integrazione, ricordo che dovete disporre di almeno un account Salesforce.com Developer (tra l’altro gratuito). Le risorse a seguire sono punti di approfondimento che consiglio di leggere dopo la lettura di quest’articolo.

  1. Introducing SOAP API
  2. Cheat Sheets
  3. Force.com SOAP API Cheatsheet
  4. Force.com Web Service Connector (WSC)

I due bundle OSGi sono compatibili con Liferay 7 e Apache Karaf 4.x e in generale posso essere installati in ogni container che sia conforme alle specifiche OSGi R6. L’ultima versione del bundle Salesforce SOAP API Client OSGi è pubblicamente disponibile sul Maven Central Repository.

2. Ciò che serve costruire

Siamo abbastanza fortunati, non serve un grande sforzo in termini di sviluppo di codice. L’unico componente fondamentale da preparare è quello che poi ci consentirà di colloquiare con Salesforce.com. I compiti da fare sono:

  • realizzare il bundle OSGi responsabile di comunicare con Salesforce.com;
  • realizzare il bundle OSGi che utilizzerà il componente di sopra per compiere azioni su Salesforce.com.

Abbiamo identificato i “pezzi di software” che dobbiamo realizzare e alla fine della costruzione dovremmo ritrovarci in una situazione analoga a quella mostrata in Figura 1.

Integrazione Salesforce.com in contesto OSGi

Figura 1. Integrazione Salesforce.com in contesto OSGi

Nel diagramma di Figura 1 sono mostrati i due bundle Salesforce SOAP API Client e My Salesforce Bundle App. Il primo bundle è quello che comunicherà con Salesforce.com attraverso le API SOAP (esposte da quest’ultimo), il secondo bundle usa invece le API Java esportate dal primo bundle al fine di compiere azioni su Salesforce.com (come per esempio login, creazione account, etc.).

2. Il bundle Salesforce SOAP API Client

Salesforce.com espone un set di API via SOAP e REST che consentono a sistemi esterni di poter interagire con esso. In questa soluzione ho scelto d’utilizzare le API SOAP. Salesforce.com mette a disposizione il tool Force.com Web Service Connector (WSC) che crea per noi gli stub Java necessari per comunicare via SOAP e questo facilità alla grande il processo di creazione del nostro bundle OSGi.

Il nostro bundle OSGi esporrà il seguente set di API Java che potranno poi essere utilizzate da qualunque altro bundle che necessiterà d’interagire con Salesforce.com.

  1. com.sforce.soap.partner.*
  2. com.sforce.soap.enterprise.*
  3. com.sforce.async.*
  4. come.sforce.bulk.*
  5. com.sforce.ws.*

Nell’articolo How to Build a Salesforce SOAP API Client OSGi Bundle potete leggere tutti i dettagli relativi alla costruzione del bundle OSGi responsabile appunto della comunicazione via SOAP con Salesforce.com e dell’esportazione delle API Java che saranno poi pubblicamente disponibili all’interno del container OSGi.

3. Il bundle Salesforce App

Una volta che abbiamo a disposizione all’interno del nostro container OSGi le API Java di Salesforce.com (grazie al bundle salesforce-client-soap v1.0.2 che abbiamo creato prima), siamo nelle condizioni di poter realizzare tutte le integrazioni che vogliamo con Salesforce.com.

Come applicazione d’esempio, e per ragioni di semplicità, potremmo realizzare una serie di comandi OSGi che eseguono le seguenti azioni su Salesforce.com:

  1. salesforce:login: Login su Salesforce.com
  2. salesforce:createAccount: Crea un account
  3. salesforce:getNewestAccount: Restituisce la lista dei nuovi account

L’articolo Liferay 7 Salesforce.com Gogo Shell Command Client spiega nel dettaglio la realizzazione e utilizzo di questo specifico bundle d’esempio d’integrazione con Salesforce.com.

I due video pubblicati su Antonio Musarra’s Blog YouTube Channel mostrano la soluzione d’integrazione nel contesto Liferay 7 e Apache Karaf in azione.

4. Il prossimo step

Grazie all’approccio OSGi siamo stati facilitati nella realizzazione della soluzione del problema d’integrazione tra Liferay e Salesforce.com. La soluzione di realizzare un bundle OSGi Salesforce SOAP API Client responsabile della comunicazione via SOAP con Salesforce.com e dell’esportazione delle API Java nel contesto del container OSGi, rende questo componente molto “riutilizzabile” (infatti abbiamo installato su Liferay e Apache Karaf).

Il prossimo scenario d’integrazione potrebbe essere simile a quello che avevo qualche anno fa illustrato nell’articolo Introduzione agli Hook – Primo episodio, dove però il sistema di CRM era SugarCRM, in questo nuovo scenario sarà invece Salesforce.com.

Mi farebbe piacere ricevere le tue considerazioni rispetto la soluzione adottata.

Antonio Musarra

I began my journey into the world of computing from an Olivetti M24 PC (http://it.wikipedia.org/wiki/Olivetti_M24) bought by my father for his work. Day after day, quickly taking control until … Now doing business consulting for projects in the enterprise application development using web-oriented technologies such as J2EE, Web Services, ESB, TIBCO, PHP.

Potrebbero interessarti anche...