Guida introduttiva a Talend ESB – Parte 2

Impariamo ad abilitare la mappatura XML e unire i dati con la manipolazione delle stringhe.

Solitamente le aziende lavorano con centinaia di applicazioni e molte di queste devono essere integrate tra loro. L'integrazione delle applicazioni aziendali può spesso risultare difficoltosa per molte aziende; connettere le applicazioni attraverso un'integrazione point-to-point è costoso e richiede tempo, per questo molte organizzazioni optano per un Enterprise Service Bus (ESB), che rende l'integrazione più facile e veloce.

Nella Parte 1 della Guida introduttiva a Talend ESB per l'integrazione delle applicazioni, abbiamo importato il contratto Web Services Description Language (WSDL) in Talend Open Studio for ESB e creato tutti gli elementi del servizio necessari per generare un'integrazione CRM. Dopo avere definito i dati CRM, lo stile e il termine del servizio, possiamo configurare la gestione degli errori e il bilanciamento del carico nell'integrazione CRM.

In questa seconda parte della Guida introduttiva a Talend ESB illustreremo come:

Nella Parte 3 implementeremo un modello di integrazione con bilanciamento del carico con l'obiettivo di aumentare la visibilità dell'endpoint, per poter testare infine un provider di servizi Web con carico completamente bilanciato e basato su SOAP e assicurarci che l'integrazione CRM funzioni correttamente.

Mappatura all'interno di Talend Studio

I componenti di mappatura sono le funzioni più efficaci e più comunemente usate in Talend Open Studio. In questa demo sull'ESB utilizziamo un TXMLmap per consentire l'esecuzione della mappatura XML. (È anche disponibile un componente di mappatura corrispondente per le risorse non XML).

Nella schermata riportata di seguito etichettiamo gli input nei passaggi della mappatura. A tale scopo tracciamo le linee che collegano i vari passaggi e assegniamo loro un nome: una indica che si tratta di una richiesta proveniente dalla base del servizio, un'altra indica che le informazioni arrivano dalla risorsa clienti e un'altra mappa l'output alla risposta del servizio. Infine creiamo un output per il nostro componente in errore, in modo da poter generare anche errori SOAP in questa integrazione CRM.

Per visualizzare l'output effettivo nei container, spostiamoci nel pannello di navigazione di destra per registrare l'output. Nella schermata qui sotto è possibile vedere il bit di informazioni sorgente e la richiesta del servizio in ingresso, lo schema clienti estratto dalla risorsa clienti e la risposta al servizio (che comprende risposte normali e risposte di errore).

Nel centro della schermata si trovano tutte le varie operazioni del servizio importato. Quella che ci interessa è l'operazione "getCustomer", che selezioniamo nel menu. Questo indica che i dati per la richiesta saranno raccolti in base allo schema di richiesta "getCustomer" contenuto nel WSDL.

La nuova richiesta è stata aggiunta alla casella della richiesta principale nell'angolo in alto a sinistra. A questo punto seguiamo la stessa procedura per aggiungere l'operazione "getCustomer" alle sezioni di gestione degli errori e risposta di errore.

Sul lato sinistro della schermata sono presenti tutti gli input, mentre sul lato destro sono indicati tutti gli output della mappatura XML. L'operazione successiva consiste nel configurare l'ESB per consentirci di mappare e trasportare i dati negli input e negli output.

Per prima cosa creiamo una ricerca tra i due riquadri sulla sinistra: le richieste del servizio (in alto) e la risorsa dati clienti (in basso). A tale scopo è sufficiente trascinare e rilasciare l'elemento (in questo caso "custId") in basso per indicare che si desidera unirlo alla risorsa clienti (lookup: customers).

Sostanzialmente stiamo specificando che vogliamo unire l'ID cliente in ingresso incluso nella richiesta del servizio all'ID cliente contenuto nella risorsa clienti.

Quando i dati non corrispondono: configurazione di un join e manipolazione delle stringe

Ora dobbiamo configurare un meccanismo per integrare i dati CRM ogni volta che viene eseguito il servizio. Il "Match Model" (Modello di corrispondenza) è impostato su "Unique match" (Corrispondenza univoca), mentre il "Join Model" (Modello di join) è impostato su "Inner Join". Dopo avere impostato questi parametri, possiamo avviare la mappatura dei dati all'endpoint.

La mappatura dei dati in questo join consiste semplicemente in un'operazione di trascinamento della selezione. (Vedi le linee nello screenshot qui sotto).

Si può notare una piccola complicazione data dal fatto che il nome della risposta del servizio sulla destra, "name", è una concatenazione dell'intero nome, mentre nella risorsa clienti sulla sinistra "name" è rappresentato con una stringa di più componenti (salutation, forename e così via).

Per risolvere questo problema creiamo un piccolo trasformatore facendo clic su "Var" nella colonna centrale e inserendo "name" nella colonna "Variable" (Variabile). Quindi evidenziamo le righe "Salutation" (Saluto), "Forename" (Nome) e "Surname" (Cognome) e le trasciniamo nella casella delle variabili della colonna "Expression" (Espressione).

Di seguito facciamo clic sulla casella della colonna e nella nuova finestra; esistono tre modi per concatenare la stringa di "Salutation", "Surname" e "Forename":

  1. Usare le funzioni predefinite.
  2. Scrivere le proprie routine personalizzate.
  3. Scrivere con una semplice sintassi JAVA.

Dopo avere risolto la questione del nome, procediamo con la mappatura di tutti i componenti sulla schermata (vedi sotto), ancora una volta mediante trascinamento e tracciamento. In questo modo vengono impostate le connessioni per poter ricevere la risposta standard al servizio.

Creazione di una risposta di errore basata su SOAP

Ora configuriamo le impostazioni necessarie per generare errori SOAP standard relativi al servizio. La procedura è simile a quella della mappatura dei dati CRM appena illustrata.

Per prima cosa la selezioniamo per acquisire ciò che chiamiamo "inner join rejects" (Rifiuti inner join), ovvero quando il cliente non viene trovato riceviamo una risposta di errore dal servizio. Per configurare la risposta di errore, digitiamo "err001" come etichetta di base dell'errore e in "Type" (Tipo) inseriamo "Lookup failure" (Errore di ricerca), per indicare la tipologia di errore.

Quindi in "Message" (Messaggio) inseriamo un messaggio significativo per il servizio nel caso in cui non riesca a trovare il cliente, ad esempio "Unable to locate customer" (Impossibile trovare il cliente). Infine, selezioniamo l'input originale, "custId", e lo trasciniamo nella sezione "Fault" (Errore).

A questo punto il servizio è pronto; nella Guida introduttiva a Talend ESB – Parte 3 spiegheremo come implementare un algoritmo di bilanciamento del carico ed esamineremo alcune delle funzionalità di mediazione e indirizzamento di Talend Open Studio for ESB.

Ti invitiamo a provare gratuitamente come è facile con Talend Open Studio for ESB implementare un'integrazione CRM semplice come quella che abbiamo illustrato o configurare una tua integrazione di servizi Web.

<< Parte 1 | Parte 3 >>

Sei pronto a iniziare con Talend?