Come consumare un servizio SOAP con Pentaho DI

Come consumare un servizio SOAP con PentahoDI

Quando abbiamo a che fare con aziende che usano, o intendono farlo, soluzioni software costruite sui principi SOA (Service-Oriented Architecture) e/o che espongono Servizi Web per l’accesso alle loro strutture dati, diventa indispensabile dotarsi di strumenti di ETL (Extract, Transform, Load) in grado di operare come client SOAP/REST.

In questo articolo vedremo come sia possibile utilizzare lo step HTTP di Pentaho Data Integration per consumare un servizio SOAP.

Il progetto PentahoDiLabs sviluppato, che utilizza un web service di “Controllo delle Partite Iva comunitario” messo a disposizione dalla Commissione Europea, è stato pubblicato su GitHub e sviluppato/testato su un laptop con i seguenti software:

Il Web Service

Il documento WSDL del servizio l’ho trovato sul sito dell’Agenzia delle Entrate a questo indirizzo dove fondamentalmente viene spiegato cosa fa.

In estrema sintesi utilizzando tale servizio possiamo verificare se il numero identificativo IVA inserito è formalmente corretto e corrisponde ad un operatore abilitato ai fini intracomunitari ed anche ottenerne la denominazione;

Test del service con SOAP UI

Uno dei più popolari tool per testare Web Service è SOAP UI. Questo software può essere utilizzato anche per copiare la busta SOAP da inoltrare al servizio.
Lanciamo Soap UI e selezioniamo File > New SOAP Project (così come mostrato in Figura 1).

Figura 1 – Creazione di un nuovo progetto SOAP a partire da un documento WSDL

 

Forniamo un nome per il progetto, la URI (Uniform Resource Identifier) del WSDL e poi clicchiamo su OK (così come indicato nella Figura 2 d’esempio).

Figura 2 – Impostazione del nome progetto e URI del documento WSDL

Il tool costruirà, parsando la descrizione WSDL, una richiesta di esempio che potremmo andare a modificare per testare il servizio e visualizzare la risposta.

Nel caso specifico il tool proporrà:

Noi andremo a sostituire:

countryCode = IT
vatNumber = partita iva da verificare

Successivamente avvieremo la richiesta di esecuzione (tasto play) per ottenere la risposta visibile in Figura 3.

Figura 3 – Esecuzione della richiesta di verifica VAT via Web Services

La trasformazione Pentaho DI

Nella trasformazione consumeSoapWebService_v1 utilizziamo in sequenza i seguenti step:

Step Scopo
DataGrid Popola input richiesta
Modified Javascript Value Crea requestXML
HTTP Post Lancia Web Service
Write to log Scrive nel log la risposta

Il primo Step ha il solo scopo di popolare l’input della richiesta. Volendo replicare la richiesta svolta con SOAP UI lo configureremo come nella figura seguente.

Figura 4 – Configurazione parametri d’input per lo step “Parametri WS”

Il secondo step ha invece il compito di creare la requestXML che possiamo anch’essa copiare ed incollare dal tool di test, facendo attenzione a sostituire i valori con le variabili provenienti dal flusso (nel nostro caso countryCode e vatNumber).

Figura 5 – Configurazione dello step “Generate SOAP Request”

Il terzo step consuma il web service inoltrando via post all’end point del servizio la request XML

Figura 6 – Configurazione dello step “HTTP Post” per la chiamata al Web Service

Il quarto step mette in evidenza nel log la risposta

Figura 7 – Configurazione dello step “Write to log” Figura 8 – Esecuzione della trasformazione appena creata

Suggerimenti per consumare la risposta

Nell’esempio precedente manca il passaggio fondamentale per considerare questa trasformazione un client SOAP ovvero il parsing della risposta.

Quando si utilizzano strumenti che mirano ad ingegnerizzare le attività di sviluppo software, l’imperativo deve essere scrivere meno codice possibile. Per questo motivo piuttosto che utilizzare la soluzione (“istintiva” per uno sviluppatore) di consumare la risposta del servizio utilizzando un altro step Modified Javascript Value (soluzione possibile) nel quale andare a parsare la response XML, preferisco operare un workaround per evitare la scrittura di codice, che consiste nel:

  1. salvare la risposta XML in un file di testo
  2. utilizzare lo step Get Data From XML per parsare la risposta con tutte le facility che lo strumento fornisce
