23.12.2013 Views

Tecniche di Enterprise Application Integration in un contesto di ...

Tecniche di Enterprise Application Integration in un contesto di ...

Tecniche di Enterprise Application Integration in un contesto di ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Tecniche</strong> <strong>di</strong> <strong>Enterprise</strong> <strong>Application</strong> <strong>Integration</strong> <strong>in</strong><br />

<strong>un</strong> <strong>contesto</strong> <strong>di</strong> eGovernment: UniGeINT<br />

Francesco Di Cerbo 1 , Marco Scotto 1 , Alberto Sillitti 2 , Giancarlo Succi 2 ,<br />

Tullio Vernazza 1<br />

1<br />

: Dist – Universita' degli stu<strong>di</strong> <strong>di</strong> Genova<br />

2 : Libera Universita' <strong>di</strong> Bolzano<br />

{nome.cognome}@<strong>un</strong>ige.it || {nome.cognome}@<strong>un</strong>ibz.it<br />

La f<strong>in</strong>alita' <strong>di</strong> questo articolo e' quella <strong>di</strong> presentare UniGeINT -<br />

University of Genoa <strong>Integration</strong> Tool -, <strong>un</strong> framework ideato per<br />

fornire servizi <strong>di</strong> <strong>in</strong>tegrazione tra le applicazioni web e non, con i<br />

databases e data repositories utilizzati nell'ambito amm<strong>in</strong>istrativo<br />

dell'Universita'. Tale progetto e' stato realizzato co<strong>in</strong>volgendo<br />

software Open Source, al f<strong>in</strong>e <strong>di</strong> beneficiare delle caratteristiche <strong>di</strong><br />

riduzione dei costi <strong>di</strong> sviluppo e <strong>di</strong> mantenimento a l<strong>un</strong>go term<strong>in</strong>e.<br />

Inoltre, sono state adottate soluzioni allo stato dell'arte nell'ambito<br />

dell' <strong>Enterprise</strong> <strong>Application</strong> <strong>Integration</strong>, utilizzando design patterns ad<br />

hoc per meglio <strong>in</strong>teragire con l' <strong>in</strong>frastruttura esistente.<br />

1 INTRODUZIONE<br />

Il progetto nasce da <strong>un</strong>a convergenza <strong>di</strong> esigenze, da parte dell'Universita' <strong>di</strong><br />

Genova, legate alla propria struttura IT. Durante gli anni, il susseguirsi degli<br />

aggiornamenti tecnologici, associato ad <strong>un</strong> processo <strong>di</strong> potenziamento dei<br />

servizi forniti, ha portato ad <strong>un</strong>a creazione <strong>di</strong> <strong>di</strong>verse “isole <strong>di</strong> automazione”<br />

[1][2], con <strong>un</strong> livello <strong>di</strong> cooperazione relativo tra aree <strong>di</strong>verse.<br />

In questo scenario, qu<strong>in</strong><strong>di</strong>, nuove adozioni quali le suite <strong>di</strong> groupware o <strong>di</strong><br />

elearn<strong>in</strong>g <strong>in</strong>tegrate con i sistemi <strong>di</strong> acco<strong>un</strong>t<strong>in</strong>g esistenti, e correlate ai<br />

meccanismi <strong>di</strong> gestione delle attivita' <strong>di</strong>dattiche, avrebbero richiesto per la loro<br />

entrata <strong>in</strong> produzione <strong>un</strong> overhead <strong>in</strong> term<strong>in</strong>i <strong>di</strong> costi <strong>in</strong><strong>di</strong>retti cospiquo.<br />

Concentrandoci qu<strong>in</strong><strong>di</strong> sull'idea base dell'<strong>in</strong>tegrazione, il progetto e' stato<br />

nom<strong>in</strong>ato “UniGeINT”: si tratta <strong>di</strong> <strong>un</strong> middleware framework SOAP-based, che<br />

sfrutta le caratteristiche del modello a web services.<br />

2 TECNOLOGIE IMPIEGATE<br />

2.1 SOAP<br />

Il Simple Object Access Protocol (SOAP)[4] e' <strong>un</strong> para<strong>di</strong>gma <strong>di</strong> com<strong>un</strong>icazione<br />

a messaggi, stateless e <strong>un</strong>i<strong>di</strong>rezionale.<br />

I ruoli pr<strong>in</strong>cipali <strong>in</strong> <strong>un</strong>o scenario SOAP sono ass<strong>un</strong>ti da <strong>un</strong> trasmettitore ed <strong>un</strong><br />

ricevitore , o, per maggiore precisione, <strong>un</strong> server ed <strong>un</strong> client SOAP.


SOAP e' qu<strong>in</strong><strong>di</strong> essenzialmente <strong>un</strong> framework per lo scambio <strong>di</strong> messaggi<br />

che permette la com<strong>un</strong>icazione <strong>di</strong> <strong>in</strong>formazioni specifiche per le applicazioni <strong>di</strong><br />

riferimento, <strong>in</strong> maniera estensibile ed <strong>in</strong>capsulate <strong>in</strong> tipi <strong>di</strong> dati protetti. [6]<br />

2.2 XSL & XSLT<br />

eXtensible Stylesheet Language (XSL) e' <strong>un</strong> gruppo <strong>di</strong> raccomandazioni che<br />

def<strong>in</strong>iscono come effettuare trasformazioni sui documenti XML, altresi'<br />

del<strong>in</strong>eandone le forme <strong>di</strong> presentazione.<br />

eXtensible Stylesheet Language: Transformations (XSLT) e' <strong>un</strong> l<strong>in</strong>guaggio che,<br />

specificamente, def<strong>in</strong>isce le regole per trasformare <strong>un</strong> albero XML <strong>di</strong> partenza<br />

<strong>in</strong> <strong>un</strong>o dest<strong>in</strong>azione. Tale passaggio e' ottenuto me<strong>di</strong>ante <strong>un</strong> processore XSLT.<br />

[7][8]<br />

3 ARCHITETTURA<br />

Il nostro obiettivo era quello <strong>di</strong> creare <strong>un</strong> middleware layer <strong>di</strong> com<strong>un</strong>icazione,<br />

per permettere alle applicazioni della struttura, anche se nativamente non<br />

cooperative le <strong>un</strong>e con le altre, l'<strong>in</strong>terscambio <strong>in</strong>formativo.<br />

Tenendo qu<strong>in</strong><strong>di</strong> la reliability come primo requisito essenziale, abbiamo<br />

previsto l'esistenza <strong>di</strong> <strong>un</strong> gateway centrale per lo scambio messaggi, <strong>un</strong> “centro<br />

stella”, mantenendo qu<strong>in</strong><strong>di</strong> <strong>un</strong> controllo centrale utile per il logg<strong>in</strong>g ed il<br />

debugg<strong>in</strong>g.<br />

Per realizzare queste <strong>in</strong><strong>di</strong>cazioni, il design pattern <strong>di</strong> <strong>Application</strong> <strong>Integration</strong> che<br />

abbiamo utilizzato e' stato il “Message Broker” [9] (si veda Fig. 2), <strong>di</strong> fatto<br />

lievemente mo<strong>di</strong>ficato per dare al Broker stesso quelle f<strong>un</strong>zionalita' <strong>di</strong> alto livello<br />

precentemente <strong>in</strong>trodotte.<br />

Gi<strong>un</strong>ti al term<strong>in</strong>e del percorso <strong>di</strong> design, abbiamo deciso <strong>di</strong> riferirci a questo<br />

componente come all' “eng<strong>in</strong>e”.<br />

Abbiamo poi scelto, al f<strong>in</strong>e <strong>di</strong> fornire le f<strong>un</strong>zionalita' SOAP a software<br />

sprovvisti, il pattern “message gateway” [10]. Tale pattern prevede lo sviluppo<br />

delle primitive SOAP <strong>in</strong> <strong>un</strong> modulo software separato dall'applicazione che ne e'<br />

sprovvista, per preservare completamente la sua <strong>in</strong>tegrita'.<br />

Per questo processo, abbiamo implementato due <strong>di</strong>verse <strong>in</strong>terfacce, la prima<br />

orientata alla com<strong>un</strong>icazione, l'altra all'<strong>in</strong>terazione con il programma.<br />

Ci siamo riferiti a questi moduli <strong>di</strong> <strong>in</strong>terazione come a “plug<strong>in</strong>” (si veda Fig. 3).<br />