Figura 9 – Configurazione sezione File dello step “Get data from XML” Figura 10 – Configurazione sezione Content dello step “Get data from XML” Figura 11 – Configurazione sezione Fields dello step “Get data from XML” Figura 12 – Test configurazione dello step “Get data from XML”

Definito il risultato che vogliamo ottenere, possiamo attaccare lo step nella nostra trasformazione e modificare l’input dello step da “file” a “campo” (responseXML).

Figura 13 – Aggiunta dello step “Get data from XML” alla trasformazione

Modifichiamo anche lo step log per evidenziare il risultato che si ottiene

Figura 14 – Modifica configurazione dello step “Write to log” Figura 15 – Esecuzione della trasformazione con evidenza in console delle informazioni ricevute dal Web Service

A questo punto utilizzare i valori di risposta del service in un job chiamante sarà facile come bere un bicchier d’acqua.

Conclusioni

Ovviamente esistono numerosi modi di consumare servizi SOAP in modo più o meno veloce, ma l’utilizzo congiunto di SOAP UI e Pentaho DI rende l’operazione davvero semplice. Se non siete ancora stanchi di leggere, sul mio blog ho pubblicato nel corso del tempo articoli che trattano Pentaho DI.

0 Condivisioni

Alessandro Nizzo

Co-founder & Solution Development Manager @ 2BeUp. #PentahoDI #IBMBPM #BonitaBPM #Liferay #JAVA #Linux. Padre e marito alla ricerca del giusto equilibrio, instancabile avventuriero, nel (poco) tempo libero mi piace giocare coi miei figli, leggere, correre e viaggiare

Potrebbero interessarti anche...

Cos'è il progetto CIE/CNS Apache Docker - Developers Italia

In questo video https://youtu.be/TcAzn1POhsM introdurrò il progetto CIE/CNS Apache Docker di Developers Italia (https://developers.italia.it/it/cie/#resourcecontent-3) nato circa due anni fa.

L'obiettivo di questo progetto è quello di fornire un template pronto all'uso che realizza un sistema di autenticazione tramite la Smart Card TS-CNS (o CNS) e la CIE (Carta d'Identità Elettronica) basato su Apache HTTP. Ognuno può poi modificare o specializzare questo progetto sulla base delle proprie esigenze Si tratta di un progetto docker per la creazione di un container che implementa un sistema di mutua autenticazione o autenticazione bilaterale SSL/TLS.

Questo meccanismo di autenticazione richiede anche il certificato digitale da parte del client, certificato che in questo caso risiede all'interno della TS-CNS o della CIE. La particolarità del sistema implementato (attraverso questo container) è quella di consentire l'autenticazione tramite:

  • La TS-CNS (Tessera Sanitaria - Carta Nazionale Servizi), rilasciata dalla regione di appartenenza;
  • La CIE (Carta d'Identità Elettronica), rilasciata dal comune di residenza.

Nella versione 2.0.0 il progetto è stato aggiornato per essere uniforme alle linee guida di Bootstrap Italia. A seguire alcune risorse che possono essere utili.

  • Cos’è il progetto CIE/CNS Apache Docker (http://bit.ly/3aJ5Gbl)
  • CIE Carta d'Identità Elettronica (https://developers.italia.it/it/cie/)
  • Carta Nazionale dei Servizi (https://www.agid.gov.it/it/piattaforme/carta-nazionale-servizi)
  • Raspberry Pi – Un esempio di applicazione della TS-CNS (https://bit.ly/3hkJ8Aj)
  • Pubblicare il servizio CIE/CNS Apache Docker su Azure Cloud (http://bit.ly/3aPoq8V)
  • Come accedere al portale VETINFO tramite TS-CNS e Mac OS (http://bit.ly/2VFMKq7)