Da <strong>un</strong> p<strong>un</strong>to <strong>di</strong> vista piu' tecnico, abbiamo implementato <strong>un</strong> server SOAP per<br />

le operazioni esterne del plug<strong>in</strong>, <strong>in</strong> modo che possa venire utilizzato dal client<br />

contenuto nell'eng<strong>in</strong>e oppure da applicazioni <strong>di</strong> terze parti. E' stato qu<strong>in</strong><strong>di</strong><br />

previsto, a livello <strong>di</strong> protocollo, <strong>un</strong>a prima verifica s<strong>in</strong>tattica me<strong>di</strong>ante la<br />

def<strong>in</strong>izione <strong>di</strong> <strong>un</strong> XML Schema ad-hoc, esten<strong>di</strong>bile da ogni plug<strong>in</strong>, per la<br />

validazione del payload.<br />

Per <strong>un</strong> esempio della struttura del plug<strong>in</strong>, illustreremo quello sviluppato per


Moodle.<br />

Fig. 2: Pattern Message Gateway, immag<strong>in</strong>e da [13]<br />

Fig. 1: Pattern Message Broker ,<br />

immag<strong>in</strong>e da [12]<br />

3.1 MOODLE PLUGIN<br />

Lo scopo <strong>di</strong> questo plug<strong>in</strong> e' quello <strong>di</strong> dotare Moodle, <strong>un</strong>a suite <strong>di</strong> e-learn<strong>in</strong>g<br />

Open Source – che e' adottata correntemente <strong>in</strong> tutto il mondo da <strong>un</strong>iversita',<br />

scuole e servizi <strong>di</strong> formazione – <strong>di</strong> <strong>un</strong>a estensione della propria <strong>in</strong>terfaccia<br />

applicativa, esponendo tali servizi con chiamate SOAP.<br />

Il nostro plug<strong>in</strong> qu<strong>in</strong><strong>di</strong> e' orientato ad implementare <strong>un</strong>'<strong>in</strong>terfaccia SOAP <strong>in</strong><br />

grado <strong>di</strong> rendere possibile amm<strong>in</strong>istrare le impostazioni dei corsi <strong>di</strong> stu<strong>di</strong>o e<br />

degli studenti iscritti alla suite<br />

attraverso <strong>un</strong> approccio XMLbased.<br />

E' stato utilizzato, come<br />

l<strong>in</strong>guaggio implementativo<br />

PHP, nella versione 5, per<br />

motivi prestazionali, sia legati<br />

alla gestione dei messaggi<br />

SOAP, supportati <strong>in</strong> maniera<br />

nativa, sia per i benefici<br />

connessi all'adozione delle<br />

libXML2 nel core del motore<br />

Zend.<br />

4.1.1 Importazione<br />

Questa parte dell'<strong>in</strong>terfaccia e'<br />

Fig. 5: Diagramma Eng<strong>in</strong>e – SOAP Layer<br />

composta da tre meto<strong>di</strong>, che<br />

permettono a Moodle <strong>di</strong> effettuare importazioni massive <strong>di</strong> utenti, studenti o<br />

categorie, attraverso il framework SOAP. A questo scopo, e' stato def<strong>in</strong>ito <strong>un</strong><br />

XML Schema nel quale abbiamo def<strong>in</strong>ito i tipi <strong>di</strong> dati e le strutture f<strong>un</strong>zionali<br />

all'acquisizione XML: abbiamo qu<strong>in</strong><strong>di</strong> estrapolato dal database MySQL <strong>di</strong><br />

Moodle i campi <strong>di</strong> <strong>in</strong>teresse.<br />

Qu<strong>in</strong><strong>di</strong>, abbiamo previsto, <strong>in</strong> or<strong>di</strong>ne temporale, le procedure client-server per le<br />

attivita' <strong>di</strong> gestione della de<strong>in</strong>capsulazione delle <strong>in</strong>formazioni nei payload SOAP<br />

, del pars<strong>in</strong>g del documento WSDL <strong>di</strong> riferimento, della sua validazione e<br />

f<strong>in</strong>almente della effettiva raccolta dati per l'<strong>in</strong>serimento.


Cio' che risulta da rimarcare e' la non <strong>in</strong>trusivita' <strong>di</strong> tali f<strong>un</strong>zionalita' all'<strong>in</strong>terno<br />

dell'ambiente operativo orig<strong>in</strong>ale: sono state <strong>in</strong>fatti utilizzate le stesse API<br />

fornite da Moodle nella propria libreria <strong>di</strong> data management.<br />

4.1.2 Esportazione<br />

Nonostante esista la possibilita' <strong>di</strong> effettuare backup <strong>in</strong> formato XML per<br />

Moodle, non abbiamo trovato alc<strong>un</strong> metodo altrettanto <strong>in</strong>cluso per la validazione<br />

<strong>di</strong> tali <strong>in</strong>formazioni, e com<strong>un</strong>que il livello <strong>di</strong> customizzazione fornito non era<br />

adeguata alle nostre esigenze.<br />

Abbiamo qu<strong>in</strong><strong>di</strong> stabilito <strong>di</strong> utilizzare lo stesso schema utilizzato per<br />

l'importazione, qu<strong>in</strong><strong>di</strong> sempre facendo riferimento alle API <strong>di</strong> Moodle ed ai<br />

meto<strong>di</strong> <strong>di</strong> <strong>in</strong>capsulazione – decapsulazione XML.<br />

Queste operazioni sono ottenute impededo ogni possibilita' <strong>di</strong> per<strong>di</strong>ta<br />

<strong>in</strong>formativa, attraverso la <strong>di</strong>retta validazione con l'XML Schema sia per il<br />

messaggio SOAP che per il suo payload, operazione ripetuta anche <strong>in</strong><br />

ricezione.<br />

4 CONCLUSIONI<br />

Il lavoro svolto, ha raggi<strong>un</strong>to come primo risultato, <strong>un</strong>a forte contrazione dei<br />

costi <strong>di</strong> mantenimento <strong>di</strong> Moodle, permettendo semplici <strong>in</strong>tegrazioni con<br />

l'<strong>in</strong>frastruttura esistente ed altre soluzioni commerciali <strong>in</strong> esercizio. Inoltre, tale<br />

attivita' ha portato <strong>un</strong> beneficio concreto per la com<strong>un</strong>ita' Open Source<br />

associata a Moodle, fornendo <strong>un</strong>a estensione a tutto vantaggio degli utilizzatori<br />

<strong>in</strong>seriti <strong>in</strong> ambienti professionali, quali scuole, <strong>un</strong>iversita' ed enti <strong>di</strong> formazione.<br />

5 RIFERIMENTI<br />

[1] Fenves S.J, “The penetration of <strong>in</strong>formation technologies <strong>in</strong>to civil and structural eng<strong>in</strong>eer<strong>in</strong>g design: state-ofthe-art<br />

and <strong>di</strong>rections toward the future”, 1996.<br />

[2] Hannus M., “Islands of Automation <strong>in</strong> Construction”, Construction on the <strong>in</strong>formation highway, 1996.<br />

[3] XML Schema Part 0: Primer Second E<strong>di</strong>tion (W3C Recommendation 28 October 2004),<br />

http://www.w3.org/TR/xmlschema-0.<br />

[4] Web Services Architecture (W3C Work<strong>in</strong>g Group Note 11 February 2004),<br />

http://www.w3.org/TR/2004/NOTE-ws-arch-20040211.<br />

[5] Web Services Description Language (WSDL) Version 2.0 Part 1: Core Language (W3C Work<strong>in</strong>g Draft 3<br />

August 2004), http://www.w3.org/TR/wsdl20.<br />

[6] SOAP Version 1.2 Part 0: Primer (W3C Recommendation 24 J<strong>un</strong>e<br />

2003),http://www.w3.org/TR/2003/REC-soap12-part0-20030624.<br />

[7] XSL Transformations (XSLT) Version 1.0 (W3C Recommendation 16 November 1999),<br />

http://www.w3.org/TR/xslt.<br />

[8] M. Kay, XSLT Prgrammer's Reference, Wrox Press Ltd (UK), 2000.<br />

[9] G. Hohpe and B. Woolf, Message Broker, <strong>Enterprise</strong> <strong>Integration</strong> Patterns, Ad<strong>di</strong>son-Wesley Professional, 2003.<br />

[10] G. Hohpe and B. Woolf, Messag<strong>in</strong>g Gateway, <strong>Enterprise</strong> <strong>Integration</strong> Patterns, Ad<strong>di</strong>son-Wesley Professional,<br />

2003.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!