Metodologie e Tecniche per la Cooperazione Applicativa

Transcript

Metodologie e Tecniche per la Cooperazione Applicativa
Università di Roma “Tor Vergata”
Facoltà di Ingegneria
Laurea in Ingegneria Informatica
Metodologie e Tecniche
per la Cooperazione Applicativa nella
Pubblica Amministrazione italiana:
progettazione e sviluppo di una Porta di
Dominio
Relatore: Prof. G.F. Italiano
Correlatore: Dr. S. Fuligni
Correlatore: Ing. S. Armenia
Candidato: Vittorio Ottaviani
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Indice
Vittorio Ottaviani
_______________________________________________________________________
Copyright© Tutti i diritti sono riservati all'autore, all'Università di Roma "Tor Vergata"
ed al CNIPA" come da legge sul Diritto d'Autore n.518 del 1992 e successive
modifiche
Autore: Vittorio Ottaviani
Mail: [email protected]
Titolo: Metodologie e Tecniche per la Cooperazione Applicativa nella Pubblica
Amministrazione italiana: progettazione e sviluppo di una Porta di Dominio
Roma, 23 Febbraio 2007
1
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Indice
Vittorio Ottaviani
_______________________________________________________________________
Indice
1.
Introduzione ............................................................................................................. 4
2.
L’interoperabilità fra sistemi informatici................................................................. 6
3.
4.
2.1
Architetture orientate ai servizi........................................................................ 7
2.2
Il modello a “Web Services”.......................................................................... 10
2.3
La cooperazione applicativa: approcci ed esperienze.................................... 13
SPC: il Sistema Pubblico di Connettività e Cooperazione .................................... 16
3.1
Il Sistema Pubblico di Connettività ............................................................... 17
3.2
Il Sistema Pubblico di Cooperazione (SPCoop) ............................................ 21
3.3
Modello e architettura del SPCoop ................................................................ 29
3.4
L’Accordo di Servizio.................................................................................... 39
3.5
La Busta e-Gov .............................................................................................. 43
3.6
La Porta di Dominio....................................................................................... 49
3.7
SICA: i servizi infrastrutturali per la cooperazione applicativa..................... 53
Sviluppo di una Porta di Dominio ......................................................................... 59
4.1
Progettazione di una “proof of concept” di Porta di Dominio....................... 59
4.2
Fasi della progettazione ................................................................................. 65
4.2.1
Definizione degli Attori ......................................................................... 66
4.2.2
Casi d’Uso.............................................................................................. 66
4.2.3
Sequence Diagrams................................................................................ 73
4.2.4
Architettura modulare ............................................................................ 92
4.2.4.1
Acquisizione ...................................................................................... 95
4.2.4.2
Inoltro................................................................................................. 96
2
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Indice
Vittorio Ottaviani
_______________________________________________________________________
4.2.4.3
Ricezione............................................................................................ 99
4.2.4.4
Smistamento..................................................................................... 101
4.2.4.5
Smistamento degli Errori ................................................................. 102
4.2.4.6
Gestione eccezioni ........................................................................... 103
4.2.4.7
Gestione dei SOAP:FAULT ............................................................ 105
4.2.4.8
Gestione dei log ............................................................................... 106
4.2.4.9
Gestione dei messaggi diagnostici ................................................... 106
4.2.4.10 Funzionalità aggiuntive.................................................................... 107
4.2.5
4.2.5.1
Tomcat ............................................................................................. 112
4.2.5.2
AXIS ................................................................................................ 112
4.2.5.3
JAXB................................................................................................ 114
4.2.6
4.3
Realizzazione della libreria Busta di e-Gov......................................... 116
Profili di comunicazione e collaborazione................................................... 130
4.3.1
Messaggio singolo ............................................................................... 130
4.3.2
Comunicazione sincrona...................................................................... 137
4.3.3
Comunicazione asincrona .................................................................... 145
4.4
5
Strumenti utilizzati............................................................................... 110
Problemi e soluzioni .................................................................................... 149
Conclusioni e sviluppi futuri................................................................................ 154
5.1
Conclusioni .................................................................................................. 154
5.2
Sviluppi futuri .............................................................................................. 155
5.3
Community di Sviluppo............................................................................... 158
Bibliografia .................................................................................................................. 163
Indice analitico delle figure ......................................................................................... 172
Glossario ...................................................................................................................... 174
3
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Introduzione
Vittorio Ottaviani
_______________________________________________________________________
1. Introduzione
Il presente lavoro è il primo nato dalla collaborazione tra il CNIPA e la facoltà di
Ingegneria dell’Università di Roma “Tor Vergata” sui temi dell’interoperabilità e
dell’integrazione dei sistemi informatici ed in particolare sull’evoluzione del Sistema
Pubblico di Cooperazione (SPCoop), il framework per l’interoperabilità dei servizi
telematici delle amministrazioni pubbliche italiane.
Questa tesi si pone l’obiettivo di analizzare gli aspetti peculiari relativi alla
progettazione ed implementazione di una cosiddetta “proof of concept” di una Porta di
Dominio (cfr. §3.5), cioè l’implementazione di un prototipo concettuale per la verifica
della validità delle caratteristiche fondamentali di uno degli elementi architetturali
principali del SPCoop.
Un ulteriore obbiettivo è quello di proporre un modello sostenibile per la nascita ed il
governo di una community “Open Source” con l’obiettivo di sviluppare una
implementazione di riferimento a codice aperto di una Porta di Dominio.
Nel prossimo capitolo verrà condotta preliminarmente una panoramica sulle
Architetture Orientate ai Servizi (SOA) (cfr. §2.1), a cui seguirà un’analisi della
tecnologia dei Web Services (cfr. §2.2), potenzialmente adatta all’implementazione del
modello architetturale SOA.
Verrà inoltre trattato il tema dell’interoperabilità dei sistemi informatici (cfr. §2.3), con
un’analisi sintetica di quanto accade nel mercato ICT, sia in Europa che nel nostro
paese.
Nel terzo capitolo verrà introdotto con maggiore dettaglio il concetto di cooperazione
applicativa e come stato sviluppato nella Pubblica Amministrazione italiana; ciò verrà
4
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Introduzione
Vittorio Ottaviani
_______________________________________________________________________
fatto accennando al Sistema Pubblico di Connettività (cfr. §3.1) nonché descrivendo il
Sistema Pubblico di Cooperazione (SPCoop) (cfr. §3.2) e gli elementi che lo
caratterizzano: la Busta di e-Gov (cfr. §3.4), la Porta Di Dominio (cfr. §3.5), l’Accordo
di Servizio (cfr. §3.6) ed i Servizi di Interoperabilità, Cooperazione ed Accesso (SICA,
cfr. §3.7). Verranno, inoltre, analizzate le modalità in cui questi elementi
contribuiscono al conseguimento dell’interoperabilità e della cooperazione applicativa
tra le amministrazioni;ciò sarà illustrato nella sezione che descrive l’architettura del
Sistema Pubblico di Cooperazione (cfr. §3.3)
Nel quarto capitolo saranno descritte le attività di progettazione ed implementazione
della “proof of concept” di una Porta Di Dominio, descrivendo gli strumenti utilizzati,
le scelte progettuali ed il processo di realizzazione, i problemi incontrati e le soluzioni
adottate nonché i perfezionamenti apportati al codice in seguito alla prima stesura.
Nel quinto capitolo verranno, quindi, proposte le conclusioni tratte da questa
esperienza, le linee suggerite per sviluppi futuri ed un possibile modello per lo sviluppo
di una community open-source sui temi affronati, motivando le scelte effettuate e
descrivendo un modello di gestione compatibile con gli obiettivi del SPCoop.
5
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
L’interoperabilità fra sistemi informatici
Vittorio Ottaviani
_______________________________________________________________________
2. L’interoperabilità fra sistemi informatici
Nell’ambito dell’ICT (Information & Communications Technologies), l’interoperabilità
è definibile come la capacità dei sistemi informatici di cooperare, erogando e fruendo
servizi, con altri sistemi ed usare i servizi scambiati per effettuare operazioni più
complesse di quelle possibili agli stessi sistemi in un ambiente non cooperativo; questo
vantaggio nasce dalla disponibilità di risorse, quali dati, servizi, risorse di calcolo o
altre risorse, che in ambito non cooperativo non sarebbero disponibili.
A livello software per interoperability si intende la capacità di differenti programmi o
sistemi informatici di scambiare dati tramite gli stessi protocolli o le stesse procedure o
leggere e scrivere files dello stesso formato.
Spesso il software realizzato senza una progettazione che tenga in considerazione la
standardizzazione delle procedure effettuate dal prodotto è un software che manca di
interoperabilità.
Ci sono diverse modalità per garantire l’interoperabilità dei sistemi informatici, una di
queste è utilizzare modelli architetturali di tipo orientato ai servizi; questo modello
architetturale permette a sistemi eterogenei di interoperare utilizzando procedure e
standard comuni.
Nel seguito di questo capitolo (cfr. §2.1) verrà trattato il tema delle Service Oriented
Architecture (SOA); verrà poi esaminata la tecnologia dei Web Services, una tecnologia
che permette di sviluppare una SOA (cfr. §2.2).
6
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
L’interoperabilità fra sistemi informatici
Vittorio Ottaviani
_______________________________________________________________________
2.1
Architetture orientate ai servizi
Con Service-Oriented Architecture si identifica un modello architetturale che supporta
l’uso di servizi che soddisfano le richieste degli utenti, rendendo possibile l’utilizzo
delle singole applicazioni come componenti dei processi applicativi.
Quindi, utilizzando modelli architetturali di tipo Service Oriented, si possono
modificare, in modo abbastanza semplice, sia le modalità secondo le quali
interagiscono i servizi, sia le combinazioni dei servizi stessi che vengono fruiti per
realizzare un processo; allo stesso modo risultano semplificate le operazioni di aggiunta
di servizi e la modifica di processi per rispondere alle specifiche esigenze di business: il
servizio non è più vincolato ad una specifica piattaforma o ad un'applicazione ma può
essere considerato come un componente riutilizzabile nell’ambito di processi di
business differenti.
Il modello architetturale Orientato ai Servizi si applica preferibilmente ai sistemi che si
mostrano particolarmente complessi sia nei processi che nelle applicazioni; questo
deriva dal fatto che le interazioni tra diverse realtà vengono facilitate, permettendo allo
stesso momento che le attività applicative sviluppino processi efficienti, sia all’interno
che all’esterno dei sistemi stessi, aumentandone l'adattabilità e la flessibilità.
Le Service Oriented Architecture non sono legate ad una tecnologia in particolare;
esempi delle tecnologie con le quali si possono realizzare delle SOA sono: REST, RPC,
DCOM, CORBA o i Web Services.
L’implementazione di una SOA, infatti,
può avvenire anche in assenza di questi
protocolli; una tecnica alternativa è l’uso del file system; questo si realizza attraverso il
trasferimento di dati secondo le specifiche dell'interfaccia tra i processi, in modo
conforme al concetto di SOA.
Il fulcro delle comunicazioni tra applicazioni è l'indipendenza tra i servizi che vengono
caraterizzati da un’interfaccia specifica e che, quando vengono invocati, eseguono le
7
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
L’interoperabilità fra sistemi informatici
Vittorio Ottaviani
_______________________________________________________________________
proprie operazioni in maniera standard; ciò avviene mantenendo l’applicazione
chiamante all’oscuro di quale sia il servizio che effettivamente esegue l’operazione;
allo stesso modo il servizio non ha necessità di conoscere come sia realizzata
l’applicazione chiamante. La conoscenza reciproca è del tutto irrilevante visto che
erogatore e fruitore basano l’interazione sulle interfacce esposte.
Il modello architetturale SOA può essere considerato un buon metodo per implementare
architetture di sistemi informatici adatte alla creazione di applicazioni sviluppate,
combinando servizi debolmente accoppiati in modo da renderli interoperabili tra loro.
La cooperazione tra questi servizi è indipendente dalla piattaforma sottostante e dalle
tecnologie in cui sono sviluppati; importante è invece la definizione formale dei servizi
stessi.
Un esempio di ciò possono essere i servizi scritti in Java, usando la piattaforma Java EE
e quelli in C# con .NET; questi servizi possono essere utilizzati da una applicazione di
livello più alto, utilizzando le interfacce di queste applicazioni.
Le applicazioni in esecuzione su una piattaforma possono anche utilizzare servizi in
esecuzione su altre, come succede con i Web Services; questa caratteristica favorisce la
riusabilità di software già presente.
8
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
L’interoperabilità fra sistemi informatici
Vittorio Ottaviani
_______________________________________________________________________
Figura 11: Possibile architettura di una SOA (fonte: Wikipedia)
In Figura 1 sono mostrati i possibili elementi di una SOA; come si può vedere i servizi
sono solo una parte della struttura. Rimane il fatto che i servizi sono il cardine delle
SOA; in un servizio, non è importante come venga fatta la realizzazione delle
funzionalità stesse (Business Logic e Data); è invece fondamentale che laparte di
Contratto (Contract) e di Interfaccia (Interface) seguano le specifiche definite. Anche il
Service Repository è una parte fondamentale, è infatti su questo elemento che i servizi
della SOA vengono registrati per poi essere erogati, tramite l’Application front-end,
utilizzando il Service Bus, che può essere realizzato sia logicamente sia fisicamente.
Figura 1 è una possibile implementazione di una SOA, non è infatti obbligatorio che
l’architettura contenga tutti gli elementi mostrati nella figura; allo stesso modo è
possibile che altre implementazioniche contengano elementi non presenti in questa
immagine.
1
http://upload.wikimedia.org/wikipedia/commons/d/d4/SOA_Elements.png
9
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
L’interoperabilità fra sistemi informatici
Vittorio Ottaviani
_______________________________________________________________________
Questo tipo di architettura è adeguato per una realtà complessa ed eterogenea, in
termini informatici, come la Pubblica Amministrazione; per questo motivo tale modello
viene ripreso sia dai progetti di interoperability in Europa che di cooperazione
applicativa in Italia, con l’obiettivo di sviluppare un framework per le Amministrazioni
Locali e Centrali mediante il quale rendere disponibili i servizi.
Utilizzando Architetture Orientate ai Servizi, infatti, la Pubblica Amministrazione che
vuole pubblicare un servizio è responsabile di erogarlo in maniera conforme ai
protocolli utilizzati nell’architettura ma è del tutto padrona del servizio fornito e dunque
può scegliere come erogarlo.
2.2
Il modello a “Web Services”
Una tecnologia applicabile per implementare una architettura orientata ai servizi (SOA)
è quella dei Web Services.
Il W3C definisce un Web Service (servizio web) come un sistema software progettato
per supportare l'interoperabilità tra diversi sistemi che cooperano su una stessa rete; una
delle caratteristiche fondamentali di un Web Service è quella di esporre un'interfaccia
software,
che
viene
descritta
secondo
formati
che
possano
essere
gestiti
automaticamente, ad esempio, il WSDL; utilizzando questa interfaccia i sistemi possono
fruire delle prestazioni erogate dal Web Service effettuando chiamate alle operazioni
descritte nell’interfaccia tramite messaggi ad-hoc che vengono scambiati utilizzando la
"busta" SOAP [46] [47]: tali messaggi sono, solitamente, trasportati tramite il protocollo
HTTP e formattati secondo lo standard XML.
È grazie al lavoro di standardizzazione in ambiente “open” (le specifiche dei protocolli
di comunicazione utilizzati dai WS sono tutte di libero accesso e condivise), che viene
10
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
L’interoperabilità fra sistemi informatici
Vittorio Ottaviani
_______________________________________________________________________
fatto da enti come consorzio OASIS (Organization for the Advancement of Structured
Information Standards) ed il W3C (World Wide Web Consortium), che è possibile
l’interoperabilità di sistemi sviluppati in linguaggi differenti, come Java e Pyton, che
lavorano su differenti piattaforme, come Linux e Windows.
La pila protocollare dei Web Services è principalmente basata su:
•
SOAP: protocollo secondo il quale vengono scambiati i dati tra i sistemi che
partecipano ad una operazione di scambio di servizi utilizzando Web Services;
•
UDDI [48]: protocollo utilizzato per elencare i servizi in un registro centrale e
comune che permetta la ricerca; questo registro (registro UDDI) ha la
funzionalità di permettere il reperimento dei servizi in maniera veloce;
•
WSDL2: linguaggio descrittivo basato su XML utilizzato per descrivere
l’interfaccia dei Web Services.
•
WS-Security [49]: protocollo che permette l'autenticazione degli utenti e la
confidenzialità dei messaggi scambiati con l'interfaccia del Web Service.
•
WS-Reliability [50]: specifiche basate su SOAP che soddisfano la richiesta di
messaggi affidabili, richiesta critica per alcune delle applicazioni che utilizzano i
Web Service come transazioni monetarie.
2
WSDL (acronimo di Web Services Description Language) è un linguaggio formale in formato XML
utilizzato per la creazione di "documenti" per la descrizione di Web Service. Mediante WSDL può
essere, infatti, descritta l'interfaccia pubblica di un Web Service ovvero creata una descrizione, basata su
XML, di come interagire con un determinato servizio: un "documento" WSDL contiene infatti,
relativamente al Web Service descritto, informazioni su:
• cosa può essere utilizzato (le "operazioni" messe a disposizione dal servizio);
• come utilizzarlo (il protocollo di comunicazione da utilizzare per accedere al servizio, il formato dei
messaggi accettati in input e restituiti in output dal servizio ed i dati correlati) ovvero i "vincoli"
(bindings in inglese) del servizio;
• dove utilizzare il servizio (cosiddetto endpoint del servizio che solitamente corrisponde all'indirizzo in formato URI - che rende disponibile il Web Service).
Le operazioni supportate dal Web Service ed i messaggi che è possibile scambiare con lo stesso sono
descritti in maniera astratta e quindi collegati ad uno specifico protocollo di rete e ad uno specifico
formato. Il WSDL è solitamente utilizzato in combinazione con SOAP e XML Schema per rendere
disponibili Web Services su reti aziendali o su internet: un programma client può, infatti, "leggere" il
documento WSDL relativo ad un Web Service per determinare quali siano le funzioni messe a
disposizione sul server e quindi utilizzare il protocollo SOAP per utilizzare una o più delle funzioni
elencate dal WSDL. La versione 1.1 di WSDL non è stata adottata come standard dal World Wide Web
Consortium (W3C), ma l'11 maggio 2005 è stata rilasciata la "bozza" della versione 2.0 che sarà invece
adottata come standard ufficiale (in forma di "raccomandazione") dal W3C [45].
11
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
L’interoperabilità fra sistemi informatici
Vittorio Ottaviani
_______________________________________________________________________
Semplicemente facendo riferimento alle interfacce esposte, ed utilizzando le funzioni
che sono in grado di effettuare i servizi, sistemi sviluppati in maniera differente e con
differenti scopi possono cooperare e scambiarsi informazioni.
I Web Services sono applicabili sia la caso di piccole reti locali che al caso più generale
ed eterogeneo che può essere internet.
La funzionalità più innovativa dei Web Services e più in generale delle SOA è la
possibilità di creare sistemi che cooperino in maniera completamente disaccoppiata;
infatti, l’interfaccia standard esposta dal Web Service rende possibile al sistema utente
di fruire i servizi senza conoscere le procedure che vengono svolte nel lato del sistema
erogatore.
Altra caratteristica innovativa dei Web Services è quella di permettere di modificare le
applicazioni che erogano i servizi in maniera del tutto "trasparente" all'interfaccia
esposta; questo significa che mantenendo stabile l’interfaccia, il programma, o più in
generale il sistema erogatore, può cambiare senza creare problemi all’interoperabilità tra
i sistemi che cooperano.
La flessibilità data dalla possibilità di disaccoppiare il Web Service dalla logica
applicativa che effettivamente fornisce la prestazione consente la creazione di sistemi
software complessi costituiti da componenti svincolati l'uno dall'altro ed una forte
riusabilità di codice ed applicazioni già sviluppate.
L’interazione fra i Web Services avviene sulla base del paradigma find-bind-execute.
12
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
L’interoperabilità fra sistemi informatici
Vittorio Ottaviani
_______________________________________________________________________
Figura 2: Paradigma Find-Bind-Execute
In Figura 2 è mostrato uno schema di come funzioni questo paradigma articolato in tre
fasi:
1.
find: dove il servizio viene ricercato sui sistemi di registro, tipicamente i registri
UDDI nel caso dei Web Services;
2.
bind: dove il client si collega al sistema server del servizio che vuole eseguire;
3.
execute: dove il client accede al Web Service eseguendo le procedure fornite dal
sistema server.
2.3
La cooperazione applicativa: approcci ed esperienze
Numerose iniziative sono state avviate nei paese dell’Unione Europea in tema di
interoperability: l’Inghilterra, per esempio, sta sviluppando e-GIF (e-Government
Interoperability Framework), un framewok per l’interoperabilità tra le amministrazioni
pubbliche tramite l’uso di Servizi Web; la Germania sta implementando il sistema
13
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
L’interoperabilità fra sistemi informatici
Vittorio Ottaviani
_______________________________________________________________________
SAGA (Standards und Architekturen für E-Government); sistema modellato con
un’architettura del tipo SOA riportata nella prossima figura.
Figura 3: Architettura del Sistema SAGA [21]
Anche paesi relativamente meno sviluppati sono attivi in questo settore e stanno
presentando i propri modelli di interoperability: l’Ungheria ne è un esempio; il suo
sistema di interoperability prende il nome di MEKIK (Hungarian Electronic Public
Administration Interoperability Framework) ed è un adattamento del sistema di tedesco
alla realtà ungherese.
Un progetto di rilevanza europea è IDABC (Interoperable Delivery of Pan-European eGovernment Services to Public Administrations, Business and Citizens), nato con
l’obiettivo di definire un modello per l’interoperabilità transnazionale fra i Paesi membri
dell’UE.
Maggiore dettagli su IDABC sono riportati in Appendice1.
14
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
L’interoperabilità fra sistemi informatici
Vittorio Ottaviani
_______________________________________________________________________
Nel nostro paese il modello per l’interoperabilità fra i sistemi informatici della PA è
definito dal SPCoop (Sistema Pubblico di Cooperazione), parte del progetto SPC
(Sistema Pubblico di Connettività e Cooperazione), istituito dal Governo con il D.lvo n.
42 del 28 febbraio 2005 [1] poi confluito nel CAD [2] e sviluppato dal CNIPA.
Il Sistema Pubblico di Cooperazione si caratterizza per l’approccio a 360 gradi che ha
riguardato sia gli aspetti normativi che tecnici ed organizzativi, curando particolarmente
la condivisione del metodo e dei risultati fra tutti gli interlocutori coinvolti,
amministrazioni centrali e locali ed operatori del settore ICT.
15
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
3. SPC:
il
Sistema
Pubblico
di
Connettività
e
Cooperazione
Le amministrazioni pubbliche italiane interagiranno in rete attraverso il Sistema
Pubblico di Connettività e Cooperazione, costituito da due livelli di servizi
infrastrutturali:
•
il Sistema Pubblico di Connettività, che ha come obbiettivo quello di fornire una
infrastruttura di rete affidabile e sicura (cfr §3.1);
•
il Sistema Pubblico di Cooperazione, il cui scopo è quello di fornire un
framework per l’iteroperabilità fra servizi applicativi (cfr. §3.2).
Nella prossima figura (Figura 4) viene mostrata l’architettura del Sistema Pubblico di
Connettività e Cooperazione; si può vedere come il SPCoop si appoggi sui servizi offerti
dallo strato di Connettività.
S
P
C
Amministrazioni pubbliche
Servizi
applicativi
SP Cooperazione
Messaggi
SP Connettività
Pacchetti
Figura 4: Pila SPC
16
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
3.1
Il Sistema Pubblico di Connettività
“La legge n. 59 del 15 marzo 1997 ha provveduto a colmare la lacuna di un’unica rete,
omogenea per qualità sicurezza e costi che aveva caratterizzato le Pubbliche
Amministrazioni fino agli anni novanta; infatti, precedentemente a questa norma, non
esisteva un organismo che operasse armonicamente nel contesto delle comunicazioni ma
si era proceduto individualmente sulla base delle differenti esigenze che si erano
presentate nel corso degli anni, dando vita ad una pluralità di reti dati non dialoganti tra
loro.
Questa rete unitaria ha rappresentato per le Amministrazioni Centrali la piattaforma di
sviluppo delle applicazioni. Le precedenti reti delle Amministrazioni, realizzate con
CDN e accessi X.25, si sono evolute in reti IP favorendo l’utilizzo della posta
elettronica e del web.
Attualmente si sta convertendo in un sistema più moderno, denominato Sistema
Pubblico di Connettività, la Rete unitaria della Pubblica Amministrazione (RUPA) che
collegava la quasi totalità delle sedi delle Pubbliche Amministrazioni centrali. Tale
sistema utilizza tecnologie e protocolli attuali.
I principali obiettivi del Sistema Pubblico di Connettività sono:
•
fornire un insieme di servizi di connettività condivisi dagli Enti interconnessi,
definiti negli aspetti di omogeneità, qualità e sicurezza, ampiamente graduabili
in maniera tale da poter essere ritagliati al meglio sulle esigenze delle diverse
amministrazioni.
•
Garantire inoltre l’interazione della pubblica amministrazione centrale e locale
con tutti gli altri soggetti connessi ad Internet, nonché con le reti di altri Enti
che debbano interagire con la P.A., facilitando l’erogazione di servizi di qualità
17
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
e la fruibilità degli stessi da parte dei cittadini e delle imprese. Tale operazione
non potrà prescindere, in fase di qualificazione anche da requisiti circa la
connettività degli ISP verso i NAP commerciali. Questi ultimi non dovranno
costituire un collo di bottiglia per la fruizione dei servizi esposti dalle
Amministrazioni da parte dei cittadini.
•
Fornire
un’infrastruttura
condivisa
di
interscambio
che
consenta
l’interoperabilità tra tutte le reti delle Pubbliche Amministrazioni oggi esistenti,
favorendone lo sviluppo omogeneo su tutto il territorio, salvaguardando gli
investimenti effettuati.
•
Fornire, alle Amministrazioni che ne faranno richiesta, servizi telematici
(connettività e applicazioni) per permettere l’interconnessione delle proprie sedi
e realizzare così anche l’infrastruttura interna di comunicazione (dominio
dell’Amministrazione).
•
Realizzare un modello di provisioning dei servizi multifornitore coerente con
l’attuale situazione di mercato e le dimensioni del progetto stesso.
•
Realizzare un sistema che, ancorché si basi sull’utilizzo dei paradigmi tipici di
Internet, permetta la definizione di flussi di traffico con caratteristiche di
disponibilità e prestazioni garantite tra soggetti serviti da operatori qualificati
diversi.
•
Garantire, tramite il mantenimento di un sistema di raccolta dei dati di
prestazioni e disponibilità, uno strumento di valutazione indipendente della
qualità dei servizi offerti dai provider qualificati
•
Implementare opportune misure di sicurezza atte a garantire una adeguata
continuità dei propri servizi, in quanto l’indisponibilità degli stessi potrebbe
causare disservizi anche di grande impatto sui processi G2G e quindi sui servizi
erogati ai cittadini.3
3
Sistema Pubblico di Connettività: scenario introduttivo, emesso dal Gruppo di Lavoro SPC, p. 9
18
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
Poiché il Sistema Pubblico di Connettività costituisce l’ossatura di rete del sistema di
interconnessione italiana il suo sviluppo risulta prioritario rispetto a quello rispetto a
quello dei servizi tra i soggetti interoperanti.
Il Sistema Pubblico di Connettività permette di attivare lo scambio di servizi fra
soggetti pubblici in una logica Government to Government (G2G), mentre la
contemporanea interconnessione ad Internet garantisce la fruibilità dei servizi stessi da
parte dei cittadini e delle imprese in una logica di Government to Citizen (G2C).
La possibilità di sviluppare servizi fra le diverse Pubbliche Amministrazioni, in una
logica di G2G, permette di ottenere maggior efficienza nei procedimenti
interamministrazioni e di raggiungere l’obiettivo di presentare le diverse pubbliche
amministrazioni al cittadino e all’impresa, in modo unitario. In tale ottica questo
strumento potrà permettere un’erogazione di servizi secondo modalità diverse di
integrazione, che realizzano una maggiore sinergia, utilizzando diversi strumenti di
accesso tra i quali i Portali nazionali e locali della Pubblica Amministrazione.
Il Sistema Pubblico di Connettività
è da intendersi quindi anche come una
infrastruttura abilitante per lo sviluppo di applicazioni cooperative fra PA Centrali, fra
PA Locali, fra PA Centrali e Locali, fra PA e Imprese/Cittadini.
In Figura 5 si può vedere schematizzata l’architettura della Qualified eXchange
Network del Sistema Pubblico di Connettività.
19
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
Figura 54: Esempio di una QXN del Sistema Pubblico di Connetività
Per soddisfare alcuni degli obiettivi del Sistema Pubblico di Connettività il QXN dovrà
poter supportare diverse tipologie di traffico tra le PA e, in particolare, anche il traffico
tra i cittadini e le PA afferenti ai diversi ISP qualificati.
Sarà possibile lo scambio sicuro di dati internamente e tra le Amministrazioni,
utilizzando sistemi crittografici per realizzare reti private virtuali (VPN); le VPN
verranno utilizzate solo in caso di necessità, e comunque la scelta sull’utilizzo resta
prerogativa delle singole Amministrazioni.
Per quanto riguarda le infrastrutture, l’obiettivo condiviso dalle reti regionali è quello di
portare a sistema nell’ambito di strategie di livello provinciale e regionale tutte le
opportunità presenti nei territori, lasciando alle singole Amministrazioni la libertà di
stipulare contratti diversi a seconda delle opportunità che possono trovare sui propri
4
Sistema Pubblico di Connettività: scenario introduttivo, emesso dal Gruppo di Lavoro SPC, p. 11
20
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
territori, con la priorità di garantire l’uniformità di adeguati livelli di servizio e modalità
di interconnessione indipendentemente dalla densità di popolazione.
L’altra parte del SPC è il progetto SPCoop (Sistema Pubblico di Cooperazione);
progetto che si occupa di curare lo sviluppo della cooperazione applicativa.
Il CNIPA, con i rappresentanti di Amministrazioni centrali e locali, e delle
Associazioni dei fornitori, ha redatto un insieme di documenti che delineano un quadro
tecnico-implementativo del sistema.” 5
3.2
Il Sistema Pubblico di Cooperazione (SPCoop)
Negli ultimi anni l’Italia sta operando verso un decentramento amministrativo delle
competenze secondo le nuove forme di federalismo con più efficienti modelli di
Pubblica Amministrazione che hanno come riferimento il sistema delle regioni e delle
autonomie locali e da questa tendenza emerge il problema di come organizzare la
cooperazione tra le amministrazioni che devono condividere le risorse ed i servizi.
Ciò è tanto più pressante alla luce del dettato della legge 241/90 – art. 14 e 18 (concetto ripreso anche negli art. 5 e 7 del D.Lgs. SPC 42/2005), secondo cui, la PA ha
il dovere di farsi carico (attraverso la conferenza dei servizi telematici, la
riorganizzazione
dei
processi
e
l’integrazione
telematica
dei
back-office)
dell’integrazione dei procedimenti delle diverse amministrazioni interessate al processo
interamministrativo che riguarda una qualsiasi istanza di un cittadino o un’impresa.
Si realizza così un servizio caratterizzato come “multi-ente”, che nasce della
cooperazione delle varie Amministrazioni le quali concorrono, ognuna per la sua parte
di competenza nell’ambito del processo, a comporre il procedimento che porta
all’erogazione del servizio richiesto dall’utente finale.
5
rielaborazione delle parti ritenute interessanti del documento Sistema Pubblico di Connettività: scenario
introduttivo, emesso dal Gruppo di Lavoro SPC [4].
21
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
La progettazione e lo sviluppo del Sistema Pubblico di Cooperazione in CNIPA
prendono il nome di SPCoop.
SPCoop è un progetto che fa parte dell’area d’interesse del progetto SPC.
Un’infrastruttura così complessa ed articolata può mantenere ed accrescere nel tempo il
consenso solo se da un lato viene supportato a livello organizzativo e politico e
dall’altro viene mantenuto un approccio analitico in grado di coinvolgere il mercato ed
il mondo della ricerca.
Entrambi questi aspetti devono essere tenuti in considerazione. In tale direzione si
colloca la collaborazione con l’università di Roma “Tor Vergata” così come anche in
altri ambiti a livello regionale. Queste collaborazioni saranno utili al fine di mantenere
attiva l’attenzione sul tema della cooperazione applicativa ed a creare in tal modo una
connessione tra diversi soggetti del mondo della ricerca e delle amministrazioni al fine
sia di accrescere la sensibilità per quanto riguarda le applicazioni dei concetti relativi ai
sistemi distribuiti che per la creazione di comunità e grouppi di interesse su aluni dei
temi specifici.
Il Sistema Pubblico di Connettività e Cooperazione che si sta realizzando permetterà di
vedere tutti i servizi di ogni Amministrazione Pubblica sia centrale che locale in
maniera integrata ed indipendente dal canale di erogazione. Per questo è stato
necessario definire un modello comune di interazione on-line tale da valorizzare la
specificità di ogni erogatore di servizi così che possa assicurare allo stesso tempo
uniformità di interazione e certezza nell’identificazione dell’erogatore e del fruitore, o
allo stesso modo degli attori dell’interazione.
Essendo già presenti a livello nazionale molteplici soluzioni architetturali per la
Cooperazione Applicativa è emersa la necessità di individuare una soluzione
infrastrutturale unica che da un lato tendesse a preservare l’autonomia delle scelte delle
amministrazioni e, dall’altro, consentisse ai diversi sistemi di interoperare fra loro per
erogare servizi integrati agli utenti.
22
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
L’obiettivo dell’architettura di cooperazione applicativa è quello di permettere
l’integrazione dei processi e dei dati di amministrazioni diverse basati su sistemi
informatici estremamente eterogenei. Per ottenere questo risultato, lo scambio di dati e
di servizi tra le amministrazioni deve avvenire tra entità di pari livello (amministrazioni
di grado e complessità organizzativa differenti sono paritetiche rispetto alla
cooperazione applicativa) attraverso la condivisione delle modalità di individuazione
dei dati di interesse e delle modalità di accesso ai servizi applicativi: un blackbone
condiviso per l’interazione fra servizi applicativi attraverso interfacce standard
pubbliche.
In sintesi, la cooperazione tra differenti Amministrazioni, ed in generale tra soggetti
pubblici, richiede la definizione di un modello di cooperazione che sia:
•
indipendente dagli assetti organizzativi dei soggetti cooperanti;
•
indipendente dai sistemi informatici interni dei soggetti cooperanti;
•
progettato in maniera rigorosa e sostenibile, tale che la sua evoluzione sul
medio termine sia già pensata sin dall’inizio, con passi ben delineati.6
I principi sui quali si basa il SPCoop sono i seguenti:
Cooperazione tra amministrazioni.
Per mezzo dell’erogazione e della fruizione di Servizi Applicativi le Amministrazioni
cooperano; ogni amministrazione offre questi servizi tramite un unico elemento del
proprio sistema informativo denominato Porta di Dominio. L’amministrazione gode di
completa autonomia grazie a questo principio, in fase di progettazione, realizzazione e
gestione dei Servizi Applicativi. Questo è possibile vista la caratteristica dei Servizi
Applicativi di potersi basare su qualsiasi piattaforma applicativa, preesistente o di
6
Sistema Pubblico di Cooperazione: quadro tecnico d’insieme, redatto dal Gruppo di Lavoro SPCoop in
CNIPA, p.8.
23
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
nuova acquisizione, purché vengano poi erogati attraverso la Porta di Dominio. I servizi
applicativi vengono fruiti attraverso lo scambio di messaggi applicativi, secondo il
formato definito nel documento di specifica della busta di e-Gov.
Ambito di responsabilità.
La responsabilità dei servizi erogati e dei dati forniti attraverso tali servizi è attribuita
alla singola Amministrazione cooperante, che apparirà come un singolo dominio con
responsabilità del singolo elemento e non del dominio stesso.
Accordi.
L’utilizzo di un servizio applicativo tra almeno due soggetti (erogatore e fruitore) deve
essere regolamentato da degli accordi che vengono stipulati a monte della cooperazione
tra i soggetti cooperanti. Questi accordi hanno basi sia sul piano normativo/istituzionale
che su quello tecnico e vanno formalizzati perché possano essere acceduti in maniera
(semi-)automatica così da supportare il ciclo di sviluppo e di esercizio dei servizi stessi.
La formalizzazione dell’accordo prende il nome di Accordo di Servizio ed è basata su
linguaggio XML.
Tecnologie di cooperazione.
I servizi applicativi vengono erogati/fruiti attraverso tecnologie e standard indicati
genericamente come Web Service, che rappresentano una soluzione in grado di
soddisfare i requisiti sopraindicati al problema dell’interoperabilità di sistemi
applicativi eterogenei; infatti grazie a queste tecnologie/standard, qualsiasi funzionalità,
indipendentemente dal tipo di piattaforma, diventa esportabile, in modo da essere
invocata remotamente.
Tali caratteristiche rendono SPCoop un modello con molte attinenze alle SOA descritte
precedentemente (cfr. §2.1); infatti, la necessità di disaccoppiamento tra applicazioni
eterogenee che attualmente vengono utilizzate nelle differenti Amministrazioni ed i
servizi erogati in rete, la necessità di avere una interfaccia che permetta di interagire ad
24
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
un livello superiore di quello della logica applicativa, unito alla necessità di rendere
utilizzabili i sistemi gia presenti nelle Amministrazioni Locali e Centrali, hanno portato
a vedere l’architettura del SPCoop come la declinazione di una SOA adattata alle
necessità della PA.
SPCoop è dunque caratterizzato dai seguenti elementi:
•
un protocollo di comunicazione;
•
una serie di linguaggi per descrivere le caratteristiche dei servizi definite in base
agli accordi di servizio (ad ese. interfacce, livelli di sicurezza e servizio, ecc.);
•
un sistema di registri per gli accordi di servizio;
•
un elemento capace di implementare il paradigma find-bind-execute.
Attualmente le tecnologie su cui si basano i Web Services presentano diversi livelli di
definizione e maturazione; mentre, infatti, su alcuni aspetti, indicati come aspetti di
base, gli standard e le tecnologie che implementano tali standard hanno un livello di
maturità sufficiente, su altri aspetti, definiti avanzati, si è ancora nella fase intermedia
tra il conseguimento dei risultati delle ricerche effettuate e l’utilizzo degli stessi per le
prime realizzazioni.
In particolare risultano ben definiti i seguenti aspetti di base:
•
protocolli applicativi per l’invocazione remota dei servizi: SOAP (Simple Object
Access Protocol);
•
linguaggi per la descrizione dell’interfaccia (intesa come insieme di operazioni)
offerta da un servizio: WSDL (Web Service Description Language);
•
architettura ed interfaccia di un sistema di registro con accesso prevalentemente
basato su identificatori univoci: UDDI (Universal Description, Discovery and
Invocation); mentre risultano non ancora sufficientemente sviluppati i seguenti
aspetti avanzati:
25
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
•
protocolli per l’invocazione remota con caratteristiche di affidabilità, auditing e
sicurezza point-to-point;
•
descrizione delle conversazioni supportate/ammesse dal servizio;
•
descrizione dei livelli di qualità del servizio;
•
descrizione dei requisiti e caratteristiche di sicurezza end-to-end del servizio;
•
descrizione della semantica del servizio e della semantica dell’informazione
veicolata dal servizio;
•
definizione dell’architettura e dell’interfaccia di un sistema di registro con
caratteristiche di accesso più flessibili, basate sugli aspetti avanzati
precedentemente menzionati.7
Ai fini della cooperazione applicativa gli aspetti di base non sono sufficienti, ma anche
gli aspetti avanzati risultano indispensabili; da ciò si evince che il modello ipotizzato
deve prevedere:
•
la caratterizzazione di alcuni aspetti avanzati attraverso la definizione di
standard a livello nazionale, da sviluppare nel tempo e/o far convergere verso
standard internazionali equivalenti quando verranno emessi;
•
l’inserimento di alcuni aspetti descrittivi della qualità nell’Accordo di Servizio,
in maniera da caratterizzare il servizio applicativo in una forma più completa.
Inizialmente, questi elementi saranno non obbligatori, ma opzionali. Quando in
futuro saranno disponibili per tali elementi degli appositi standard, o quando
sarà raggiunto a livello nazionale un opportuno accordo su tutti gli aspetti, tale
da permetterne la loro standardizzazione, anche questi elementi dell’Accordo di
Servizio diverranno obbligatori.8
7
Sistema Pubblico di Cooperazione: quadro tecnico d’insieme, redatto dal Gruppo di Lavoro SPCoop in
CNIPA, p.10.
8
Sistema Pubblico di Cooperazione: quadro tecnico d’insieme, redatto dal Gruppo di Lavoro SPCoop in
CNIPA, p.10.
26
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
Cooperazione fra Amministrazioni.
Il Dominio di Cooperazione è costituito da più insiemi di Amministrazioni che
concorrono alla fornitura di Servizi Applicativi composti; per ogni servizio erogato dal
Dominio, deve esistere un Accordo di Servizio che lo descrive, nel caso di servizi
composti l’Accordo di Servizio va corredato di una specifica che spiega come le varie
Amministrazioni componenti concorrono al servizio composto finale. Questo
documento viene definito Accordo di Cooperazione ed è trasparente rispetto ai fruitori
del servizio composto, mentre ha utilità interna al Dominio di Cooperazione.
Si
definisce così un modo per distinguere tra servizi la cui responsabilità ricade
esclusivamente
sul
singolo
dominio/amministrazione
e
servizi
di
più
domini/amministrazioni per i quali una singola amministrazione assume (per legge, per
delega concordata dagli altri, ecc.) la responsabilità che dovrebbe essere di tutte le
Amministrazioni che erogano il servizio composto.
In questo ambito si nota la differenza tra Dominio Applicativo e Dominio di
Cooperazione;
•
il primo infatti rappresenta l’insieme dei Servizi Applicativi erogati dalla singola
Amministrazione in ambito SPCoop;
•
mentre il secondo rappresenta un insieme di amministrazioni che cooperano per
l’automazione di un insieme di procedimenti amministrativi su di uno specifico
tema.
Un altro componente di rilevante importanza nel modello sono i Servizi di
Interoperabilità, Cooperazione ed Accesso (SICA), che offrono una serie di servizi e
componenti software infrastrutturali (non riconducibili a nessuna amministrazione
specifica), il cui obiettivo è di mediare e supportare la cooperazione tra le
amministrazioni; le varie funzionalità svolte dai SICA sono:
•
la specifica di come un Accordo di Servizio e di Cooperazione deve essere
costruito, formalizzato e composto;
27
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
•
la specifica di come tutti gli elementi “nominabili” nella cooperazione (ovvero
Accordi di Servizio, soggetti, caratteristiche dei servizi, ecc.) devono essere
identificati, secondo uno specifico schema di nomenclatura;
•
la specifica di un modello di sicurezza, che definisce i requisiti di sicurezza (in
termini di autenticità, riservatezza, integrità, non ripudio e tracciabilità) che
devono essere garantiti da tutti gli elementi del sistema;
•
i Servizi di Registro SICA;
•
il Catalogo degli Schemi/Ontologie SICA;
•
i Servizi di Indice dei Soggetti;
•
i Servizi di Sicurezza SICA;
•
iI Servizi di Supporto al Controllo e Gestione.9
In sintesi, il modello di cooperazione applicativa del SPCoop è basato sul paradigma
SOC (Service Oriented Computing) ed organizzato come una SOA (Service Oriented
Architecture); mentre, però, gli aspetti base di questa SOA sono già definiti a livello di
tecnologie/standard, su altri è necessario operare delle estensioni, al fine di rendere
tale architettura adeguata al contesto del e-Government italiano. Va notato, infine, che
tutte le architetture a servizi/SOA richiedono la presenza di un elemento “logicamente”
neutro, con il compito di mediare tra i differenti soggetti che cooperano attraverso
l’erogazione/fruizione di servizi. Il SICA costituisce di fatto tale elemento mediatore,
dotato di funzionalità evolute in virtù del fatto che il modello di cooperazione proposto
prevede la gestione non solo degli aspetti di base, ma anche e soprattutto di alcuni
aspetti avanzati dei Web Services.10 “11
9
Sistema Pubblico di Cooperazione: quadro tecnico d’insieme, redatto dal Gruppo di Lavoro SPCoop in
CNIPA, pp.16-17.
10
Sistema Pubblico di Cooperazione: quadro tecnico d’insieme, redatto dal Gruppo di Lavoro SPCoop
in CNIPA, p.11.
11
rielaborazione delle parti ritenute interessanti del documento Sistema Pubblico di Cooperazione:
Quadro Tecnico d’Insieme, redatto dal Gruppo di Lavoro SPCoop in CNIPA [12].
28
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
Nel paragrafo successivo è descritta in dettaglio la modalità di erogazione e fruizione
dei servizi su SPCoop da parte delle amministrazioni.
3.3
Modello e architettura del SPCoop
Come accennato in precedenza, gli elementi fondamentali dell’architettura del SPCoop
sono: l’Accordo di Servizio, i Servizi SICA, la Busta di e-Government e la Porta di
Dominio.
Nella prossima figura (Figura 6) viene mostrata l’architettura del SPC, si può notare il
ruolo infrastrutturale che svolgono i SICA a livello di coordinamento, per
regolamentare le interazioni tra le amministrazioni (PAC e PAL), e come le
aministrazioni stesse si interfacciano al sistema attraverso le Porte di Dominio (PDC e
PDL), utilizzando l’infrastruttura di trasporto, fornita dal Sistema Pubblico di
Connettività a livello di interazione, dove vengono scambiati i Servizi Applicativi dei
quali indirettamente traggono beneficio i cittadini.
Figura 6: Modello Architetturale del SPCoop
29
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
Nello specifico, l’Accordo di Servizio è la descrizione formale dei servizi applicativi,
cioè dell’applicazione software che può essere invocata remotamente da un soggetto
interessato.
Gli aspetti del servizio che sono descritti nell’Accordo di Servizio sono:
•
interfaccia del servizio, intesa come insieme di operazioni (con la rispettiva
segnatura) offerte dal servizio;
•
protocollo conversazionale del servizio, ovvero quali possibili sequenze di
invocazione di operazioni (conversazioni) sono supportate/ammesse dal servizio;
•
punti d’accesso (endpoint di rete) presso cui effettivamente il servizio è
dispiegato;
•
livelli di qualità del servizio garantiti (SLA);
•
requisiti e caratteristiche di sicurezza del servizio;
•
descrizione della semantica del servizio e della semantica dell’informazione
veicolata dal servizio. [12]
Il primo ed il terzo punto possono essere descritti tramite WSDL (Web Service
Description Language).
In assenza di un linguaggio specifico per descrivere il protocollo di conversazioni
ammesse, è stato proposto un linguaggio pensato appositamente, il WSBL12 (Web
Service Behavioral Language), a cui potranno sostituirsi o affiancarsi eventuali
linguaggi definiti in futuro.
Analogamente, sia per la descrizione dei livelli di servizio (SLA) che dei requisiti di
sicurezza si hanno diverse opzioni in termini di linguaggi formali utilizzabili; le
specifiche prevedono al momento l’utilizzo WSLA o WS-Agreement per gli SLA e WSSecurity Framework per gli aspetti di sicurezza.
12
Sistema Pubblico di Cooperazione: accordo di servizio, redatto dal Gruppo di Lavoro SPCoop in
CNIPA, pp. 37-41
30
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
Per quanto riguarda gli aspetti semantici, la necessità della loro descrizione formale
emerge dal fatto che, nel contesto dell’e-Government, i concetti che intuitivamente
dovrebbero essere condivisi ed universalmente accettati, di fatto presentano sia
differenze di significato anche sostanziali fra diversi soggetti cooperanti che differenti
possibili descrizioni e formati.
emerge, quindi, il bisogno di descrivere non solo le interfacce che caratterizzano un
servizio applicativo ma anche gli schemi concettuali e le ontologie sottostanti alle
informazioni che attraverso lo stesso servizio vengono veicolate; grazie a ciò sarà
possibile accedere, pur non conoscendo il nome o l’erogatore, ai servizi applicativi
disponibili sulla base della loro semantica funzionale.
In tal modo sarà possibile, ad esempio, compiere ricerche semantiche sui servizi
applicativi disponibili in SPCoop. Allo stato attuale esistono vari standard che
permettono di descrivere questi aspetti; quello che sembra più rispondente ai requisiti è
OWL [51].
Un componente nevralgico del SPCoop è il Servizio di Registro SICA che,
semplificando, ha il compito di garantire la gestione di tutti gli aspetti dell’Accordo di
Servizio, mettendo a disposizione tutte le funzioni necessarie allo scopo.
In Errore. L'origine riferimento non è stata trovata. sono schematizzate a livello
logico i vari servizi erogati dai SICA cioè:
•
servizi di gestione, monitoraggio e sicurezza interna;
•
servizi di supporto alla qualificazone delle Porte di Dominio;
•
servizi di supporto alla qualificazone dei Registri SICA secondari;
•
servizi di registro SICA generale;
•
servizi di di catalogo schemi e ontologie;
•
servizi di gestione federate delle identità digitali;
31
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
•
servizi di indice dei soggetti;
•
servizi di certificazione.
Servizio di
Registro
SICA
Generale
Servizio di
Catalogo
Schemi
e
Ontologie
Servizio di
Gestione
Federate
delle
Identità
Identità
digitali
Servizio di
supporto alla qualificazione
della Porta di Dominio
Servizio di
Indice
dei
Soggetti
Servizio di
Certificazione
Servizio di
supporto alla qualificazione
del Servizio di
Registro SICA Secondario
PortadidiDominio
DominioSICA
SICA
Porta
Servizi di
Monitoraggio, Gestione e Sicurezza Interna
Infrastruttura per la cooperazione applicativa
Supporto alla qualificazione di componenti di cooperazione applicativa
Figura 7: Architettura dei servizi SICA
La Porta di Dominio (PDD) e la Busta di e-Gov rappresentano rispettivamente
l’interfaccia tramite la quale interoperano le Amministrazioni ed il protocollo con il
quale le PDD comunicano tra loro.
Descrivendo più nello specifico cosa è una PDD, si può dire che tutti i servizi
applicativi sono erogati/fruiti attraverso questo unico elemento logico. Di fatto la PDD
è la piattaforma presso cui sono disponibili le interfacce applicative dei servizi; non
necessariamente i componenti software che realizzano tali servizi sono poi ospitati sulla
stessa piattaforma della PDD, anzi molto frequentemente ed opportunamente essa
svolgerà le funzioni di semplice proxy e dispatcher verso altre piattaforme di back-end
presso cui sono effettivamente dispiegate le logiche applicative dei servizi.
32
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
La Busta di e-Gov è il protocollo applicativo con cui i servizi applicativi sono
invocabili remotamente ed è una estensione dello standard SOAP 1.1, necessaria al fine
di supportare la sicurezza point-to-point, l’affidabilità della trasmissione e la tracciatura
di tutte le comunicazioni (aspetti avanzati non ancora standardizzati a livello SOAP).
La Busta e-Gov è dunque una estensione di SOAP specificatamente progettata per
SPCoop. Prevede l’utilizzo di un header appositamente predisposto, elaborato dalle
Porte di Dominio, in grado di veicolare tutte le informazioni necessarie per
implementare le suddette funzionalità; tutto questo in maniera trasparente alle
applicazioni che fanno uso delle Porte.
La Figura 8 mostra un esempio di comunicazione tra porte.
Porta di Dominio
Richiesta
Richiesta
Busta e-gov
Busta e-gov
SPC
Trasporto
Modulo di
Integrazione
Busta e-gov
Risposta
Porta di Dominio
Busta e-gov
Risposta
Dominio di
Amministrazione
Figura 8: Esempio di comunicazione tra porte
Quindi una Porta di Dominio è una piattaforma in grado di offrire servizi applicativi in
maniera tale da poter essere invocati remotamente secondo le specifiche della Busta eGov.
33
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
La Busta e-Gov è logicamente suddivisa in due parti: una contiene tipicamente
informazioni infrastrutturali, l’altra veicola il contenuto applicativo del servizio oggetto
della interazione.
Poiché la finalità è quella di mantenere totalmente autonome le amministrazioni nella
definizione del contenuto applicativo e nel contempo di uniformare le informazioni
necessarie alla gestione dello scambio in modalità sicura e affidabile, nella specifica
della Busta e-Gov vengono esclusivamente definiti gli elementi di carattere
infrastrutturale, senza entrare nel contenuto dei dati applicativi trasportati.
L’Header contiene infatti i dati necessari alle Porte di Dominio per implementare le
funzioni di gestione del messaggio comuni ai paradigmi di cooperazione previsti quali:
affidabilità, sicurezza, logging, auditing, ecc.
L’Accordo di Servizio è il cardine del ciclo di vita del servizio. I servizi SPCoop sono
obbligatoriamente gestiti per versioni dell’Accordo di Servizio. Più versioni di uno
stesso servizio (corrispondenti a versioni diverse dell’Accordo di Servizio) possono
essere erogate nello stesso momento. Ogni versione segue un ciclo di vita autonomo,
che è definito dal soggetto responsabile dell’Accordo di Servizio stesso.
Per ogni versione del servizio applicativo, il ciclo di vita è composto da 6 fasi:
•
Definizione dell’accordo di servizio.
•
Registrazione dell’accordo di servizio sul registro SICA nazionale generale.
•
Implementazione del servizio.
•
Presentazione del servizio sul SPCoop.
•
Erogazione/fruizione del servizio sul SPCoop.
•
Dismissione dell’accordo di servizio e del servizio dal SPCoop.13
13
Sistema Pubblico di Cooperazione: Architettura, redatto dal Gruppo di Lavoro SPCoop in CNIPA,
p.60.
34
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
Nella fase di Definizione dell’AS il servizio viene ideato e formalizzato nell’accordo
generale di servizio e eventualmente negli accordi specifici sul livello di servizio e sul
livello di utilizzo.
Il processo che porta alla definizione del servizio segue fondamentalmente due
approcci:
•
Approccio unilaterale: Nell’approccio unilaterale, l’accordo generale di
servizio viene concepito unilateralmente dal soggetto titolare dell’erogatore, o
da un soggetto delegato. Accordi specifici di livello di servizio o di livello di
utilizzo possono seguire l’approccio unilaterale o l’approccio concordato.
•
Approccio concordato: Nell’approccio concordato, l’accordo di servizio è
ideato in modo congiunto dall’erogatore (o il suo rappresentante) e dal fruitore
(o il suo rappresentante).14
Nel SPCoop, la Registrazione del servizio è obbligatoria e deve essere attuata nella
seconda fase. La registrazione comprende molteplici attività da effettuare attraverso il
Servizio di Registro SICA (generale o secondari):
•
registrazione dei titolari dei sistemi erogatori nell’indice dei soggetti della
comunità SPCoop (SICA generale),
•
registrazione degli accordi generali di servizio nel catalogo degli accordi
(SICA generale),
•
registrazione degli accordi specifici di servizio nel catalogo degli accordi
(SICA generale o secondario),
•
registrazione dei servizi da presentare nel registro dei servizi (SICA generale o
secondario),
•
registrazione dei porti di accesso ai sistemi erogatori nella rubrica degli
indirizzi (SICA generale o secondario). 15
14
Sistema Pubblico di Cooperazione: Architettura, redatto dal Gruppo di Lavoro SPCoop in CNIPA,
p.61.
35
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
Nella terza fase, cioè l’Implementazione del servizio, il servizio viene realizzato
secondo le specifiche concordate nell’AS.
In questa fase, i sistemi per l’erogazione e per la fruizione del servizio vengono
implementati dai rispettivi titolari in una modalità che sia in accordo con quanto
definito nell’AS a proposito dei livelli di servizio e dei livelli di utilizzo.
Per come è modellata l’architettura del sistema è possibile minimizzare i livelli di
aderenza e interdipendenza reciproca delle architetture e delle tecnologie di
implementazione dei sistemi erogatori e fruitori; infatti, l’unico elemento tenuto al
rispetto dei vincoli è l’interfaccia di scambio di messaggi. Sul piano tecnico i vincoli
che devono essere rispettati sono quelli relativi all’implementazione delle tecnologie di
connessione e di trasporto; vale a dire che i servizi implementati devono essere
assolutamente conformi ai limiti imposti al momento di definizione degli Accordi di
Servizio per quanto riguarda SLA e funzionalità fornite.
Nello scambio dei messaggi sia le interfacce, sia le tecnologie di interconnessione e
trasporto, devono essere obbligatoriamente specificate nell’AS e devono conformarsi
agli standard SPCoop.
È evidente la necessità di un ambiente nel quale si possa effettuare il testing durante la
fase di implementazione, in modo da dare agli sviluppatori la possibilità di qualificare i
sistemi erogatori e fruitori e di provare l’erogazione/fruizione del servizio.
Il ciclo di implementazione è un sottociclo di quello generale che regola la vita di un
servizio; questo può essere ripreso più volte nel caso di interventi di manutenzione sia
di tipo correttivo, adattativo e migliorativo. Il titolare del sistema erogatore è l’unico
responsabile del ciclo di implementazione; il titolare è dunque tenuto a rispettare gli
15
Sistema Pubblico di Cooperazione: Architettura, redatto dal Gruppo di Lavoro SPCoop in CNIPA,
p.61.
36
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
accordi che sono stati inseriti nell’AS (affidabilità del software, impegno di non
regressione, rapidità di correzione di anomalie, ecc.).
Nella fase di Presentazione del servizio, questo viene presentato in rete dai titolari dei
sistemi erogatori; in questa fase si ha la messa in opera del servizio. La presentazione è
la fase che precede immediatamente la fase di erogazione/fruizione.
Nella fase di erogazione/fruizione il servizio è erogato in conformità con l’Accordo di
Servizio. In questa fase vengono anche svolte attività di tracciatura e, se definito
nell’Accordo di Servizio, può essere effettuato il monitoraggio delle interazioni che si
verificano tra erogatore e fruitore.
La fase di Dismissione del servizio prevede l’archiviazione del servizio, dell’Accordo
di Servizio e dei giornali di tracciatura e può comprendere l’archiviazione di eventuali
supporti di non repudiabilità definiti nell’Accordo di Servizio.
In questa fase il servizio viene “tolto” dal SPCoop dopo aver comunicato ai sistemi
fruitori che esso verrà dismesso.
37
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
Figura 9: Modalità di Erogazione di un Servizio
Come mostrato in Figura 9, l’erogazione di un servizio ha bisogno di una infrastruttura
tutte le operazioni che sono state descritte fino ad ora.
Si può notare come sia simile quello che si vede in Figura 9 con quello mostrato nella
Figura 2 quando si parlava del paradigma find–bind–execute.
Anche nel caso del SPCoop, infatti si fa uso di questo paradigma essendo il SPCoop
basato su SOA.
In sintesi, erogatore e fruitore concordano un Accordo di Servizio (nel caso di
approccio concordato) che viene poi registrato e pubblicato attraverso il Servizi di
Registro SICA a cura dell’erogatore.
Successivamente, erogatore e fruitore implementano il servizio per il suo utilizzo.
inizia, quindi, la fase simile a quella che era stata descritta in §2.2, dove il servizio
viene “cercato”, “agganciato” ed eseguito attraverso lo scambio di messaggi Applicativi
mediante la Busta di e-Gov.
38
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
3.4
L’Accordo di Servizio
“Quando due sistemi iniziano una relazione secondo le regole del SPCoop è
obbligatorio definire un accordo esplicito sulla erogazione/fruizione delle prestazioni
del servizio: l’Accordo di Servizio (AS).
L’AS contiene la definizione delle prestazioni e delle modalità di erogazione/fruizione
del servizio, inoltre nell’AS sono indicate le funzionalità del servizio, le interfacce di
scambio dei messaggi tra erogatore e fruitore, i requisiti di qualità di servizio
dell’erogazione/fruizione ed i requisiti di sicurezza dell’erogazione/fruizione. Viene
anche mantenuto un riferimento all’ontologia/schema concettuale che definisce la
semantica dell’informazione veicolata dal servizio in modo da rendere i servizi
scopribili da sistemi terzi.
I termini dell’AS sono consegnati in un insieme di documenti, secondo la struttura che
verrà descritta in nelle seguenti pagine. Detto insieme di documenti costituisce:
•
una specifica per l’implementazione dei sistemi erogatore e fruitore: è utilizzato
dai progettisti e dagli ambienti di sviluppo nelle fasi di implementazione dei
sistemi erogatore e fruitore;
•
un riferimento per l’esecuzione e la gestione dei sistemi erogatore e fruitore: è
utilizzato dai sistemi di gestione dell’esecuzione durante l’operatività dei
sistemi.16
La definizione di un servizio è il processo organizzativo il cui prodotto è l’Accordo di
Servizio (AS). Un AS si riferisce alla coppia <erogatore, fruitore> dei soggetti erogatori
e fruitore che andranno ad interagire: è obbligatorio che in un AS siano definite le due
16
Sistema Pubblico di Cooperazione: Accordo di Servizio, redatto dal Gruppo di Lavoro SPCoop in
CNIPA, p.11.
39
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
Amministrazioni <erogatore, fruitore>, che sono le due organizzazioni che cooperano
su SPCoop, una che eroga un particolare servizio e l’altra che ne è fruitrice.
L’AS si compone di due parti fondamentali: la parte comune, e la parte specifica; la
prima espone in maniera formale quegli aspetti che sono comuni a molte interazioni
erogatore-fruitore dello stesso tipo, la seconda invece è quella parte che definisce le
caratteristiche della particolare interazione tra le due Amministrazioni, istanziando la
particolare coppia <erogatore, fruitore> a cui il particolare AS fa riferimento.
Per esempio, la parte specifica dettaglia i livelli di servizio ed i livelli di utilizzo di una
data coppia <erogatore, fruitore> che adopera una parte comune impiegata anche da
altre coppie come base per la definizione del proprio AS.
In seguito si utilizzerà il termine derivare, quando si vorrà indicare che la parte comune
è la base per la definizione di un AS, e specializzare quando si aggiungono dettagli,
relativi ad una particolare istanza, alla parte comune; per cui considerando una parte
comune ed una parte specifica che la specializza alla coppia <erogatore, fruitore>,
l’AS<erogatore, fruitore> che ne deriva è dato dall’unione di parte comune e parte
specifica.
In caso di cooperazione tra più di due soggetti emergono gli effettivi benefici che
comporta la divisione dell’AS in parte comune e parte specifica; in queste eventualità si
ha una ripetizione di molte parti degli AS tra coppie differenti di erogatori e/o fruitori.
Qui emerge il vantaggio che si ha a rendere modulare l’AS, in modo da mantenere
costante la parte comune per un dato servizio e cambiare solamente la parte specifica al
variare della coppia <erogatore, fruitore>.
L’AS si compone poi unendo la parte comune, usata da tutte le coppie che fruiscono un
servizio dello stesso tipo, e la parte specifica relativa alla particolare coppia <erogatore,
fruitore>.
40
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
I servizi che sono disponibili su SPCoop si distinguono, dal punto di vista della portata
della loro erogazione/fruizione, in 4 classi:
•
Servizi mono-erogatore/mono-fruitore;
•
Servizi mono-erogatore/multi-fruitore;
•
Servizi multi-erogatore/mono-fruitore;
•
Servizi multi-erogatore/multi-fruitore.
Altra differenziazione che si ha tra parti dell’AS oltre a quella tra parte comune e parte
specifica, è scomposizione che si può notare tra la componente formalizzata della
specifica ed una componente non formalizzata:
•
Specifica Formalizzata.
•
Specifica Non-formalizzata.
Quello appena detto significa che le stesse informazioni sulla cooperazione che si
hanno in un AS vengono espresse sia in maniera formale, tramite opportuni linguaggi
basati su XML, che in maniera non formale, comunque seguendo regole che obbligano
a tenere una coerenza tra AS differenti.
Nella prossima pagina in Errore. L'origine riferimento non è stata trovata. sono
mostrate le due coordinate (parte comune vs. parte specifica, componente formalizzata
vs. componente non formalizzata) in cui è possibile sezionare un accordo di servizio.”
17
17
Rielaborazione delle parti interessanti del documento Sistema Pubblico di Cooperazione: Accordo di
Servizio, redatto dal Gruppo di Lavoro SPCoop in CNIPA. [6]
41
Figura 1018 : Struttura completa di un Accordo di Servizio
18
Sistema Pubblico di Cooperazione: Accordo di Servizio, redatto dal Gruppo di Lavoro SPCoop in CNIPA, p.20.
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
3.5
La Busta e-Gov
I messaggi scambiati tra Enti e PA attraverso le Porte di Dominio, sono racchiusi in una
Busta (Busta di e-Gov) costituita da un uso della struttura SOAP 1.1 con estensioni;
questa si divide logicamente in due parti: la prima che normalmente contiene
informazioni infrastrutturali e la seconda che raccoglie informazioni che dipendono dal
tipo di servizio applicativo oggetto della interazione.
Considerando che l’obiettivo è quello di preservare l’autonomia delle Amministrazioni
nella definizione del contenuto applicativo e allo stesso tempo mantenere uniformi le
informazioni necessarie alla gestione dello scambio in modalità sicura e affidabile, la
definizione della busta è stata fatta in maniera poco rigorosa, sono, infatti, state definite
esclusivamente la definizione degli elementi di carattere infrastrutturale, senza entrare
nel contenuto dei dati applicativi trasportati.
Nell’Header sono contenuti che le Porte di Dominio necessitano per implementare
funzioni di gestione del messaggio comuni ai paradigmi di cooperazione previsti quali:
affidabilità, sicurezza, logging, auditing, ecc.
Tra gli obiettivi del piano di azione di e-Gov si individua l’erogazione di servizi
integrati ai cittadini e alle imprese, con la conseguente integrazione dei i servizi di
diverse amministrazioni.
Sul piano tecnologico ciò si traduce nel definire un sistema che risponda ai seguenti
requisiti:
•
gestire gli scambi di informazioni in modo indipendente dalle applicazioni;
•
definire un’interfaccia uniforme per le interazioni tra le amministrazioni ed,
eventualmente, tra le amministrazioni ed entità esterne;
43
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
•
permettere il raggiungimento di predeterminati livelli di servizio per quanto
concerne un insieme di tematiche quali, ad esempio, affidabilità e sicurezza.19
Come è stato detto la Busta usa una struttura SOAP 1.1 con estensioni; in Figura 11 è
rappresentata questa struttura nei due casi con e senza attachments.
Figura 1120: Busta SOAP
19
Sistema Pubblico di Cooperazione: Busta di E-GOV, redatto dal Gruppo di Lavoro SPCoop in
CNIPA, p.9.
20
Sistema Pubblico di Cooperazione: Busta di E-GOV, redatto dal Gruppo di Lavoro SPCoop in
CNIPA, p.16.
44
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
La struttura generale di ciascun messaggio è suddivisa in più parti:
•
la busta (envelope) del messaggio contenente le informazioni necessarie alla
gestione del messaggio da parte del provider, nel caso specifico un provider
SOAP1.1;
o
l’header, che contiene due elementi:
ƒ
l’elemento “Intestazione” che contiene le informazioni relative al
trattamento del messaggio da parte delle Porte di Dominio in
termini di affidabilità, tracciamento, indirizzamento, ecc.
Contiene gli elementi custom della busta di e-Gov.
ƒ
l’elemento Wsse:Security, contenente un blocco conforme alle
specifiche WS-Security. Questo elemento è opzionale, può essere
presente una o più volte e può contenere più blocchi di firma. Può
essere usato per garantire la provenienza del messaggio.
o
il corpo, contenente il contenuto applicativo relativo al servizio di
business (richiesto/erogato);
•
una eventuale sezione di attachment contenente informazioni “trasportate” (il
cui contenuto rimane opaco alla cooperazione).21
Ciò che è stato appena mostrato non rappresenta la Busta ma il suo contenitore; la
Busta infatti viaggia all’interno di una struttura SOAP 1.1, qui di seguito vedremo come
è strutturata na tipica Busta di e-Gov.
21
Sistema Pubblico di Cooperazione: Busta di E-GOV, redatto dal Gruppo di Lavoro SPCoop in
CNIPA, p.16-17.
45
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
La Busta è composta da elementi che fanno parte dell’Header o del Body di una SOAP
Envelope.
L’Header è composto da elementi ed attributi che hanno la finalità di implementare i
requisiti generali di un Messaging layer, ovvero delle Porte di Dominio.
La parte più rilevante della Busta di e-Gov è l’intestazione, che costituisce un”header
element” che contiene informazioni utili per la gestione del messaggio. Come illustrato
in
Figura 12 l’elemento si suddivide a sua volta in quattro elementi:
•
Intestazione Messaggio. Contiene le informazioni relative al mittente, al
destinatario, al servizio richiesto, alle modalità dell’interazione ecc;
•
Lista Riscontri. Contiene i riscontri generati in risposta a messaggi per i quali
il mittente ha richiesto la conferma di ricezione;
•
Lista Trasmissioni. Contiene informazioni utili per il tracciamento del
messaggio
•
Lista Eccezioni. Contiene tutte le informazioni relative alle eventuali eccezioni
occorse durante il trattamento dell’elemento Intestazione del messaggio.22
Figura 1223: Intestazione
22
Sistema Pubblico di Cooperazione: Busta di E-GOV, redatto dal Gruppo di Lavoro SPCoop in
CNIPA, p.18-19.
23
Sistema Pubblico di Cooperazione: Busta di E-GOV, redatto dal Gruppo di Lavoro SPCoop in
CNIPA, p.19.
46
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
In questa notazione grafica i quattro elementi appena citati sono parti dell’elemento
intestazione, ma la bordatura continua del primo elemento rispetto ai tre successivi
indica che il primo è obbligatorio mentre gli altri sono opzionali.
Si vede ora come sono costituiti alcuni degli elementi appena mostrati.
L’elemento Intestazione Messaggio si compone degli elementi indicati nella prossima
figura (Figura 13).
Figura 1324: IntestazioneMessaggio
Il contenuto della maggior parte degli elementi è abbastanza evidente, e comunque per
maggiori chiarimenti sui campi che caratterizzano la Busta e-Gov si fa riferimento alle
specifiche CNIPA25 dove si può trovare tutto lo schema della Busta di e-Gov descritto
con dovizia di particolari.
Per lo schema della Busta di e-Gov completo si fa riferimento alla Errore. L'origine
riferimento non è stata trovata. (cfr. §Appendice 1).
24
Sistema Pubblico di Cooperazione: Busta di E-GOV, redatto dal Gruppo di Lavoro SPCoop in
CNIPA, p.19.
25
Sistema Pubblico di Cooperazione: Busta di E-GOV, redatto dal Gruppo di Lavoro SPCoop in
CNIPA, p.18-37.
47
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
Vista
la
rilevanza,
ai
fini
della
mia
ricerca,
dell’elemento
ProfiloCollaborazione qui di seguito ne esamineremo brevemente il contenuto.
Il profilo di collaborazione riferisce il tipo di interazione, normalizzando gli schemi di
interscambio di messaggi tra porte di dominio e applicazioni; questo tag può essere
utilizzato per supportare interazioni di tipo asincrono tra Porte di Dominio.
Sono possibili quattro profili di collaborazione:
•
EGOV_IT_MessaggioSingolo_OneWay: la porta delegata invia un
messaggio alla porta applicativa senza attendere alcuna risposta.
•
EGOV_IT_ServizioSincrono: la porta delegata invia la propria richiesta
applicativa ed attende quindi la risposta della porta applicativa.
•
EGOV_IT_ServizioAsincronoSimmetrico: la porta delegata invia la
propria richiesta applicativa; la risposta della porta applicativa può essere
inviata in un tempo successivo e la porta delegata non rimane quindi in attesa.
•
EGOV_IT_ServizioAsincronoAsimmetrico: la porta delegata invia
la propria richiesta applicativa senza restare in attesa; in un tempo successivo
la porta delegata richiede lo stato di esecuzione della propria richiesta alla
porta applicativa rimanendo in attesa della risposta. Se il servizio è stato
eseguito la Porta Applicativa inoltra alla Porta Delegata la risposta
applicativa, altrimenti segnala che il processamento non è stato ancora
completato e l’interrogazione sullo stato si ripete.26
26
Sistema Pubblico di Cooperazione: Busta di E-GOV, redatto dal Gruppo di Lavoro SPCoop in
CNIPA, p.22.
48
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
L’header è la parte più importante ai fini dell’interoperabilità, infatti è sull’header che
le Porte di Dominio effettuano le operazioni che permettono al sistema di interoperare.
Il Body può essere strutturato in modo diverso a seconda dei casi. Il contenuto del Body
è dipendente dal particolare servizio applicativo sia per le interazioni SOAP utilizzate
per trasportare chiamate RPC, sia per quelle utilizzate per lo scambio di documenti
XML-Based. La specifica dei diversi contenuti, pertanto, dovrà essere fornita dalle
Amministrazioni man mano che queste esporranno i propri servizi.
La Busta di e-Gov in pratica è il protocollo utilizzato per lo scambio di messaggi sul
SPCoop.
Descriveremo ora le modalità tramite cui le Porte di Dominio gestiscono le
informazioni scambiate tramite la Busta di e-Gov.
3.6
La Porta di Dominio
I Servizi Applicativi registrati sul SICA attraverso Accordi di Servizio vengono poi
erogati dalle Pubbliche Amministrazioni, locali o centrali che siano, tramite un unico
elemento logico, utilizzando il “protocollo” appena descritto.
Questo elemento prende il nome di Porta Di Dominio, essendo l’elemento che funge da
porta di ingresso, verso il dominio per le altre amministrazioni che vogliono fruire dei
servizi erogati, e da porta di uscita dal dominio per l’amministrazione interna al
dominio che vuole fruire di servizi erogati esternamente.
La Porta di Dominio di fatto è la piattaforma sulla quale vengono pubblicate le
interfacce applicative dei servizi; non è detto che i componenti software che realizzano
tali servizi effettivamente risiedano sulla stessa piattaforma. Sarà invece più frequente
che le funzioni siano realizzate su altre piattaforme e la PDD svolga semplicemente
funzione di proxy e dispatcher verso le altre piattaforme di back-end nelle quali
vengono effettivamente erogati i servizi, tramite opportuni componenti software.
49
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
I compiti delle Porte sono: interagire con i Servizi Applicativi esposti dalle singole
Amministrazioni e colloquiare tra loro secondo gli standard definiti nell’ambito
dell’SPCoop in maniera paritetica.
Per attuare tale disegno occorre che tutti gli attori (amministrazioni centrali e locali,
enti ed aziende):
•
condividano le specifiche, gli standard e le modalità di realizzazione e gestione
dei complessi elementi infrastrutturali comuni che disaccoppiano i sistemi
(eventualmente legacy) delle amministrazioni ed implementano i servizi che
abilitano la cooperazione applicativa tra sistemi;
•
si impegnino ad esporre ed utilizzare (in qualità di fruitori) servizi erogati da
terzi secondo modalità standard predefinite e consolidate tecnologie di mercato.
Le porte dovranno implementare diverse funzionalità infrastrutturali:
o funzionalità di base, tra cui la gestione della Busta e-Gov, delle
tracciature, dei diagnostici, del SOAP with Attachments e della modalità
in consegna affidabile;
o funzionalità di Sicurezza, in accordo alle raccomandazioni WSI Basic
Security Profile con la gestione della Sicurezza base SSL;
o funzionalità di Consolle di Monitoraggio, con consolle Base e consolle
Evoluta dove la consolle Base offre servizi di configurazione e gestione
delle porte in modalità testo e la consolle evoluta deve offrire, oltre alle
caratteristiche dell’ altra, la navigazione dei log in maniera grafica.
La porta è dunque un elemento logico che offre servizi Applicativi internamente ed
all’esterno del Dominio Applicativo.
50
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
Le funzionalità sopra citate fanno riferimento ai documenti CNIPA27 riguardanti il tema
della PDD.
Ogni PDD che entra a far parte del SPCoop deve essere qualificata, secondo le
caratteristiche definite nei documenti CNIPA a riguardo; ogni PDD deve essere
conforme ad adeguati livelli di servizio, sicurezza, e deve supportare tutte le
funzionalità obbligatorie ai fini di garantire interoperabilità al dominio del quale sarà
porta.
Andando un po’ più nel dettaglio di quanto accennato tra le funzionalità si può
affermare che per gestione della busta si intendono tutti quei meccanismi di
instradamento delle richieste applicative, gestione della coerenza della busta, vale a dire
che i campi abbiano valori consistenti con quello richiesto da specifiche, gestione degli
acknowledgement etc.
Per funzionalità di Sicurezza si intendono tutte quelle operazioni atte a garantire il
trasporto sicuro dei dati veicolati e la verifica dell’integrità delle Buste svolta tramite il
controllo sulla veridicità dei mittenti e delle richieste presenti nella Busta.
Queste funzionalità vengono trattate con maggiore dettaglio nelle specifiche CNIPA
che trattano di Security in SPCoop [14].
Anche la funzionalità di Consolle di Monitoraggio è molto importante e deve garantire
la possibilità di gestire i messaggi di diagnostica ed i log files. Inoltre la Consolle di
Monitoraggio deve dare la possibilità all’utente di configurare la PDD a proprio
piacimento.
La PDD non contiene logica applicativa ovvero è disaccoppiata dal servizio in modo da
poter essere distribuita ed utilizzabile in Domini di tipo differente.
Al fine di spiegare a grandi linee il funzionamento della PDD, utilizzeremo come
esempio la comunicazione che si può vedere nella Figura 14.
27
Sistema Pubblico di Cooperazione: Porta di Dominio, redatto dal Gruppo di Lavoro SPCoop in
CNIPA [11].
Sistema Pubblico di Cooperazione: Quadro Tecnico d’Insieme, redatto dal Gruppo di Lavoro SPCoop in
CNIPA, p.15-16.
51
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
Ogni Amministrazione avrà la sua PDD che svolgerà funzione di porta delegata,
mostrerà cioè al client i servizi fruibili remotamente come se fossero fruibili
localmente. Il client effettua la richiesta alla propria PDD (delegata), questa viene
intercettata da un handler delle richieste che ne formatta l’header secondo il protocollo
definito dalla Busta di e-Gov e successivamente la spedisce all’Interfaccia Applicativa
della PDD remota, cioè a quella che effettivamente eroga il servizio che il client vuole
fruire; la richiesta viene intercettata dall’handler della porta Applicativa che gestisce
l’header e richiede il servizio all’erogatore.
L’erogatore fornisce il servizio. Nel caso in cui la comunicazione richieda una risposta
alla propria PDD (tutti i casi eccetto la comunicazione One Way, o a messaggio
singolo), questa funge da porta delegata dell’erogatore, rimandando indietro la risposta
alla PDD che per l’erogatore ha funzione di porta applicativa, cioè quella del client che
aveva richiesto il servizio, che a sua volta eroga il servizio al client.
Quando la comunicazione è asincrona, le PDD devono anche erogare dei servizi di
attesa risposta e quando questa arriva, esse devono gestire il tracciamento dei messaggi;
per fare ciò si è pensato di utilizzare dei DBMS.
Porta
di
Dominio
Porta
di
Dominio
Servizio
Interfaccia Delegata
Client
Primitiva 1
Primitiva 2
Primitiva 4
Primitiva 1
Primitiva 2
Primitiva 4
Figura 14: Comunicazione tra Porte di Dominio
52
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
Tutti questi elementi saranno illustrati con maggiore dettaglio in seguito, verrà anche
esaminata più specificamente la maniera in cui sono state affrontate alcune tematiche
come la gestione dell’handler e della trasmissione asincrona.
Si è appena accennato come un Servizio Applicativo venga gestito da una PDD; il ciclo
di vita di un servizio è però ben più lungo, la parte appena spiegata è infatti solo quella
di erogazione-fruizione del servizio sul SPCoop.
Si esamina ora la gestione dell’intero ciclo di vita del servizio in maniera tale da
rendere chiaro al lettore come gli elementi che sono stati appena descritti collaborino al
fine di dare interoperabilità al sistema.
3.7
SICA: i servizi infrastrutturali per la cooperazione
applicativa
Da quanto esposto in precedenza emerge come la cooperazione ruoti intorno al concetto
di Accordo di Servizio. Come accennato nel precedente capitolo si può affermare che i
servizi infrastrutturali SICA nascono per consentire la gestione, in tutti i suoi aspetti,
dell’Accordo di Servizio, mettendo a disposizione tutte le necessarie funzioni allo
scopo.
In pratica i servizi infrastrutturali SICA sono un aggregato di differenti elementi, alcuni
di carattere documentale ed altri veri e propri componenti software.
Le caratteristiche di questi elementi, di cui si è parlato nelle pagine precedenti, veranno
approfondite in questo capitolo, spiegando più dettagliatamene le varie funzioni svolte
dai servizi infrastrutturali SICA.
Il modello di cooperazione identifica due elementi base SICA:
•
servizi di registrazione e ricerca (Servizi di Registro SICA);
53
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
•
servizi di infrastruttura a chiave pubblica (AC SICA).
L’accesso ad una occorrenza dei Servizi di Registro SICA, deve essere permessa sia ai
sistemi, sia agli utenti afferenti alle organizzazioni della comunità SPCoop, attraverso
una interfaccia utente accessibile sia agli amministratori che agli utenti che operano
sotto la responsabilità dei soggetti della comunità SPCoop, inserendo, aggiornando e
cancellando le informazioni sulle risorse di cui tali soggetti sono responsabili.
Responsabili e progettisti dei sistemi fruitori attuali e potenziali dei servizi utilizzano
l’interfaccia utente nelle fasi di analisi e progettazione, per richiedere informazioni sui
soggetti, i servizi, gli erogatori, gli accordi di servizio e gli indirizzi dei punti di
accesso.
Dal punto di vista funzionale, i Servizi di Registro SICA devono offrire le seguenti
funzionalità:
•
gestione dell’indice dei soggetti organizzativi della comunità del SPCoop;
•
gestione del catalogo degli accordi di servizio e cooperazione sottoscritti e
implementati su SPCoop;
•
gestione dell’elenco degli erogatori presenti su SPCoop;
•
gestione della rubrica degli indirizzi dei punti di accesso dei sistemi erogatori e
fruitori.28
Descrivendo più specificamente ogni singola funzionalità si vede:
L’Indice dei Soggetti Organizzativi.
Costruzione dell’indice dei soggetti organizzativi costituisce il primo stadio nella
realizzazione dei Servizi di Registro SICA. Il Comitato di gestione SPC è addetto ad
28
Sistema Pubblico di Cooperazione: Servizi di Registro, redatto dal Gruppo di Lavoro SPCoop in
CNIPA, p.8.
54
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
identificare tali soggetti organizzativi pubblici e privati, e rilascia al soggetto un codice
identificatore unico (formato URI/URN) nell’ambito di SPCoop.
Il Catalogo degli Accordi di Servizio e Cooperazione.
Ogni accordo di servizio e/o di cooperazione è costituito da un insieme di documenti29
ed è identificato tramite un codice, in formato URI/URN, univoco in ambito SPCoop.
L’accordo di servizio/cooperazione deve essere registrato nei Servizi di Registro SICA,
in cui viene effettuato un controllo di universalità del codice identificatore in ambito
SPCoop.
L’Elenco delle Occorrenze dei Servizi.
La costituzione dell’indice dei soggetti e del cataloghi degli accordi permette in seguito
la registrazione delle occorrenze di erogazione dei servizi.
La gestione della Rubrica degli Indirizzi dei Punti d’Accesso.
Ad ogni occorrenza di servizio, l’erogatore può rendere disponibili più punti per
accedere al servizio. In fase di registrazione di un punto d’accesso, viene utilizzata una
struttura che contiene come elemento principale l’indirizzo del punto di accesso e degli
eventuali punti d’accesso secondari a cui rivolgersi al verificarsi di problemi.
L’utilizzo di queste funzionalità avviene sia in fase di design che a run-time.
I progettisti dell’erogatore e del fruitore utilizzano i Servizi di Registro SICA in fase di
progettazione e realizzazione dei servizi applicativi SPCoop, con l’ obiettivo di:
•
registrare l’accordo di servizio affinché assuma valore di riferimento,
•
accedere alle informazioni necessarie allo sviluppo dei Web Service lato
erogatore e lato fruitore.
29
Sistema Pubblico di Cooperazione: Accordo di Servizio, redatto dal Gruppo di Lavoro SPCoop in
CNIPA [6].
55
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
Viene analizzato ora come i Servizi di Registro SICA sono articolati, verificando
l’organizzazione dell’erogazione dei Servizi di Registro a livello architetturale.
I Servizi di Registro SICA sono organizzati in modo distribuito attraverso
un’architettura master-slave con replicazione dell’informazione, come rappresentato in
Figura 15.
Figura 1530: Interazione tra Registro Generale e Registri Secondari
30
Sistema Pubblico di Cooperazione: Servizi di Registro, redatto dal Gruppo di Lavoro SPCoop in
CNIPA, p.14.
56
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
Questo tipo di architettura offre ai client la possibilità, in caso di interesse ad accedere a
particolari
funzionalità
di
registrazione
e
ricerca
(per
effettuare
inserimenti/aggiornamenti/cancellazioni), di fare le proprie richieste sia sul Registro
Generale sia su uno dei Registri Secondari, scegliendo, in piena libertà, in base a
requisiti di sicurezza, velocità di risposta, costi o qualsiasi altro criterio ritenuto
rilevante.
Nell’eventualità di effettuare operazioni su registri Secondari, questi assumono il ruolo
di steward (“responsabile”) per l’informazione in esame: questo significa che quando il
client voglia operare una successiva operazione di aggiornamento/cancellazione, esso
può operare o presso il Registro Generale o presso il Registro Secondario steward, e
non può più rivolgersi agli altri Registri Secondari.
I registri Secondari e quello Generale utilizzeranno poi il meccanismo di
sincronizzazione per rendere l’informazione sempre “up to date”.
Sono definiti anche gli altri servizi che verranno erogati dal SICA, quali:
•
il catalogo di schemi ed ontologie che è il componente software che offre
funzionalità per “ragionare” sulla semantica dei servizi e delle informazioni da
essi veicolati, ai fini della individuazione dei servizi migliori candidati
all’erogazione delle prestazioni richieste.
•
i Servizi di Indice dei Soggetti offrono un insieme di funzionalità necessarie a
gestire la “rubrica” degli operatori/utenti della PA. Oltre alle classiche
funzionalità di registrazione, accesso, aggiornamento, cancellazione e ricerca
delle informazioni relative agli operatori (ad es., nome, cognome, riferimenti
telefonici ed e-mail, funzioni, responsabilità, mansioni, etc.).
•
i Servizi di Sicurezza: Il modello di cooperazione prevede che, sia per i servizi
applicativi che per quelli infrastrutturali SICA, siano garantititi degli adeguati
livelli di sicurezza: ogni elemento del sistema deve essere qualificato, ovvero
deve essere verificato il superamento di determinati test che garantiscono il
soddisfacimento di alcuni requisiti minimi di sicurezza, e su tutti i messaggi
57
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
SPC: il Sistema Pubblico di Connettività e Cooperazione
Vittorio Ottaviani
_______________________________________________________________________
applicativi scambiati tra elementi devono essere assicurati opportuni requisisti
di autenticità, riservatezza, integrità, non ripudio e tracciabilità degli stessi. La
sicurezza di un sistema complesso quale SPCoop presenta molte sfaccettature,
sia di carattere architetturale che tecnologico che organizzativo, in particolare:
•
o
Aspetti Architetturali.
o
Aspetti Tecnologici
o
Aspetti Organizzativi e di Gestione della Sicurezza
i Servizi di Supporto e Controllo della Gestione: un sistema complesso quale
SPCoop, costituito da elementi distribuiti appartenenti ad organizzazioni
differenti (le Porte di Dominio che erogano/fruiscono dei servizi applicativi) e
da elementi terzi (i servizi infrastrutturali SICA), anch’essi dispiegati in alcuni
casi in maniera distribuita, richiede un adeguato supporto al Controllo ed alla
Gestione.
L’architettura di un registro sica è illustrata nelle Figura 7 (cfr. §3.3), Figura 7 e
Errore. L'origine riferimento non è stata trovata. (cfr. §Appendice 2)
58
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
4. Sviluppo di una Porta di Dominio
Oggetto di questo lavoro è lo sviluppo di una Porta Di Dominio (PDD); nei precedenti
capitoli si è spiegato cosa sia e quali siano le funzioni di questo componente del sistema
che si va a sviluppare, nel presente capitolo approfondirà l’argomento per dare
maggiore completezza di informazione.
4.1
Progettazione di una “proof of concept” di Porta di
Dominio
Per realizzare una Porta di Dominio che rispetti i requisiti sopra citati si è dovuto
considerare due opzioni: se considerare la Porta come uno Strato Protocollare, o come
un Proxy Applicativo.
•
Nel primo caso la PDD ha proprie primitive verso i propri peer ( altre porte di
dominio) e primitive di interfaccia verso lo strato superiore ( il servizio). La
porta espone un servizio di messaggistica, tipicamente una receive(),
nascondendo le primitive del servizio per veicolarle all’interno del proprio
payload.
La Porta gestisce la parte dinamica del protocollo e-Gov, ovvero la logica
associata all’Intestazione realizzando le modalità di colloquio previste dalla
Busta e-Gov e implementa tutti i requisiti richiesti in termini di affidabilità nella
consegna e requisiti di sicurezza ai vari livelli.
•
Nel caso della soluzione Proxy la porta espone le stesse primitive del servizio,
aggiunge in trasmissione e rimuove in ricezione l’Intestazione della Busta e-
59
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Gov a quella già preparata dal servizio, gestisce la parte dinamica del protocollo
e-Gov, ovvero la logica associata all’Intestazione.
La soluzione Proxy è sembrata quella che più si avvicinasse ai requisiti che la
PDD doveva rispettare ed implementare.
Si è scelto di sviluppare una PDD che avesse le caratteristiche di un Proxy Applicativo
che alla ricezione di un messaggio SOAP effettui le operazioni di sbustamento della
Busta e-Gov, lettura dei vari campi di interesse come “mittente”, ”destinatario” etc. ,
erogazione del servizio o re-invio nel caso il destinatario non sia la PDD in esame.
Dopo l’erogazione di un servizio, la porta deve imbustare nuovamente la risposta in un
Messaggio Applicativo che contenga i vari campi della Busta di e-Gov ed inviarlo alla
PDD destinataria del messaggio.
Figura 16: Porta di Dominio come Strato Protocollare
Nella soluzione Proxy la PDD ha una interfaccia Applicativa che è rivolta all’esterno
con lo scopo di erogare messaggi esternamente al Dominio ed una interfaccia Delegata
60
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
che ha la funzione di connettere i clients interni al Dominio con servizi presenti su
Domini esterni.
Praticamente la PDD si interfaccia con la risorsa che eroga il servizio tramite le
primitive (in Figura 17 primitiva 1, primitiva 2, primitiva 4) e replica le primitive
all’esterno del dominio tramite la sua interfaccia Applicativa.
Quando arriva una richiesta, la PDD la processa, effettuando tutti i controlli che sono
stai descritti nel precedente paragrafo e, in caso la richiesta sia “buona”, la sottomette
all’erogatore del servizio tramite la primitiva chiamata nel messaggio ricevuto.
Se la richiesta ha bisogno di risposta, la PDD aspetta che arrivi la risposta dal Servizio
chiamato e poi la inserisce in una Busta e-Gov e la spedisce alla PDD del Dominio che
aveva inviato la richiesta.
La PDD ha anche una interfaccia di gestione che permette di effettuare le operazioni di
monitoraggio e configurazione che sono state descritte precedentemente.
Nel caso in cui un client interno al Dominio voglia fruire un servizio dalla propria
PDD, quanto deve passare dall’interfaccia Delegata che si interfaccia con l’interfaccia
Applicativa ed effettua la richiesta come se la stessa arrivasse dall’esterno del Dominio.
Quanto appena descritto è il comportamento di una Porta sviluppata come un Proxy
Applicativo “internamente” al Dominio.
Viene mostrato come si comportano due PDD Proxy quando devono colloquiare tra
loro.
Il client effettua la propria richiesta all’ interfaccia Delegata della propria PDD, la PDD
si occupa di imbustare la richiesta alla primitiva desiderata in una Busta di eGovernment effettuando tutte le operazioni descritte precedentemente e di inviare la
richiesta sotto forma di Messaggio Applicativo all’interfaccia Applicativa della PDD
remota, cioè a quella che espone le primitive per fruire i servizi desiderati.
61
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Questa PDD effettua le operazioni descritte sopra: sbusta la richiesta, effettua i
controlli, sottomette la richiesta al server tramite la primitiva invocata dal client e, nel
caso non necessiti risposta, chiude la comunicazione; in caso contrario attende la
risposta, la imbusta nuovamente in una Busta con i dati del fruitore come “destinatario”
e la invia alla PDD del Dominio del destinatario.
La PDD del Dominio del fruitore, al momento dell’arrivo di un Messaggio Applicativo,
effettua i controlli del paragrafo precedente e, vedendo che il messaggio è una risposta
ad una precedente richiesta, individua il fruitore del servizio e gli comunica la risposta
che era stata richiesta.
Porta
di
Dominio
Porta
di
Dominio
Servizio
Interfaccia Delegata
Client
Primitiva 1
Primitiva 2
Primitiva 4
Primitiva 1
Primitiva 2
Primitiva 4
Figura 17: Porta di Dominio come Proxy Applicativo
Quando la comunicazione non ha bisogno di risposta, il tipo di colloquio è quello
rappresentato in Figura 18.
62
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Figura 1831: Comunicazione Messaggio Singolo
In questo caso la PDD del Dominio fruitore trasmette la richiesta e non attende nessuna
risposta. La connessione viene chiusa subito dopo l’invio della richiesta all’interfaccia
Applicativa della PDD erogatrice.
Quando si ha una situazione di comunicazione sincrona, lo scenario è quello
rappresentato in Figura 19.
Figura 1932: Comunicazione Sincrona
Viene inviata la richiesta di servizio all’interfaccia applicativa della PDD erogante e
viene attesa la risposta, positiva o negativa che sia, mantenendo la connessione attiva.
Nel caso di una comunicazione Asincrona, gli scambi che si verificano sono pressoché
gli stessi.
31
Sistema Pubblico di Cooperazione: Busta di E-GOV, redatto dal Gruppo di Lavoro SPCoop in
CNIPA, p.42.
32
Sistema Pubblico di Cooperazione: Busta di E-GOV, redatto dal Gruppo di Lavoro SPCoop in
CNIPA, p.43.
63
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
La differenza sta nel fatto che le risposte dai Servizi non arrivano immediatamente alle
Porte di Dominio, questo comporterebbe un dispendio di risorse estremamente oneroso
nel caso di molte richieste di Servizio visto che dovrebbero rimanere aperte N
connessioni con N uguale al numero di richieste Asincrone ancora non evase.
Per ovviare a questo problema si è pensato di chiudere la connessione dopo l’arrivo
della richiesta al servizio, per aprire un servizio in ascolto sull’interfaccia Applicativa
del Dominio del client fruitore (richiedente) che accetti connessioni da parte del
dominio erogatore (esportante) in modo che il secondo possa comunicare al primo la
risposta del servizio quando quest’ultima è disponibile.
Figura 2033: Comunicazione Asincrona Simmetrica
Questo succede nel caso di comunicazione Asincrona Simmetrica, nel caso di
comunicazione Asincrona Asimmetrica invece, dopo aver chiuso la connessione
all’avvenuto invio della richiesta
33
Sistema Pubblico di Cooperazione: Busta di E-GOV, redatto dal Gruppo di Lavoro SPCoop in
CNIPA, p.46.
64
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Figura 2134: Comunicazione Asincrona Asimmetrica
sulla Porta del Dominio esportante (erogatore), viene aperto un servizio di accesso allo
stato di processamento della richiesta di servizio; questo servizio sarà il prossimo ad
essere chiamato dalla PDD del fruitore per monitorare lo stato della propria richiesta di
servizio o ricevere la risposta del servizio stesso.
Questa ultima soluzione, è più dispendiosa a livello di traffico generato sulla rete, evita
però al fruitore l’onere di dover attivare un servizio di ricezione risposta.
4.2
Fasi della progettazione
Finora è stato visto cosa è una Porta di Dominio, in che ambito nasce la necessità di
averne una, ne sono state esaminate le funzionalità che deve possedere, è stata mostrata
la modalità di comunicazione, quali protocolli vengono utilizzati al fine di effettuare
queste comunicazioni, quali strumenti possono aiutarci ad implementare una PDD in
ambiente open source che abbia le funzionalità sopra citate.
34
Sistema Pubblico di Cooperazione: Busta di E-GOV, redatto dal Gruppo di Lavoro SPCoop in
CNIPA, p.50.
65
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
È stato visto il ruolo di questo elemento logico nell’ambito del Sistema Pubblico di
Cooperazione e ci si è resi conto dell’importanza di un elemento di questo tipo per il
funzionamento di tutto il sistema.
Al fine di costruire un elemento tanto importante per il sistema è evidente la necessità
di una fase di progettazione della PDD.
4.2.1 Definizione degli Attori
Innanzitutto in un processo di progettazione software devono essere definiti gli attori
che si interfacciano con il sistema; nel nostro sistema gli attori principali sono sembrati
essere il Dominio Applicativo, L’Amministrazione Locale o Centrale, la base di dati e
la consolle di monitoraggio.
Il Dominio Applicativo o dei servizi applicativi è formato da qualsiasi Amministrazione
che vuole cooperare. Ogni Amministrazione è responsabile dei servizi erogati sul
proprio Dominio Applicativo.
L’Amministrazione locale rappresenta ciascuna amministrazione che vuole erogare
servizi.
La base di dati è il luogo dove vengono registrate le interazioni tra amministrazioni e
tra le varie PDD.
Nel normale processo di progettazione vengono poi analizzati i casi d’uso che il sistema
si troverà a gestire in seguito.
4.2.2 Casi d’Uso
Qui di seguito c’è una possibile vista generale dei casi d’uso che regolano il sistema.
66
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Figura 22: Vista generale degli Use Case
Le Amministrazioni possono far parte di un Dominio di Collaborazione, del quale fa
parte anche il sistema di Monitoraggio; attraverso le interfacce che collegano le
amministrazioni alle PDD, le amministrazioni possono comunicare con altri domini
fruendo servizi offerti dalle interfacce applicative di Porte remote.
L’Amministrazione inoltra all’interfaccia delegata della Porta del proprio Dominio il
Messaggio Applicativo contenente i dati da trasmettere. Il messaggio contiene
indicazioni relative a: la Parte destinataria, la Parte mittente, l’identificativo del
Servizio Applicativo richiesto, oppure erogato, i parametri applicativi della richiesta
oppure i dati di risposta, e i parametri che specificano il profilo di collaborazione (es.
67
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
“Richiesta senza risposta”, “Richiesta/risposta”) e le caratteristiche di messaging
desiderate come affidabilità etc.
Figura 23: Use Case Trasmetti Messaggio
La PDD verifica la correttezza del Messaggio Applicativo e lo inserisce in un
Messaggio SPCoop ossia in una struttura SOAP rispondente alle specifiche della Busta
di e-Gov rappresentante il protocollo standard tramite il quale colloquiano le Porte in
ambito SPCoop (fase Imbustamento). Infine (fase di Invio), la PDD invia il Messaggio
SPCoop alla PDD destinataria mediante il protocollo HTTPs. La localizzazione del
servizio richiesto può essere effettuata dal Servizio Applicativo richiedente oppure
dalla PDD richiedente e può avvenire staticamente, mediante tabelle di corrispondenza,
oppure dinamicamente mediante interrogazione del servizio di registo SICA.
In ricezione, la Porta dovrà gestire il protocollo HTTPs ed effettuare la verifica formale
(parsing) del Messaggio SPCoop proveniente da una Porta di Dominio mittente (fase di
Sbustamento). Individuato quindi il Servizio Applicativo destinatario, la PDD dovrà
estrarre il Messaggio Applicativo (richiesta o risposta) presente nel body o nell’allegato
della Busta di e-Gov per consegnarlo al servizio applicativo (fase di Smistamento).
68
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
In caso di eccezioni nella fase di sbustamento, ovvero di smistamento, di Messaggi
SPCoop relativi a richieste che prevedono un messaggio di risposta (“profilo di
collaborazione” di tipo “Richiesta/risposta”) la Porta di Dominio deve inviare alla Parte
Mittente un Messaggio di Errore SPCoop.
Figura 24: Use Case Ricevi Messaggio
Nel caso in cui il Messaggio SPCoop ricevuto sia, in realtà, un Messaggio di Errore
SPCoop, la segnalazione di eccezione ivi contenuta deve essere recapitata al Servizio
Applicativo che ha originato la richiesta mediante un Messaggio di Errore Applicativo.
69
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
La correlazione tra richiesta e risposta, a livello di Porta, viene effettuata a seconda
delle
modalità
di
interazione
utilizzando
i
campi
Identificatore
e
RiferimentoMessaggio presenti nella header della Busta di e-Gov oppure le
caratteristiche di sincronismo proprie dei messaggi di request e reply del protocollo
http.
Le altre funzioni descritte all’inizio di questo capitolo riguardano sopratutto la consolle
di monitoraggio.
La Consolle di Monitoraggio interagisce con la Porta di Dominio per la gestione dei
tracciamenti e della diagnostica: Use Case Gestione Tracciamenti e Use Case Gestione
Diagnostica. L’interazione avviene attraverso Messaggi di Comando inviati alla Porta
dalla Consolle.
La Consolle può impartire alla Porta di Dominio comandi per definire la configurazione
dei parametri di persistenza delle tracce (periodo di backup, supporti da utilizzare per lo
storage ecc) oppure per richiedere l’export di un insieme selezionato di tracce,
specificando uno o più parametri di scelta (per esempio un periodo temporale, la Parte
mittente, la tipologia di messaggi, il servizio applicativo oggetto del messaggio ecc.).
70
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Figura 25: Use Case Gestione Tracciamenti
Nello Use Case si può vedere come la gestione dei tracciamenti sia eseguita attraverso
due operazioni: la gestione della persistenza dei tracciamenti e la gestione
dell’esportazione dei tracciamenti; queste sono le due operazioni che si interfacciano
con la base di dati per effettuare le operazioni che rendono persistenti i dati e che
permettono di effettuare operazioni quali statistiche o controlli sui dati stessi.
71
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Figura 26: Use Case Gestione Diagnostici
La gestione dei messaggi di diagnostica è invece il risultato delle operazioni che
gestiscono la persistenza dei diagnostici, li esportano, consumano i messaggi
diagnostici in sospeso e filtrano i messaggi diagnostici generati.
Come si può vedere dal caso d’uso, queste ultime operazioni effettuano i veri e propri
interfacciamenti con la base di dati.
I casi d’uso riguardanti la console di monitoraggio sono stati descritti solo per
completezza, non è tra gli obbiettivi di questo lavoro la realizzazione di un sistema di
monitoraggio delle PDD.
Ma in che modo i servizi appena descritti vengano effettivamente forniti ai servizi che
usano le Porte di Dominio?
72
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Nei sequence diagram seguenti è descritto come si intende sviluppare il sistema e come
i vari elementi debbano comunicare tra loro nei differenti Profili di Collaborazione.
4.2.3 Sequence Diagrams
Le prossime due figure (Figura 27 e Figura 28) si riferiscono al caso in cui il profilo di
collaborazione è di tipo “EGOV_IT_MessaggioSingoloOneWay” che indica il caso in
cui si ha una richiesta che non necessita risposta: la prima immagine (Figura 27) fa
riferimento alla parte mittente (fruitore) e la seconda (Figura 28) alla parte ricevente
(erogatore) del messaggio.
In trasmissione alla PDD arriva un Messaggio Applicativo contenente la richiesta di
servizio, la Porta innanzitutto controlla che il formato del messaggio sia valido, cioè
che effettivamente vi sia un servizio fruibile che coincide con quello richiesto nel
Messaggio Applicativo.
In caso negativo viene mandato un messaggio di errore altrimenti vengono iniziate le
operazioni di creazione del messaggio SPCoop e di imbustamento. Il messaggio viene
processato dal controlloreHandleRequest che, utilizzando i metodi delle varie classi
controllore che si possono vedere nella Figura 27, raccoglie i dati che gli servono: cioè
il valore del tempo di sistema ed i vari valori che identificano mittente, destinatario e
tutti i campi che devono essere inseriti nel messaggio. Questi valori vengono poi settati
nei rispettivi campi, chiamando la classe che si occupa di fare le operazioni sul
messaggio.
Dopo che tutte le informazioni sono state istanziate nelle varie classi che rappresentano
la Busta di e-Government, il messaggio viene serializzato35 in una stringa XML per
essere poi inviato.
All’arrivo dell’Ack http viene tracciato l’invio del messaggio nel database.
35
serializzare: l’atto di inserire i valori contenuti in una istanza di classe in una stringa di qualche tipo.
73
:
Amministrazion...
: InterfacciaAmministrazioneLocale
:
ControlloreHandleRequest
: ControlloreMarshaller
: ControlloreMessaggio
: ControllorePorta
:
ControlloreTempoDiSi...
: ControlloreTracciamenti
: Messaggio
: InterfacciaDataBase
: DataBase
ottieniServizioOneWay( )
controllaValiditàRichiesta( )
imbustaMsg( )
getTempoDiSistema( )
creaMessaggioSPC( )
setMessaggio( )
setPart( )
serializzaMsg( )
inviaMsg( )
msgInviato( )
setTraccia( )
Figura 27: Sequence diagram del caso di comunicazione a messaggio singolo (trasmissione)
setTrack( )
writeDB( )
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Nell’altra figura (Figura 28) vengono analizzate le operazioni che svolge la parte
ricevente all’arrivo di una Busta di e-Government.
Come si può vedere all’arrivo di un Messaggio la Busta di e-Government viene aperta,
vengono effettuate tutte le operazioni di controllo sulla validità della richiesta e la busta
viene deserializzata36 in una serie di classi che la rappresentano, viene controllato il
contenuto delle parti di interesse, come mittente, servizio richiesto, profili di
collaborazione etc... Questi dati indicheranno alla PDD erogatrice la maniera nella
quale si deve comportare.
Queste operazioni vengono effettuate sempre. Nel caso di una richiesta che abbia nel
campo
profiloCollaborazione
il
valore
“EGOV_IT_MessaggioSingoloOneWay” viene chiamato il servizio richiesto e
viene tracciato l’arrivo del messaggio.
Negli altri casi i comportamenti saranno più articolati vista la maggiore complessità
delle operazioni da svolgere.
36
Deserializzare: l’atto di impostare i valori di una istanza di classe con i valori contenuti in una stringa
formattata in un qualche modo.
75
: ControllorePorta
:
ControlloreHandleRequest
: ControlloreMarshaller
: ControlloreMessaggio
: Messaggio
: InterfacciaAmministrazioneLocale
:
Amministrazion...
: ControlloreTracciamenti
: InterfacciaDataBase
riceviMsg( )
sbustaMsg( )
deserializzaMsg( )
creaMessaggioSPC( )
getMessaggio( )
getPart( )
smistaMsg( )
setTraccia( )
setTrack( )
trasmettiRichiesta( )
processaRichiestaOneWay( )
Figura 28: Sequence diagram del caso di comunicazione a messaggio singolo (ricezione)
writeDB( )
: DataBase
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Nella prossima figura (Figura 29) viene esaminato il caso in cui si effettua la
trasmissione di una richiesta SPCoop con profilo di collaborazione di tipo
“EGOV_IT_ServizioSincrono”; questo profilo di collaborazione invia una
richiesta che ha bisogno di una risposta che può arrivare repentinamente.
La connessione tra le Porte non viene dunque chiusa ma la PDD fruitrice rimane in
attesa della risposta da parte del Dominio erogatore.
Quando all’interfaccia Delegata della PDD arriva un Messaggio Applicativo viene
controllata innanzitutto la validità della richiesta effettuata, se nella richiesta viene
chiamato un Servizio Applicativo di tipo richiesta/risposta Sincrona allora la PDD
inizia le operazioni di creazione del messaggio SPCoop secondo le specifiche della
Busta di e-Government.
Innanzitutto vengono raccolti i dati riguardo al tempo di sistema, al mittente, al
destinatario, e tutto quello che serve per compilare i campi della Busta, poi viene creata
una istanza di messaggio e vengono impostati i campi con i dati raccolti.
Ciò significa che viene impostato il campo profilo di collaborazione a
“EGOV_IT_ServizioSincrono” e il campo mittente con l’identificativo
dell’Amministrazione fruitrice, vengono poi impostati tutti i campi relativi al servizio
richiesto e al dominio erogante.
Il messaggio viene poi serializzato, inviato e viene effettuata la tracciatura dell’invio di
un messaggio SPCoop.
Fino a qui le operazioni effettuate sono a grandi linee le stesse del caso precedente, le
operazioni che seguono sono invece quelle che differenziano maggiormente i due casi,
infatti qui la connessione tra le due PDD non viene chiusa ma il Dominio fruitore
rimane in attesa del messaggio SPCoop di risposta che contenga i dati relativi al
servizio richiesto.
77
:
Amministrazion...
: InterfacciaAmministrazioneLocale
:
ControlloreHandleRequest
: ControlloreMarshaller
: ControlloreMessaggio
: ControllorePorta
:
ControlloreTempoDiSi...
: ControlloreTracciamenti
: Messaggio
: InterfacciaDataBase
: DataBase
ottieniServizioSyn( )
controllaValiditàRichiesta( )
imbustaMsg( )
getTempoDiSistema( )
creaMessaggioSPC( )
setMessaggio( )
setPart( )
setTraccia( )
setTrack( )
serializzaMsg( )
writeDB( )
il messaggio
viene inviato
all'altra porta
di dominio
inviaMsg( )
sbustaMsg( )
smistaMsg( )
setTraccia( )
trasmettiRisposta( )
Figura 29: Sequence diagram del caso di comunicazione sincrona (trasmissione)
setTrack( )
writeDB( )
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Spiegheremo tra poco quello che succede nel lato erogatore quando viene ricevuto un
messaggio per un servizio di tipo “EGOV_IT_ServizioSincrono”; adesso ci si
limita a dire che l’erogatore gestisce la richiesta e invia sulla connessione rimasta aperta
una Busta di e-Government contenente i dati relativi al Servizio Applicativo richiesto.
Questa busta viene aperta, il messaggio viene controllato per appurare la validità, e
viene inviata una Risposta Applicativa all’Amministrazione che aveva effettuato la
richiesta.
Fatto ciò viene tracciata l’avvenuta ricezione del messaggio richiesto nel caso fosse
tornato un errore sarebbe stato inviato all’Amministrazione e sarebbe stato tracciato
allo stesso modo della risposta.
Dal lato erogatore (Figura 30), cioè la PDD remota all’arrivo di un messaggio SPCoop
vengono effettuate le stesse operazioni che si verificano in tutti i casi: vale a dire la
Busta di e-Government viene aperta, vengono effettuate tutte le operazioni di controllo
sulla validità della richiesta e la busta viene deserializzata in una serie di classi che la
rappresentano, viene controllato il contenuto delle parti di interesse, come mittente,
servizio richiesto, profili di collaborazione etc... questi dati indicheranno alla PDD
erogatrice la maniera nella quale si deve comportare.
In questo caso il profilo di collaborazione che viene incontrato è quello di tipo
“EGOV_IT_ServizioSincrono” ciò significa che dal lato del Dominio fruitore la
PDD sta aspettando una risposta.
La ricezione della richiesta viene tracciata e viene inviata all’Amministrazione
erogatrice la richiesta di servizio, essendo un servizio di tipo sincrono la richiesta viene
evasa in tempi brevi e dunque vengono iniziate dalla PDD erogatrice le operazioni di
79
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
ricostruzione di un nuovo messaggio SPCoop da inviare in risposta alla PDD del
Dominio fruitore.
Vengono settate le varie parti che vengono settate quando viene inviato un messaggio
SPCoop, in più la PDD fa attenzione che il campo RiferimentoMessaggio abbia
lo stesso valore del campo identificativo del messaggio di richiesta.
In verità non è molto utile che questo campo abbia un valore di questo tipo, visto che la
connessione non è stata chiusa la PDD fruitrice farà riferimento sui campi del
protocollo http.
Sarà invece di fondamentale importanza che il campo RiferimentoMessaggio
abbia un valore consistente nel caso di trasmissioni asincrone dove il messaggio http
non ha nessun valore per la PDD fruitrice.
Compilati tutti i campi il messaggio viene serializzato ed inviato alla PDD del Dominio
fruitore che gestisce l’arrivo del messaggio come si è spiegato in precedenza.
Come in ogni scambio di messaggi l’invio viene tracciato sulla base di dati.
80
: ControllorePorta
:
ControlloreHandleRequest
: ControlloreMarshaller : ControlloreMessaggio
: Messaggio
: InterfacciaAmministrazioneLocale
:
Amministrazion...
: ControlloreTracciamenti
: InterfacciaDataBase
: DataBase
riceviMsg( )
sbustaMsg( )
il messaggio viene dalla
porta del fruitore
deserializzaMsg( )
creaMessaggioSPC( )
getMessaggio( )
getPart( )
smistaMsg( )
setTraccia( )
setTrack( )
writeDB( )
trasmettiRichiesta( )
processaRichiestaSyn( )
trasmettiRisposta( )
imbustaMsg( )
serializzaMsg( )
creaMessaggioSPC( )
il messaggio dirisposta viene
inviato al fruitore
setMessaggio( )
setPart( )
inviaMsg( )
setTraccia( )
msgInviato( )
Figura 30: Sequence diagram del caso di comunicazione sincrona (ricezione)
setTrack( )
writeDB( )
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Nella figura seguente (Figura 31) è rappresentato il caso in cui all’interfaccia Delegata
della PDD arrivi un Messaggio Applicativo con il valore del campo profilo di
collaborazione “EGOV_IT_ServizioAsincronoSimmetrico”, in questo caso la richiesta
ha bisogno di una risposta che però non può arrivare in poco tempo, ma necessita di un
periodo abbastanza lungo per essere evasa.
In questo caso si è scelto di chiudere la connessione tra le PDD fruitrice ed erogatrice e
fare in modo che al completamento della richiesta da parte del Servizio Applicativo,
venga inviata la risposta dalla parte erogatrice alla parte fruitrice tramite un messaggio
SPCoop che faccia riferimento al messaggio di richiesta.
In Figura 31 sono riportate le operazioni che deve compiere il sistema fruitore quando
arriva una richiesta di tipo “EGOV_IT_ServizioAsincronoSimmetrico”.
Come in tutti i casi, vengono effettuati i controlli sulla validità della Richiesta
Applicativa, e se l’esito è positivo vengono iniziate le operazioni di imbustamento:
viene dunque creata una istanza di Messaggio SPCoop che rispetti le specifiche della
Busta di e-Government, vengono raccolti tutti i dati che vanno poi inseriti nel
messaggio, vengono di seguito settati i valori dei campi interessanti, il messaggio viene
poi serializzato in una stringa XML e viene inviato alla Porta del Dominio erogatore.
Dopo aver inviato il messaggio SPCoop, l’operazione viene tracciata, la connessione tra
i due Domini viene chiusa e vengono effettuate una serie di operazioni che
differenziano il caso asimmetrico dai casi precedenti.
Viene infatti pubblicato sulla PDD del Dominio fruitore un Servizio Applicativo atto
alla ricezione di messaggi di risposta per la richiesta effettuata.
In seguito vedremo quello che accade nel dominio erogatore, per ora ci si limita a dire
che la richiesta viene evasa dal Servizio Applicativo che era stato invocato e viene
82
:
Amministrazion...
: InterfacciaAmministrazioneLocale
:
ControlloreHandleRequest
: ControlloreMarshaller
: ControlloreMessaggio : ControllorePorta
:
ControlloreTempoDiSi...
: Messaggio
: ControlloreTracciamenti
: InterfacciaDataBase
: DataBase
ottieniServSynSim( )
controllaValiditàRichiesta( )
imbustaMsg( )
getTempoDiSistema( )
creaMessaggioSPC( )
setMessaggio( )
setPart( )
setTraccia( )
setTrack( )
writeDB( )
serializzaMsg( )
inviaMsg( )
il messaggio
viene inviato
all'altra porta
di dominio
pubblicaServizioRicezione( )
sbustaMsg( )
smistaMsg( )
setTraccia( )
trasmettiRisposta( )
Figura 31: Sequence diagram del caso di comunicazione asincrona simmetrica (trasmissione)
setTrack( )
writeDB( )
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
inviata la risposta al nuovo Servizio Applicativo che è stato pubblicato sulla Porta del
Dominio erogatore.
Tornando invece a parlare di ciò che succede sul lato fruitore, si vede che quando arriva
la risposta asincrona, il messaggio viene sbustato, vengono controllati i campi di
interesse come ProfiloCollaborazione e RiferimentoMessaggio per
vedere a quale richiesta fa riferimento il messaggio di risposta.
Appurata l’appartenenza del messaggio, viene inviata la risposta applicativa
all’Amministrazione che aveva effettuato la richiesta e viene tracciata l’operazione.
Ciò che accade sul lato erogatore è riportato nella prossima figura (Figura 32).
All’evento di ricezione di un Messaggio SPCoop vengono effettuati i controlli sulla
validità del Messaggio Applicativo, poi viene creata una istanza di messaggio dentro la
quale viene deserializzato il messaggio XML ricevuto.
Vengono controllati i campi di interesse in modo che la PDD possa decidere quale
comportamento assumere, in questo caso la connessione con l’altra PDD viene
terminata, poi viene tracciato lo scambio avvenuto e viene invocato il servizio
Applicativo Asimmetrico richiesto.
Quando il servizio viene erogato, la risposta deve essere trasmessa, viene dunque
effettuata una lettura sulla base di dati per vedere quale sia il riferimento del messaggio
di richiesta in modo da poter impostare il campo RiferimentoMessaggio in
maniera consistente.
Viene dunque creata una istanza di Messaggio e vengono inseriti i vari campi, il
messaggio viene poi serializzato in una stringa XML che rispetti le specifiche della
Busta di e-Gov ed inviato al Servizio Applicativo schierato (da deploy inglese) per
ricevere questa risposta Applicativa.
84
: ControllorePorta
:
ControlloreHandleRequest
: ControlloreMarshaller
: ControlloreMessaggio
: Messaggio
: InterfacciaAmministrazioneLocale
:
Amministrazion...
: ControlloreTracciamenti
: InterfacciaDataBase
: DataBase
riceviMsg( )
sbustaMsg( )
il messaggio viene dalla
porta del fruitore
deserializzaMsg( )
creaMessaggioSPC( )
getMessaggio( )
getPart( )
smistaMsg( )
setTraccia( )
setTrack( )
trasmettiRichiesta( )
writeDB( )
processaRichiestaAsynSimm( )
l'amministrazione locale fornisce il
servizio richiesto dal fruitore
trasmettiRisposta( )
getTraccia( )
getTrack( )
readDB( )
contollaTracciatura( )
imbustaMsg( )
serializzaMsg( )
creaMessaggioSPC( )
il messaggio dirisposta viene
inviato al fruitore
setMessaggio( )
setPart( )
inviaMsg( )
setTraccia( )
setTrack( )
writeDB( )
msgInviato( )
Figura 32: Sequence diagram del caso di comunicazione asincrona simmetrica (ricezione)
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Fatto ciò l’operazione viene tracciata sul database e la connessione tra i due Domini
viene chiusa.
Sul lato fruitore, dopo il ricevimento del messaggio SPCoop, dopo l’avvenuta risposta
Applicativa, il Servizio Applicativo di ricezione delle risposte Asimmetriche viene
ritirato (da undeploy) dalla Porta.
L’ultimo profilo di collaborazione che viene definito nelle specifiche SPCoop è quello
di tipo Asincrono Asimmetrico.
Nella prossima figura (Figura 33) si può vedere come si comporta il lato fruitore di
fronte ad una richiesta per un servizio di questo tipo. A grandi linee, il comportamento
tenuto dal fruitore è lo stesso del caso Asincrono Simmetrico appena visto; infatti la
differenza tra i due casi si ha dopo l’invio della richiesta, in questo caso, inviata la
richiesta, la connessione viene sempre chiusa e viene schierato un servizio differente da
quello richiesto tra i due Domini, come succedeva nel caso precedente. Questo nuovo
Servizio Applicativo viene posto in essere sulla PDD del Dominio erogante, ed è un
servizio che serve al Dominio fruitore per avere notizie sullo stato del servizio o per
accedere alla risposta del servizio asincrono richiesto in precedenza.
Nella prossima figura (Figura 33) si può vedere nel Sequence Diagram il
comportamento della PDD sul lato fruitore all’arrivo di un Messaggio Applicativo
contenente una richiesta per un servizio di tipo Asincrono Asimmetrico.
All’arrivo della richiesta Applicativa vengono effettuate le operazioni di verifica della
validità della richiesta; viene controllato se esiste un servizio fruibile che coincide con
quello richiesto nel Messaggio Applicativo con le specifiche richieste.
86
:
:
: InterfacciaAmministrazioneLocale
Amministrazion...
ControlloreHandleRequest
: ControlloreMarshaller
: ControlloreMessaggio : ControllorePorta
:
ControlloreTempoDiSi...
: Messaggio
: ControlloreTracciamenti
: InterfacciaDataBase
: DataBase
ottieniServSynAsim( )
controllaValiditàRichiesta( )
imbustaMsg( )
getTempoDiSistema( )
creaMessaggioSPC( )
setMessaggio( )
setPart( )
setTraccia( )
setTrack( )
writeDB( )
serializzaMsg( )
il messaggio
viene inviato
all'altra porta
di dominio
inviaMsg( )
sbustaMsg( )
smistaMsg( )
setTraccia( )
trasmettiRisposta( )
Figura 33: Sequence diagram del caso di comunicazione asincrona asimmetrica (trasmissione)
setTrack( )
writeDB( )
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Nella fase successiva, vengono avviate le operazioni di imbustamento, cioè vengono
raccolti i dati che servono per compilare i campi che la Busta di e-Government utilizza
per veicolare le richieste in maniera corretta, vengono raccolti dunque i dati su tempo di
sistema, mittente, destinatario, profilo di collaborazione servizio richiesto etc.
Viene poi creata una istanza di messaggio ed il Messaggio SPCoop di richiesta inizia a
prendere forma con i vari set dei campi di interesse i cui valori erano stati raccolti in
precedenza; importante è sottolineare che il campo ProfiloCollaborazione
viene impostato con un valore “EGOV_IT_ServizioAsincronoAsimmetrico”.
Questo valore dirà poi all’erogatore come comportarsi all’arrivo della richiesta.
L’istanza di messaggio con i valori che erano stati raccolti viene poi serializzata in una
stringa XML e questa stringa viene inviata alla PDD del Dominio erogatore.
Dopo l’invio viene tracciata la comunicazione tra i due Domini Applicativi.
Esamineremo nei paragrafi seguenti quello che succede nella parte erogatrice. Per ora è
sufficiente dire che la richiesta viene inviata all’Amministrazione che eroga il Servizio
Applicativo che a sua volta mette in essere un servizio di richiesta di stato e manda in
risposta all’Amministrazione fruitrice un messaggio di acknowledgement.
Alla ricezione dell’acknowledgement la PDD fruitrice comunica l’avvenuta risposta di
Accettazione della richiesta con i dati relativi all’Amministrazione che aveva effettuato
l’invio del Messaggio Applicativo.
Quando la parte fruitrice vorrà ricevere la risposta o accedere allo stato del servizio, se
la risposta non è ancora pronta, le operazioni da svolgere sono quelle citate per il caso
di una richiesta Sincrona Simmetrica con la differenza che il servizio da contattare è
quello schierato per accedere allo stato di processamento dell’altra richiesta e che nel
campo
ProfiloCollaborazione
ci
sarà
il
valore
“EGOV_IT_ServizioAsincronoAsimmetrico”.
88
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Alla ricezione di uno stato o della effettiva risposta avverranno tutti i tracciamenti soliti
e le operazioni che si verificano in qualsiasi risposta Sincrona Simmetrica.
Sul lato erogatore invece il comportamento è leggermente più complesso di quello degli
altri casi. La prossima figura (Figura 34) illustra ciò che avviene quando ad una PDD
arriva una richiesta di tipo Asincrono Asimmetrico.
Quando ad una PDD arriva un Messaggio SPCoop, la prima cosa che succede è la
verifica di validità del messaggio.
Effettuata questa operazione, viene creata una istanza di messaggio e la stringa che è
arrivata dalla PDD remota viene deserializzata in questa istanza.
I dati della Busta di e-Gov ricevuta vengono analizzati dalla PDD erogatrice per capire
il
comportamento
da
seguire,
dunque
viene
controllato
il
campo
ProfiloCollaborazione affinché la Porta decida il comportamento da tenere.
Quando
il
valore
di
ProfiloCollaborazione
è
uguale
a
“EGOV_IT_ServizioAsincronoAsimmetrico” la PDD deve comportarsi come
segue:
innanzitutto la ricezione del messaggio deve essere tracciata con tutti i valori relativi a
mittente, destinatario, servizio richiesto e sopratutto deve essere impostato il campo
RiferimentoMessaggio, che poi servirà quando verranno gestite le richieste di
stato;
•
effettuata la tracciatura la PDD erogatrice sottomette un messaggio di richiesta
di servizio all’Amministrazione interna al Dominio che effettivamente eroga il
servizio.
89
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
In seguito a questa operazione, sulla PDD viene pubblicato il servizio di
ricezione delle richieste di stato per quel Servizio Applicativo;
•
a questo punto la prima parte della comunicazione sembra conclusa, e lo stato
del sistema presenta un servizio in ricezione di richieste di stato sulla PDD
erogatrice per la richiesta Asincrona Asimmetrica che era stata effettuata in
precedenza.
Qui inizia la seconda parte della comunicazione, nel momento in cui alla Porta del
Dominio erogatore arriva una richiesta di stato per una richiesta di tipo Asincrono
Asimmetrico; vengono innanzitutto effettuate le operazioni di verifica del Messaggio
SPCoop che arriva, poi viene creata l’istanza di messaggio sulla quale viene poi
deserializzata la stringa XML che è arrivata alla PDD. Vengono controllate le parti
relative alla tracciatura, cioè ProfiloCollaborazione, mittente, destinatario ma
sopratutto RiferimentoMessaggio, parte fondamentale con il fine di identificare
l’operazione cui fa riferimento la richiesta di stato arrivata.
Con questi dati si interroga la base di dati delle tracciature per verificare se esiste e
quale è la richiesta a cui si fa riferimento.
Se viene trovata una corrispondenza si prosegue come si vede sul sequence diagram
altrimenti viene inviato un messaggio di errore.
La tracciatura che viene ricevuta come risposta dalla base di dati, viene controllata al
fine di smistare il messaggio all’Amministrazione che si occupa di erogare il servizio al
quale si fa riferimento. Viene dunque trasmesso un Messaggio Applicativo
all’Amministrazione per richiedere lo stato del servizio precedentemente invocato.
90
: ControllorePorta
riceviMsg( )
:
ControlloreHandleRequest
: ControlloreMarshaller
: ControlloreMessaggio
: Messaggio
: InterfacciaAmministrazioneLocale
:
Amministrazion...
: ControlloreTracciamenti
: InterfacciaDataBase
sbustaMsg( )
deserializzaMsg( )
creaMessaggioSPC( )
il messaggio viene dalla
porta del fruitore
getMessaggio( )
getPart( )
smistaMsg( )
setTraccia( )
setTrack( )
trasmettiRichiesta( )
processaRichiestaAsynAsym( )
pubblicaServizioAccesso( )
l'amministrazione locale fornisce il
servizio richiesto dal fruitore
riceviMsg( )
sbustaMsg( )
writeDB( )
deserializzaMsg( )
creaMessaggioSPC( )
getMessaggio( )
getPart( )
getTraccia( )
getTrack( )
contollaTracciatura( )
readDB( )
smistaMsg( )
trasmettiRichiesta( )
processaRichiestaAsynAsym( )
trasmettiRisposta( )
imbustaMsg( )
setTraccia( )
setTrack( )
writeDB( )
serializzaMsg( )
il messaggio di risposta viene
inviato al fruitore
creaMessaggioSPC( )
setMessaggio( )
inviaMsg( )
setPart( )
setTraccia( )
setTrack( )
msgInviato( )
Figura 34: Sequence diagram del caso di comunicazione asincrona asimmetrica (ricezione)
writeDB( )
: DataBase
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Fatto ciò si eseguono le operazioni di tracciatura dell’avvenuto scambio di messaggi,
come accade in tutti gli scambi di messaggi.
La richiesta di stato viene processata dall’Amministrazione e vengono trasmessi lo stato
o la risposta del servizio alla parte fruitrice sempre tramite una Busta di e-Government
che viene costruita istanziando un messaggio, compilando le varie parti e poi
serializzando il messaggio in una stringa XML che rappresenti la risposta.
Lo scambio di messaggi viene tracciato sulla base di dati.
Nei diagrammi delle pagine precedenti si è deciso espressamente di considerare solo i
casi nei quali le PDD non si debbano trovare a gestire errori. Essendo questa una “proof
of concept” si è ritenuto ridondante gestire tutti i possibili errori che possono verificarsi
in una comunicazione tra PDD e tra PDD e Amministrazioni.
4.2.4 Architettura modulare
La Porta di Dominio è quel componente logico che si occupa di effettuare le operazioni
di gestione della Busta di e-Gov, delle tracciature, dei messaggi diagnostici, del SOAP
with Attachments e della modalità in consegna affidabile.
Inoltre la Porta di Dominio deve avere funzionalità di gestione della Security e di
Consolle di Monitoraggio, sia evoluta che di base.
Non è detto che una PDD debba contenere i Servizi Applicativi che effettivamente
vengono erogati dalle Porte, anzi molto spesso questi software che erogano servizi
saranno dislocati in siti differenti dalla Porta. Questo disaccoppiamento tra PDD e
servizi erogati rende la Porta distribuibile su sistemi ed architetture differenti, e
sopratutto permette a questo componente di essere utilizzato per erogare servizi di
qualsiasi tipo.
La PDD, infatti, spesso avrà funzione di proxy o dispatcher verso altre PDD o altre
piattaforme erogatrici presso le quali i servizi sono effettivamente realizzati.
92
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Sono previste due tipologie di servizio in base alle funzionalità implementate: Servizio
di Porta Applicativa Light e Servizio di Porta Applicativa Advanced.
Il servizio di Porta Applicativa Light implementa le seguenti caratteristiche:
•
•
Funzionalità di base
o
Gestione Busta e-gov
o
Gestione Tracciatura
o
Gestione Diagnostici
o
Gestione SOAP with Attachments
o
Gestione modalità consegna affidabile
Gestione della Sicurezza
o
•
Sicurezza di Base SSL
Consolle di Monitoraggio
o
Consolle base
Il servizio di Porta Applicativa Advanced implementa le seguenti caratteristiche
•
Funzionalità di base
o
Gestione Busta e-gov
o
Gestione Tracciatura
o
Gestione Diagnostici
o
Gestione SOAP with Attachments
o
Gestione modalità consegna affidabile
93
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
•
•
Gestione della Sicurezza
o
Sicurezza di Base SSL
o
Sicurezza avanzata Wsse:Security
Consolle di Monitoraggio
o
Consolle evoluta
Per l’erogazione di questi servizi devono essere gestite diverse casistiche che si
possono verificare nel dominio.
Nelle specifiche pubblicate dal CNIPA vengono esaminati:
•
il caso nel quale la porta deve effettuare l’acquisizione di Messaggi
Applicativi37, ricevuti dai Servizi Applicativi presenti all’interno del Dominio;
•
il caso nel quale la porta deve inoltrare un Messaggio Applicativo ad un altro
Dominio destinatario;
•
il caso in cui la Porta riceve un messaggio e dunque deve gestire i Messaggi
SPCoop38 provenienti dalle altre Porte di Dominio secondo le specifiche della
Busta di e-Gov;
•
il caso in cui la Porta deve smistare i Messaggi Applicativi ai servizi presenti
all’interno del Dominio;
37
Messaggio Applicativo: Rappresenta i dati che vengono scambiati tra un Servizio Applicativo e la Porta
di Dominio. Il messaggio deve essere costruito secondo una sintassi predefinita che dipente dagli
standard e dalle tecnologie utilizzate all’interno del Dominio (es. messaggio soap, rmi, chiamata a
procedura ecc). Il messaggio contiene oltre ai dati di interesse del servizio applicativo (Payload
Applicativo), anche i dati necessari affinchè la Porta di Dominio possa attivare le proprie funzionalità
secondo quanto richiesto del Servizio Applicativo. I Messaggi Applicativi possono contenere dati relativi
ad una richiesta, oppure ad una risposta applicativa.
38
Messaggio SPCoop: Rappresenta i dati che vengono scambiati tra le Porta di Dominio e deve essere
implementato secondo le specifiche della Busta di e-Gov. Tale messaggio contiene nella header i dati
necessari per il colloquio tra le Porte e nel body (o in allegato) il Payload Applicativo.
94
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
•
il caso in cui la PDD deve gestire i Messaggi d’Errore che arrivano e smistarli ai
Servizi Applicativi destinatari;
•
il caso nel quale la porta deve gestire (generare e sollevare) gli errori derivanti
da problemi in fase di gestione della busta stessa;
•
il caso in cui la PDD deve gestire i SOAP:FAULT (non contenuti in Messaggi
di Errore SPCoop39) generati automaticamente dal Soap Server destinatario a
seguito di richieste relative a profili di collaborazione “Richiesta/risposta”;
•
il caso in cui la Porta deve gestire i log delle operazioni effettuate;
•
il caso in cui la Porta deve gestire i Messaggi Diagnostici40 generati;
•
il caso in cui la PDD deve gestire l’allineamento al tempo di sistema.
Vengono descritte qui di seguito con maggiore dettaglio le operazioni che la PDD va ad
effettuare in ognuno di questi casi.
La seguente parte è una interpretazione personale delle specifiche CNIPA, da questa
interpretazione sono poi state tratte le conclusioni per la definizione del sistema e per
l’implementazione della “proof of concept”.
4.2.4.1
Acquisizione
Quando alla PDD arriva un Messaggio Applicativo da un servizio interno al Dominio la
Porta lo va ad acquisire. Innanzitutto deve identificare il Servizio Applicativo che ha
generato il Messaggio Applicativo, verificare la correttezza del formato del Messaggio
Applicativo ricevuto secondo la sintassi e le modalità di interazione dell’interfaccia
utilizzata, tracciare il Messaggio Applicativo ricevuto, identificare la tipologia del
messaggio ricevuto ed i relativi parametri; nel caso sia una richiesta di servizio
applicativo deve contenere la Parte richiedente, la Parte che eroga il servizio,
39
Messaggio d’errore SPCoop:
Messaggio SPCoop che presenta nel body solo l’elemento
SOAP:FAULT.
40
Messaggio Diagnostico: Messaggio che ogni Funzione della Porta di Dominio emette in
corrispondenza all’occorrenza di un evento di rilievo prestabilito. I Messaggi Diagnostici sono utili per
monitorare il comportamento delle Funzioni della Porta di Dominio.
95
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
l’identificativo del Servizio Applicativo da invocare, i dati applicativi della richiesta e il
profilo di collaborazione richiesto.
Se invece si tratta di una risposta Applicativa deve contenere la Parte che eroga il
Servizio Applicativo, la Parte che ha richiesto il servizio, l’identificativo del Servizio
Applicativo erogato, i dati applicativi della risposta, il profilo di collaborazione
richiesto.
La Porta di Dominio deve emettere un Messaggio Diagnostico che indichi la ricezione
del Messaggio Applicativo.
Se la PDD verifica un errore nel Messaggio Applicativo, o nel caso di anomalia in fase
di ricezione dello stesso, la PDD deve inviare al Servizio Applicativo mittente un
Messaggio di Errore Applicativo41; la Porta di Dominio deve emettere un Messaggio
Diagnostico che indichi l’eccezione.
4.2.4.2
Inoltro
Nel caso arrivi alla PDD un Messaggio Applicativo da inoltrare ad un Dominio esterno
la Porta deve generare un Messaggio SPCoop secondo le specifiche della Busta di eGov (Fase di Imbustamento); deve poi generare il Messaggio SPCoop da inviare al
Dominio destinatario, identificare univocamente il Messaggio SPCoop generato,
inserire nell’elemento IdentificativoParte (IdentificativoParte è una
parte del messaggio definito nella Busta di e-gov) del Mittente l’identificativo della
Parte mittente, deve poi generare il valore da assegnare all’elemento Identificatore del
Messaggio SPCoop, inserire nell’elemento OraRegistrazione l’ora di creazione
dell’header, identificare il destinatario del Messaggio SPCoop ed inserire nell’elemento
IdentificativoParte del Destinatario l’identificativo della Parte destinataria del
Messaggio SPCoop; la Porta di Dominio deve poi determinare la URI destinatario del
Messaggio SPCoop e dunque dovrebbe inserire, nell’elemento Servizio, l’identificativo
41
Messaggio di Errore Applicativo: Messaggio generato dalla Porta di Dominio (dalle Funzioni della
Porta di Dominio) in corrispondenza del verificarsi di una anomalia o di una condizione di errore.
96
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
del Servizio Applicativo riferito dal Messaggio SPCoop, e nell’elemento Azione,
l’identificativo dell’azione richiesta nell’ambito del Servizio, inoltre deve gestire il
profilo di collaborazione richiesto dall’interazione, che:
•
nel caso di interazione di tipo “Richiesta senza risposta”, oppure “Notificazione
senza
risposta”
la
PDD
deve
inserire,
nell’elemento
ProfiloCollaborazione del Messaggio SPCoop da inviare, il valore
“EGOV_IT_MessaggioSingoloOneWay”,
•
nel caso di interazione di tipo “Richiesta/risposta” sincrona, oppure
“Notificazione/risposta”
sincrona
deve
inserire,
nell’elemento
ProfiloCollaborazione del Messaggio SPCoop da inviare, il valore
“EGOV_IT_ServizioSincrono”,
•
nel caso in cui il Messaggio SPCoop contenga la “risposta”, sebbene la
correlazione a livello di protocollo di trasporto http sia automatica, la Porta di
Dominio dovrebbe inserire, nell’elemento RiferimentoMessaggio, il
contenuto dell’elemento Identificatore del Messaggio SPCoop contenente la
relativa “Richiesta” o “Notificazione”; questa operazione è utile ai fini del
tracciamento.
•
Nel caso di interazione di tipo “Richiesta/risposta” asincrona, oppure
“Notificazione/risposta” asincrona la Porta di Dominio deve inserire,
nell’elemento ProfiloCollaborazione del Messaggio SPCoop da
inviare, il valore “EGOV_IT_ServizioAsincronoSimmetrico”.
La PDD che prepara il Messaggio SPCoop contenente la “Richiesta” oppure la
“Notificazione” deve inserire, nell’attributo {servizioCorrelato} dell’elemento
ProfiloCollaborazione, l’identificativo del Servizio Applicativo preposto alla
ricezione della risposta; inoltre deve inserire, nell’attributo {servizioCorrelato}
dell’elemento ProfiloCollaborazione, il valore “SPC”.
97
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
La Porta di Dominio che prepara il Messaggio SPCoop contenente la “risposta” deve
correlare il messaggio di risposta alla relativa richiesta, inserendo l’identificatore del
Messaggio di e-Gov della relativa “Richiesta” o “Notificazione” nell’elemento
RiferimentoMessaggio del messaggio da inviare; oltre a fare ciò deve inserire,
nell’elemento ProfiloCollaborazione del messaggio da inviare, il valore
“EGOV_IT_ServizioAsincronoSimmetrico”.
La PDD deve inserire, nell’elemento Scadenza del Messaggio SPCoop, il periodo di
validità del Messaggio Applicativo sempre che sia indicato dal Servizio Applicativo;
deve anche accertarsi di inviare il Messaggio SPCoop alla Porta del Dominio della
Parte destinataria entro il periodo di validità del Messaggio Applicatico (se richiesto).
Il protocollo utilizzato da questo elemento logico deve essere l’http. Tra i compiti la
PDD deve inoltre di individuare l’URL del servizio da invocare,
indirizzare il
messaggio http alla URL del servizio, attivare le modalità di interazione con la Porta di
Dominio destinataria del Messaggio SPC secondo il profilo di collaborazione richiesto.
Nel caso di interazione di tipo “Richiesta senza risposta”, oppure “Notificazione senza
risposta”
(ProfiloCollaborazione
pari
a
“EGOV_IT_MessaggioSingoloOneWay”) la Porta di Dominio deve utilizzare lo
scambio elementare del tipo “messaggio senza risposta”, cioè la PDD inoltra il
Messaggio SPCoop alla PDD destinataria e resta in attesa della sola reply del protocollo
di trasporto http.
Nel
caso
di
interazione
“Notificazione/risposta”
di
sincrona
tipo
“Richiesta/risposta”
sincrona,
(ProfiloCollaborazione
oppure
pari
a
“EGOV_IT_ServizioSincrono”) la Porta di Dominio deve utilizzare lo scambio
elementare di tipo “messaggio/replica sincroni”, cioè la PDD che inoltra il Messaggio
SPCoop contenente la “Richiesta”, oppure la “Notificazione” deve restare in attesa
della reply del protocollo di trasporto http contenente il Messaggio SPCoop di risposta;
98
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
la PDD che inoltra il Messaggio SPCoop contenente la “risposta” deve inserire tale
messaggio nella reply del protocollo di trasporto http relativa alla richiesta.
Nel
caso
di
interazione
“Notificazione/risposta”
di
tipo
asincrona
“Richiesta/risposta”
asincrona,
(ProfiloCollaborazione
oppure
pari
a
“EGOV_IT_ServizioAsincronoSimmetrico”) la Porta di Dominio deve
utilizzare lo scambio elementare di tipo “messaggio/replica asincroni”, cioè la PDD
inoltra il Messaggio SPCoop alla Parte destinataria e resta in attesa della sola reply del
protocollo di trasporto http, la PDD deve tracciare il Messaggio SPCoop inoltrato.
La Porta di Dominio deve produrre un Messaggio Diagnostico contenente
l’identificativo del Messaggio SPCoop inoltrato, la Parte destinataria e l’esito della
trasmissione a livello HTTP.
Se la PDD non riesce ad inoltrare il Messaggio SPCoop alla Porta di Dominio
destinataria entro il periodo di validità del Messaggio Applicativo, deve allora inviare al
Servizio Applicativo mittente un Messaggio di Errore Applicativo e produrre un
opportuno Messaggio Diagnostico.
Se la PDD non riesce ad inoltrare il Messaggio SPCoop alla PDD destinataria deve
inviare al Servizio Applicativo mittente un Messaggio di Errore Applicativo e produrre
un opportuno Messaggio Diagnostico.
4.2.4.3
Ricezione
Un altro caso che può verificarsi nelle comunicazioni tra PDD è quello nel quale una
porta riceva Messaggi SPCoop provenienti dalle altre Porte di Dominio secondo le
specifiche della Busta di e-Gov: in questo caso la PDD deve tracciare la ricezione del
Messaggio SPCoop ricevuto, deve poi controllare la correttezza del messaggio stesso a
livello formale. La verifica formale non deve essere effettuata sul payload dei Servizi
Applicativi: body element e contenuto degli attachments. Se il Messaggio SPCoop
contiene un Messaggio di Errore SPCoop, la verifica deve essere effettuata anche sul
99
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
formato dell’unico elemento del Body, il SOAP:FAULT previsto dalle Specifiche della
Busta di e-Gov.
Quando viene ricevuto un Messaggio SPCoop la PDD deve produrre un Messaggio
Diagnostico che indichi la ricezione: questo dovrà contenere l’identificativo della Parte
Mittente e l’identificativo del Messaggio SPCoop ricevuto; nel caso il cui la Porta di
Dominio, durante il processamento del Messaggio SPCoop, rilevi un errore sintattico,
non deve processare ulteriormente il messaggio.
Le eccezioni sollevate dalla PDD devono essere riportate in un Messaggio Diagnostico
contenente la Parte mittente, l’identificativo del Messaggio SPCoop ricevuto e il codice
di eccezione previsti dalle specifiche della Busta di e-Gov. Se l’elemento del
ProfiloCollaborazione del Messaggio SPCoop ricevuto contiene il valore
“EGOV_IT_ServizioSincrono”
oppure
“EGOV_IT_ServizioAsincronoSimmetrico”,
l’eccezione
relativa
alla
Richiesta, oppure alla Notificazione deve essere comunicata alla Parte mittente
attraverso un Messaggio di Errore SPCoop che sostituisce il messaggio di risposta.
La PDD potrebbe effettuare dei controlli di consistenza del Messaggio SPCoop
ricevuto: per fare ciò potrebbe verificare che i valori contenuti nell’elemento
IdentificativoParte del Mittente, nell’elemento Identificatore del
messaggio
siano
ammissibili,che
il
valore
contenuto
nell’elemento
IdentificativoParte del Destinatario contenga il proprio identificativo, che il
valore contenuto nell’elemento opzionale Servizio contenga l’identificativo del servizio
applicativo riferito dal messaggio, che il valore contenuto nell’elemento opzionale
Azione contenga l’identificativo dell’operazione richiesta nell’ambito del Servizio.
In caso di anomalie, la Porta di Dominio non deve processare ulteriormente il
messaggio, ma deve emettere un Messaggio Diagnostico contenente l’identificativo
della Parte Mittente, l’identificativo del Messaggio SPCoop ricevuto e il codice (o i
codici) di eccezione come previsto nelle specifiche della Busta di e-Gov.
Se l’elemento del ProfiloCollaborazione del Messaggio SPCoop ricevuto
contiene
il
valore
“EGOV_IT_ServizioSincrono”
oppure
100
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
“EGOV_IT_ServizioAsincronoSimmetrico”,
l’eccezione
relativa
alla
Richiesta, oppure alla Notificazione deve essere comunicata alla Parte mittente
attraverso un Messaggio di Errore SPCoop che sostituisce il messaggio di risposta.
4.2.4.4
Smistamento
Un altro tipo di azione che può trovarsi a svolgere una PDD è quella di smistamento, in
cui la PDD deve inoltrare i Messaggi Applicativi ai servizi applicativi destinatari
presenti all’interno del Dominio.
Quando la Porta di Dominio deve inoltrare il Messaggio Applicativo contenuto nel
Messaggio SPCoop al Servizio Applicativo destinatario, le modalità di identificazione
del Servizio Applicativo destinatario dipendono dall’Interfaccia di integrazione
utilizzata; la PDD deve gestire il profilo di collaborazione richiesto dall’interazione.
Se l’elemento ProfiloCollaborazione del Messaggio SPCoop ricevuto contiene
il valore “EGOV_IT_MessaggioSingoloOneWay” (interazione di tipo “Richiesta
senza risposta”, oppure “Notificazione senza risposta”) la PDD deve inviare alla PDD
mittente
solo
la
reply
del
trasporto
http;
se
invece
l’elemento
ProfiloCollaborazione del Messaggio SPCoop ricevuto contiene il valore
“EGOV_IT_ServizioSincrono”
(interazione
di
tipo
“Richiesta/risposta”
sincrona, oppure “Notificazione/risposta” sincrona), la Porta di Dominio, deve adottare
lo scambio elementare di tipo “messaggio/replica sincroni”.
Se il Messaggio SPCoop ricevuto è relativo ad una “Richiesta”, oppure ad una
“Notificazione”, la Porta di Dominio deve attendere il Messaggio Applicativo di
risposta proveniente dal Servizio Applicativo indirizzato.
La Porta dovrebbe utilizzare l’identificativo del Messaggio SPCoop contenente la
“Richiesta”, oppure la “Notificazione”, per correlare il successivo Messaggio SPCoop
di “risposta”.
101
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Se l’elemento ProfiloCollaborazione del Messaggio SPCoop ricevuto contiene
il valore “EGOV_IT_ ServizioAsincronoSimmetrico” (interazione di tipo
“Richiesta/risposta” asincrona, oppure “Notificazione/risposta” asincrona), la Porta di
Dominio deve adottare lo scambio elementare di tipo “messaggio/replica asincroni” e
inviare alla PDD mittente solo la reply del trasporto http.
Se il Messaggio SPCoop ricevuto è relativo ad una “Richiesta” oppure ad una
“Notificazione”, la Porta di Dominio dovrà attendere il successivo Messaggio
Applicativo di risposta proveniente dal Servizio Applicativo indirizzato, gestire
l’identificativo del Messaggio SPCoop contenente la “Richiesta” o la “Notificazione”,
per correlare il successivo Messaggio SPCoop di “risposta”; deve poi gestire il
contenuto dell’ attributo {servizioCorrelato} del Messaggio SPCoop contenente la
“Richiesta”, oppure la “Notificazione” per indirizzare il successivo Messaggio SPCoop
di “risposta”.
In caso di errore nello smistamento, (es. il Servizio Applicativo destinatario non è
Disponibile), se l’elemento del ProfiloCollaborazione del Messaggio SPCoop
ricevuto
contiene
il
valore
“EGOV_IT_ServizioSincrono”
oppure
“EGOV_IT_ServizioAsincronoSimmetrico”, la PDD deve inviare alla Parte
mittente un
messaggio di Errore SPCoop, emettere un Messaggio Diagnostico contenente
l’identificativo della Parte Mittente, l’identificativo del Messaggio SPCoop ricevuto e
il codice di eccezione rilevato.
4.2.4.5
Smistamento degli Errori
Un’altra funzione svolta da una PDD è quella di inoltrare un Messaggio Applicativo
Errore, dopo aver ricevuto un Messaggio di Errore SPCoop, al servizio applicativo
destinatario presente all’interno del Dominio.
102
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
In questo caso la PDD deve generare il Messaggio Applicativo Errore da inoltrare al
Servizio Applicativo destinatario; le modalità di identificazione del Servizio
Applicativo destinatario dipendono dall’Interfaccia di integrazione utilizzata.
Nel Messaggio Applicativo Errore devono essere riportati gli elementi SOAP:FAULT e
ListaEccezioni (se presente) contenuti nel Messaggio SPCoop Errore ricevuto.
4.2.4.6
Gestione eccezioni
Un’altra funzionalità che deve possedere la PDD è quella di poter generare un
Messaggio SPCoop Errore nel caso di eccezioni, gestite dalla Porta, sollevate durante la
fase di sbustamento oppure durante la fase di smistamento di Messaggi SPCoop
contenenti richieste di interazioni sincrone o asincrone di tipo “Richiesta/risposta”
oppure “Notificazione/risposta”.
In questo caso la PDD deve generare un Messaggio SPCoop Errore da inviare al
Dominio destinatario secondo le specifiche della Busta di e-Gov (Fase di Imbustamento
Errore SPCoop).
Se è stato rilevato un errore nella sintassi o nella semantica del tag Intestazione
dell’Header del Messaggio SPCoop contenente la richiesta, il corrispondente elemento
Eccezione, generato secondo le Specifiche della Busta di e-Gov, deve essere inserito
nella ListaEccezioni del Messaggio SPCoop Errore da inviare; l’attributo
{contestoCodifica}
dell’elemento
Eccezione
“ErroreIntestazioneMessaggioSPCoop”;
deve
assumere
il
valore
l’attributo
{codiceEccezione} dell’elemento Eccezione deve essere un opportuno codice
scelto tra quelli riportati nelle Specifiche della Busta di e-Gov; l’attributo
{rilevanza} dell’elemento Eccezione deve assumere il valore “GRAVE”; l’attributo
{posizione} dell’elemento Eccezione deve indicare l’elemento della Intestazione
che ha generato l’errore.
103
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Se è stato rilevato un errore nella fase di processamento del Messaggio SPCoop
contenente la richiesta, la ListaEccezioni del Messaggio SPCoop Errore da
inviare non deve essere presente.
Il body del Messaggio SPCoop di Errore deve contenere solo un elemento
SOAP:FAULT, se è stato rilevato un errore nella sintassi o nella semantica del tag
Intestazione dell’Header del Messaggio SPCoop contenente la richiesta, l’elemento
faultcode deve assumere il valore “soap:Client”; l’elemento faultstring deve assumere il
valore “EGOV_IT_001 - Formato Busta non corretto”; l’elemento opzionale faultactor,
se presente, deve rispettare le specifiche SOAP 1.1; l’elemento opzionale detail non
deve essere presente.
Se è stato rilevato un errore durante il processamento del Messaggio SPCoop
contenente la richiesta, l’elemento faultcode deve assumere il valore “soap:Server”;
l’elemento faultstring deve assumere il valore “EGOV_IT_300 – Errore nel
processamento del Messaggio SPCoop”; l’elemento opzionale faultactor, se presente,
deve rispettare le specifiche SOAP 1.1; l’elemento detail deve essere presente e deve
indicare ulteriori dettagli sull’errore verificatosi.
La PDD deve identificare univocamente il Messaggio SPCoop Errore generato; deve
inserire nell’elemento IdentificativoParte del Mittente del Messaggio SPCoop
Errore
l’IdentificativoParte
presente
nell’elemento
Destinatario
del
Messaggio SPCoop ricevuto; deve generare il valore da assegnare all’elemento
Identificatore del Messaggio SPCoop Errore e infine inserire nell’elemento
OraRegistrazione del Messaggio SPCoop Errore l’ora di creazione della header.
La Porta deve inserire, nell’elemento IdentificativoParte del Destinatario del
Messaggio SPCoop Errore, l’IdentificativoParte presente nell’elemento
Mittente del Messaggio SPCoop ricevuto.
Dovrebbe inoltre inserire, nell’elemento Servizio del Messaggio SPC Errore,
l’identificativo del Servizio Applicativo riferito dal Messaggio SPC ricevuto.
La PDD dovrebbe inserire nell’elemento Azione del Messaggio SPCoop Errore,
l’identificativo
dell’azione
riferita
dal
Messaggio
SPCoop
ricevuto,
invece
104
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
nell’elemento ProfiloCollaborazione del Messaggio SPCoop Errore, deve
inserire il valore dello stesso elemento presente nel Messaggio SPCoop ricevuto.
Dovrebbe poi inserire, nell’elemento RiferimentoMessaggio del Messaggio
SPCoop Errore, il contenuto dell’elemento Identificatore del Messaggio
SPCoop ricevuto; questa operazione è utile in fase di tracciamento.
La Porta di Dominio deve inviare il Messaggio SPCoop Errore alla Porta del Dominio
della Parte destinataria (Fase di Inoltro dell’Errore SPCoop) utilizzando il protocollo di
connessione http e inserendo il Messaggio SPCoop Errore nella reply di http relativa al
Messaggio SPCoop di richiesta che ha generato l’eccezione.
La PDD deve poi tracciare il Messaggio SPCoop Errore inoltrato, produrre un
Messaggio Diagnostico contenente l’identificativo del Messaggio SPCoop inoltrato e la
Parte destinataria, e l’esito della trasmissione a livello HTTP.
Se la Porta di Dominio non riesce ad inoltrare il Messaggio SPCoop Errore alla Porta di
Dominio destinataria, deve produrre un opportuno Messaggio Diagnostico.
4.2.4.7
Gestione dei SOAP:FAULT
Un’altra funzionalità che deve possedere la PDD è la gestione dei SOAP:FAULT (non
contenuti in Messaggi di Errore SPCoop) generati automaticamente dal Soap Server
destinatario
a
seguito
di
richieste
relative
a
profili
di
collaborazione
“Richiesta/risposta”.
La correlazione tra il SOAP:FAULT ed il messaggio contenente la richiesta deve essere
effettuata utilizzando le proprietà di sincronismo dei messaggi del protocollo http.
La PDD deve produrre un Messaggio Diagnostico che indichi la ricezione del
SOAP:FAULT e deve generare il Messaggio Applicativo Errore da inoltrare al Servizio
Applicativo destinatario; le modalità di identificazione del Servizio Applicativo
destinatario dipendono dall’Interfaccia di integrazione utilizzata.
Inoltre nel Messaggio Applicativo Errore devono essere riportati gli elementi del SOAP
Fault.
105
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
4.2.4.8
Gestione dei log
Importante è anche la gestione dei log dei Messaggi SPCoop ricevuti/inviati.
La Porta deve garantire la persistenza e consentire l’export dei messaggi tracciati,
queste funzionalità devono essere gestite attraverso parametri di configurazione e
comandi inoltrati da una console di I/O.
Il comando di export può specificare i criteri di selezione delle tracce (es. il periodo
temporale, la Parte mittente, la tipologia di messaggi, il servizio applicativo oggetto del
messaggio ecc.) ed il supporto da utilizzare. Il comando per la gestione della
persistenza può modificare i parametri relativi, quali il periodo di backup, il supporto da
utilizzare per lo storage ecc.
4.2.4.9
Gestione dei messaggi diagnostici
Oltre ai log devono essere gestiti dalla PDD anche i Messaggi diagnostici generati.
Il testo dei Messaggi Diagnostici prodotti ed il relativo livello di severità deve essere
configurabile. I Messaggi Diagnostici hanno un livello di severità compreso tra 0 e 7, in
cui l’importanza di un Messaggio Diagnostico è inversamente proporzionale al livello
di severità.
La Porta deve essere dotata di una Funzione preposta alla gestione dei Messaggi
Diagnostici che garantisca la persistenza dei messaggi prodotti internamente e consenta
l’export dei messaggi diagnostici storicizzati.
I Messaggi Diagnostici devono essere inviati alla Console di Monitoring che riceve i
Messaggi Diagnostici caratterizzati da un livello di severità di default.
La Consolle di Monitoring può impostare un filtro sulle caratteristiche dei Messaggi
Diagnostici che desidera ricevere, il filtraggio può essere attivato per livello di severità,
per identificativo del produttore o per entrambi i criteri.
Le funzionalità di persistenza, di export o di filtraggio devono essere gestite attraverso
comandi ( Order Message) inviati dalla Consolle di Monitoring.
106
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
4.2.4.10 Funzionalità aggiuntive
Altre funzionalità della PDD sono quelle di allineare il tempo di sistema al riferimento
temporale di rete, di gestione della sicurezza a livello connessione (SSL, TLS), di
gestione dello smistamento a livello porta, di gestione della sicurezza a livello porta
(WS-Security).
L’architettura SPCoop prevede che esistano due tipi di porte di dominio: Porte
Applicative e Porte Delegate.
Una Porta Applicativa è quella porta che effettivamente si interfaccia con l’erogatore
del servizio Applicativo richiesto, la Porta Delegata invece è la PDD alla quale il
fruitore si rivolge per fruire il servizio Applicativo che viene erogato remotamente.
Questa divisione tra Porta Delegata e Porta Applicativa può essere solo a livello logico.
Infatti, la PDD che interfaccia un Dominio con il resto del Sistema Pubblico di
Connettività può svolgere funzioni di Porta Applicativa per i fruitori che desiderano
interfacciarsi con Servizi Applicativi erogati dal Dominio e come Porta Delegata per gli
utenti del Dominio stesso che vogliono usufruire di servizi erogati da altri domini.
Lo scopo è quello di rendere la fruizione dei servizi il più possibile trasparente in modo
tale che gli utenti possano fruire alla stessa maniera di servizi “locali” al Dominio e di
servizi “remoti”, dando all’utente l’idea che tutti i servizi risiedano sulla propria PDD.
Dopo queste spiegazioni risulteranno sicuramente più chiari i meccanismi di
cooperazione che venivano accennati nell’esempio del capitolo introduttivo.
La PDD è dunque il componente architetturale preposto alla gestione della busta e-Gov
ed alla implementazione delle funzionalità ad essa relative: verifica formale e gestione
del contenuto del campo Intestazione.
107
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
In ricezione provvede alle attività di controllo formale, sbustamento ed instradamento
delle richieste verso i servizi applicativi.
In trasmissione provvede alla formazione della busta e-Gov ed alla trasmissione verso il
destinatario.
Inoltre gestisce la sicurezza a livello di connessione SSL3 o TLS e di messaggio SOAP
(WS-Security), fornisce servizi di consolle di comando e configurazione e servizi di
gestione dei messaggi diagnostici.
Dalla rilettura delle specifiche, notando l’attinenza dell’architettura del sistema a quella
di una SOA, ed in particolare notando che la Porta di Dominio può essere vista come
l’interfaccia sulla quale vengono pubblicati i Servizi Applicativi, si è scelto di costruire
la PDD come un servizio Web Che effettui funzione di Proxy: cioè si occupi di
imbustare e sbustare richeste applicative utilizzando il protocollo definito dalla Busta di
e-Gov.
Per costruire una Porta che rispecchi le specifiche sopra citate si è notata la necessità di
costruire un sistema del tipo di Figura 35.
108
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Figura 35: Architettura della Porta di Dominio
Che sia fatto cioè di un Application Server che funga da Servlet container, da un Web
Service engine che gestisca il protocollo SOAP e permetta lo schieramento dei servizi
sull’Application Server.
Inoltre per la gestione della Busta di e-Gov nella parte che estende la busta SOAP cioè
l’header si è notata la necessità di un serializzatore di stringhe XML.
La gesione dei vari profili di collaborazione definiti dalla Busta di e-Gov (cfr. §3.5) ha
sollevato la necessità di progettare una architettura il più possibile modulare.
Nel caso della comunicazione a messaggio singolo (cfr. §4.2.3) può sembrare
ridondante l’utilizzo di molte classi per svolgere quello che può sembrare la lettura di
una stringa XML ma ognuna delle classi identificate svolge un compito fondamentale
al fine del lavoro che viene effettuato per la gestione della Busta ed negli altri profili di
collaborazione ci si rende conto di quanto sia utile rendere il software modulare per
gestire meglio delle operazioni così articolate (cfr. §4.2.3).
109
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Nelle prossime pagine vedremo gli strumenti che sono stati scelti e daremo la
motivazione delle scelte effettuate.
4.2.5 Strumenti utilizzati
Vista l’attinenza del progetto di una Porta di Dominio a sistemi di tipo SOA
(Architetture Orientate ai Servizi) è sembrata una scelta ottimale improntare lo sviluppo
della PDD come un sistema di gestione di Servizi Web.
Come già detto, i Web Services stanno prendendo largamente piede nello sviluppo di
nuove tecnologie che utilizzano la rete grazie alla loro propensione all'interoperabilità
tra diverse applicazioni software su diverse piattaforme hardware, grazie al fatto che
utilizzando standard e protocolli "open" che li rendono di facile comprensione ed
utilizzo da parte degli sviluppatori, e alla tendenza ad essere facilmente integrabili in
servizi già esistenti.
Visto l’utilizzo e lo sviluppo che stanno avendo i Web Services nel mondo
dell’information technology esistono già implementazioni di motori di gestione per i
servizi web; è stato così deciso di basare la nostra “proof of concept” su uno di essi
poiché è inutile sviluppare nuovamente prodotti gia esistenti.
La Porta di Dominio infatti può essere vista come una serie di Web Services che vanno
a gestire la Busta di e-Gov nelle varie implementazioni di connessione e di
comunicazione tra PDD.
Altra considerazione da fare è quella che la Busta di e-Gov è una estensione della busta
SOAP e dunque perché gestire tutta la Busta SOAP quando ci si può concentrare
solamente sulla parte di estensione e gestire la parte standard tramite dei tool-kits già
presenti sul “mercato” open source?
110
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
La strada che ho scelto di percorrere è questa appena descritta e gli strumenti utilizzati
per percorrerla sono i seguenti:
•
Tomcat: Application Server adatto alla gestione di JSP / Servlet Engine
•
AXIS: motore di gestione per Web Services
•
JAXB: librerie per la serializzazione e deserializzazione del protocollo XML
Si farà ora una piccola panoramica sulle funzionalità di questi strumenti al fine di dare
al lettore la possibilità di capire perché sono state effettuate tali scelte.
L’architettura del sistema che risulta dall’integrazione dei tre elementi di cui sopra
risulta quella di Figura 36.
Figura 36: Strumenti utilizzati per realizzare l’architettura della Porta di Dominio
111
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
4.2.5.1
Tomcat
Tomcat, anche noto come Jakarta Tomcat, dall'omonimo progetto in seno alla Apache
Software Foundation, è un JSP / Servlet Engine.
Oltre alle funzionalità HTTP statiche offerte da altre applicazioni simili (come lo stesso
web server Apache), Tomcat è in grado di fungere da contenitore e di eseguire le
servlet o Java Server Pages (JSP): specifiche di Sun Microsystems. Questo lo rende in
grado quindi di supportare e processare pagine web dinamiche. Spesso, per questo
motivo, Tomcat viene usato in abbinamento ad Apache, lasciando al secondo il compito
di processare le pagine statiche e occupandosi solo dei contenuti dinamici.
Tomcat è scritto interamente in Java ed è un progetto open source, rilasciato sotto
licenza Apache Software License. Esso può quindi essere eseguito su qualsiasi
architettura supporti un JVM.
Visto che si è scelto di sviluppare i Web Services di cui sarà fatta la porta in JAVA,
Tomcat sembra il server più adatto a gestire questo tipo di sviluppo.
4.2.5.2
AXIS
AXIS è un progetto che nasce in seno a Tomcat, prodotto da Apache Software
Foundation.
AXIS è un toolkit che implementa il protocollo SOAP e si è dimostrato essere una
ottima base sulla quale implementare Servizi Web in Java.
AXIS supporta molte funzionalità:
•
Supporto per SOAP 1.1. Ad esempio viene supportato il concetto degli header
mustUnderstand SOAP.
112
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
•
Supporto per la gestione di XML tramite SAX (Simple API for XML) che lo
rende più rapido di quei toolkits che utilizzano DOM (Document Object
Model).
•
Supporto per la generazione del WSDL (Web Services Description Language)
dai servizi schierati. Inoltre ha la funzionalità di generare codice Java per lo
scheletro dei Servizi da documenti scritti in WSDL tramite il tool wsdl2java.
•
Supporto per lo sviluppo di servizi come EJB (Enterprise JavaBeans)
•
Supporto ad esporre come servizi, classi Java, semplicemente spostandoli nel
“motore” e pubblicando il servizio tramite un file di deploy.
Da quanto sopra elencato si può comprendere il perché delle scelte sia, il
processamento della busta SOAP sia la gestione dei Web Services, tramite AXIS.
Grazie ad AXIS ci si può concentrare sulla logica della PDD e non pensare ad
implementare la gestione di come le porte debbano essere interfacciate tra loro,
evitando tutti i problemi che potrebbero sorgere andandosi a scontrare con i vari
protocolli di rete di cui fa parte il protocollo SOAP.
Inoltre, in una visione futura, la funzionalità di AXIS di generare il WSDL direttamente
dal Web Service che è stato schierato sul server, potrebbe facilitare infinitamente il
lavoro di sviluppo dell’Accordo di Servizio e allo stesso tempo renderebbe
estremamente più semplice lo sviluppo delle applicazioni Web Server per
l’implementazione della PDD utilizzando il tool wsdl2java.
Anche le chiamate ai Web Services saranno più semplici attraverso l’utilizzo di AXIS,
infatti, è possibile effettuare chiamate ai Servizi Web tramite semplici chiamate a
classi.
113
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
4.2.5.3
JAXB
JAXB, acronimo di Java Architecture for XML Binding, rappresenta una maniera facile
di collegare uno “Schema” XML con una rappresentazione in codice Java. Grazie a
JAXB è facile utilizzare dati schematizzati in XML in applicazioni basate su codice
Java semplicemente utilizzando i dati come se fossero in classi Java.
In pratica JAXB semplifica la creazione e la manutenzione di applicazioni Java che
utilizzano XML.
JAXB fornisce un compilatore ed un framework a runtime per supportare la mappatura
bi-direzionale tra documenti XML ed oggetti Java. Il compilatore traduce gli Schema
XML in una o più classi Java in modo da evitare allo sviluppatore di fare classi
complesse che facciano il parsing e di concentrare la propria attenzione sulla vera e
propria logica del software che va a sviluppare.
Le classi generate tramite lo Schema ed il framework di collegamento a runtime
permettono di fare validazione sugli Schema XML che vengono passati al sistema.
Questo rende possibile che solo messaggi XML validi e senza errori possano essere
accettati dal sistema.
Ci sono diverse implementazioni di JAXB; tra tutte la scelta è ricaduta su JAXME che
è una implementazione open source che ha le stesse funzionalità previste dalle
specifiche di JAXB per il collegamento tra Java e XML. inoltre le classi generate
tramite JAXME possono:
•
salvare i Java bean in un database, preferibilmente database XML ma anche in
database relazionali come MySql;
•
fare query sui database per estrarre le istanze dei bean.
114
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
In poche parole semplicemente facendo uno Schema e dandolo in pasto al compilatore
JAXME.
Figura 37: Schema di funzionamento di JAXME
Automaticamente vengono generate le classi che implementano il completo workflow
di una applicazione Web.
115
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Figura 38: Schema di funzionamento del processo di serializzazione/deserializzazione
4.2.6 Realizzazione della libreria Busta di e-Gov
Molte delle operazioni che sono state descritte sopra possono essere effettuate
sfruttando gli strumenti elencati precedentemente.
Nello specifico è stato scelto Tomcat come Application Server in maniera da poter
utilizzare il tool-kit AXIS, che ci permette di operare in maniera del tutto trasparente a
tutta l’architettura di connessione ed ai vari protocolli di rete che permettono ai
messaggi di viaggiare sul web come http, smtp, tcp, udp e tutti gli altri protocolli
utilizzati a basso livello nell’architettura del Sistema Pubblico di Connettività.
AXIS ci permette di operare in maniera semplificata anche sul protocollo SOAP,
protocollo che permette la comunicazione nelle architetture di rete orientate ai servizi
(SOA).
Inoltre grazie all’utilizzo del tool-kit AXIS si può avere una gestione semplificata
anche dell’erogazione dei servizi web sul nostro Application Server, basterà infatti
116
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
effettuare lo schieramento ed il Server si occuperà della pubblicazione delle nostre
classi Java come servizi di tipo Web.
Questa funzionalità ci ha permesso di occuparci solamente della logica Applicativa
della Porta di Dominio, senza dover pensare a come i servizi vengano pubblicati sulla
rete.
L’altra facilitazione che è stata trovata per implementare una “proof of concept” di
Porta di Dominio in open source sono le librerie di serializzazione (marshalling) e
deserializzazione (unmarshalling) che ci vengono offerte dal framework JAXME;
infatti grazie a queste librerie è possibile, con un semplice comand, fare la
serializzazione da una classe Java ad una stringa XML e viceversa in maniera del tutto
trasparente che toglie allo sviluppatore l’onere di pensare alle operazioni di parsing di
stringhe XML.
Per l’utilizzazione di JAXME è necessario creare una architettura di classi che
rappresenti la struttura del messaggio XML che si va a deserializzare o a serializzare.
L’implementazione di questa struttura può avvenire sia in maniera manuale, cioè
scrivendo tutte le classi, le interfacce ed i metodi a mano sia utilizzando dei tool che
generano codice Java a partire da files XML.
Questi tool normalmente non possono generare classi che effettuano operazioni troppo
complesse, ma nel nostro caso le classi devono contenere solo metodi che svolgono
delle operazioni di “set” e “get” cioè impostare e leggere i valori di alcuni campi di
nostro interesse.
Esempi
di
questi
campi
possono
essere
ProfiloCollaborazione
o
RiferimentoMessaggio, i due campi che servono per vedere come la PDD si
deve comportare di fronte ad una richiesta.
Considerate le caratteristiche delle classi da implementare, si è scelto di utilizzare tool
fornito da JAXME.
117
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Si tratta di del software ANT42 che utilizza la generazione effettuata tramite ant tasks.
ANT utilizza un file di configurazione che deve avere il nome di build.xml dove
vengono definite le librerie che devono generare il codice, il file XML che deve essere
preso come Schema per la generazione delle classi, che poi rappresenta lo Schema del
file XML che verrà deseralizzato nelle classi e serializzato dalle classi.
Qui di seguito è mostrato il file di build appena descritto.
<project default= "taskdef">
<target name="taskdef">
<path id="generate.class.path">
<pathelement location="C:/javaDevelop/lib/jaxme/jaxme2-0.5.1.jar"/>
<pathelement location="C:/javaDevelop/lib/jaxme/jaxmejs-0.5.1.jar"/>
<pathelement location="C:/javaDevelop/lib/jaxme/jaxmexs-0.5.1.jar"/>
<pathelement location="C:/javaDevelop/lib/jaxme/jaxmeapi-0.5.1.jar"/>
</path>
<taskdef name="xjc"
classname="org.apache.ws.jaxme.generator.XJCTask"
classpathref="generate.class.path"/>
<xjc
schema=" bustaEGov.xsd"
target="src"
extension="true">
<produces includes="*.java"/>
</xjc>
</target>
</project>
Il tag <target> identifica il task che deve essere svolto, che corrisponde al target
impostato come default per il progetto, come si può vedere all’interno del tag
<project>, successivamente si vedono tra i tags <path> la definizione delle classi
che servono per la generazione delle classi Java.
Nella sezione <taskdef> viene definito il nome del task da eseguire e le classi
utilizzate per generare le classi.
42
http://ant.apache.org/projects.html
118
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Infine viene definito il tag relativo al task che si va ad eseguire per generare codice, in
questo caso il nome del task è stato definito come xjc e dunque il tag nel quale si fa
riferimento al task si chiamerà <xjc>; nella definizione del task viene indicata la
sorgente dello Schema da seguire nella generazione (bustaEGov.xsd) e la directory
da utilizzare per mettere le classi generate (src).
Si lancia dunque il generatore di classi ANT che genera le classi secondo quello che
viene indicato nel file il cui path è inserito nel campo schema della sezione riguardante
il task.
<?xml version="1.0"?>
il file è composto da diverse sezioni; innanzitutto c’è la parte che dichiara che si tratta
di un file che segue uno schema xml
<xsd:schema targetNamespace=http://www.cnipa.it/schemas/2003/eGovIT/Busta1_0/
xmlns:eGov_IT=http://www.cnipa.it/schemas/2003/eGovIT/Busta1_0/
xmlns=http://www.cnipa.it/schemas/2003/eGovIT/Busta1_0/
xmlns:xsd=http://www.w3.org/2001/XMLSchema
xmlns:SOAP_ENV=http://schemas.xmlsoap.org/soap/envelope/
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xsd:import namespace=http://schemas.xmlsoap.org/soap/envelope/
schemaLocation="./envelopeMustUnderstandActorDef-.xsd"/>
successivamente c’è una sezione nella quale vengono effettuate le dichiarazioni di
namespaces ed importati namespaces esterni e schema esterni.
<xsd:element name="Azione" type="xsd:string"/>
<xsd:element name="Collaborazione" type="IdentificatoreType"/>
Successivamente vengono definiti gli altri elementi, che possono essere elementi
semplici (vedi sopra nel caso dell’elemento Azione), o possono essere elementi che
119
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
sono fatti di altri elementi la cui struttura viene definita in questo stesso file come
succede per il caso di Collaborazione che è fatto del tipo di dato
IdentificatoreType che viene definito in questo stesso file come tipo di dato
semplice come si può vedere qui di seguito.
<xsd:simpleType name="IdentificatoreType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[\w]+_[\w]+_\d{7}_\d{4}\-\d{2}\-\d{2}_\d{2}:\d{2}"/>
</xsd:restriction>
</xsd:simpleType>
elementi di tipo simpleType possono essere anche più complessi come
strutturazione del tipo di dato IdentificatoreType si veda per esempio
codiceEccezioneType qui di seguito che può assumere uno dei valori
dell’enumerazione. Per brevità non viene mostrato tutto il tipo di dato ma solo alcuni
elementi della enumerazione
<xsd:simpleType name="codiceEccezioneType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="EGOV_IT_001">
<xsd:annotation>
<xsd:appinfo>
Formato Busta non corretto
</xsd:appinfo>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="EGOV_IT_002">
<xsd:annotation>
<xsd:appinfo>
Formato Intestazione non corretto
</xsd:appinfo>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="EGOV_IT_003">
<xsd:annotation>
<xsd:appinfo>
Formato Corpo non corretto
</xsd:appinfo>
</xsd:annotation>
120
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
</xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
Altri elementi possono essere costituiti da tipi di dato complessi, cioè tipi di dato fatti di
altri tipi di dato semplici o complessi.
A titolo di esempio si può vedere quello che appare nel file xsd quando si vuole che
ANT generi classi che gestiscono tipi di dato complessi:
<xsd:element name="Eccezione">
<xsd:complexType>
<xsd:attribute name="contestoCodifica"
type="xsd:string"
use="required"/>
<xsd:attribute name="codiceEccezione"
type="codiceEccezioneType"
use="required"/>
<xsd:attribute name="rilevanza" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="INFO"/>
<xsd:enumeration value="LIEVE"/>
<xsd:enumeration value="GRAVE"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="posizione"
type="xsd:string"
use="required"/>
</xsd:complexType>
</xsd:element>
Si vede la definizione di alcuni campi di cui si è ampiamente parlato in precedenza e
che ci saranno utili al fine di spiegare come sono stare implementate alcune funzionalità
in futuro.
Per esempio la classe IntestazioneMessaggio verrà creata seguendo questo
schema
121
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
<xsd:element name="IntestazioneMessaggio">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="Mittente"/>
<xsd:element ref="Destinatario"/>
<xsd:element ref="ProfiloCollaborazione" minOccurs="0"/>
<xsd:element ref="Collaborazione" minOccurs="0"/>
<xsd:element ref="Servizio" minOccurs="0"/>
<xsd:element ref="Azione" minOccurs="0"/>
<xsd:element ref="Messaggio"/>
<xsd:element ref="ProfiloTrasmissione" minOccurs="0"/>
<xsd:element ref="Sequenza" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
dove la classe Messaggio sarà costruita con elementi di questo tipo.
<xsd:element name="Messaggio">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="Identificatore"/>
<xsd:element ref="OraRegistrazione"/>
<xsd:element ref="RiferimentoMessaggio" minOccurs="0"/>
<xsd:element ref="Scadenza" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
La classe ProfiloCollaborazione di cui si è gia parlato ampiamente prima sarà
composta
come
un
tipo
complesso
costituito
da
tipi
semplici
come
ProfiloCollaborazioneBaseType, che è un tipo che accetta solamente valori
che siano consistenti con quello riportato nelle specifiche SPCoop
<xsd:simpleType name="ProfiloCollaborazioneBaseType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="EGOV_IT_MessaggioSingoloOneWay"/>
<xsd:enumeration value="EGOV_IT_ServizioSincrono"/>
<xsd:enumeration value="EGOV_IT_ServizioAsincronoSimmetrico"/>
<xsd:enumeration value="EGOV_IT_ServizioAsincronoAsimmetrico"/>
122
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="ProfiloCollaborazione">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="ProfiloCollaborazioneBaseType">
<xsd:attribute name="servizioCorrelato"
type="xsd:string"
use="optional"/>
<xsd:attribute name="tipo"
use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration
value="URL"/>
<xsd:enumeration
value="WSDL"/>
<xsd:enumeration
value="LDAP"/>
<xsd:enumeration
value="UDDI"/>
<xsd:enumeration
value="ebXMLRegistry"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
In questa sezione si è cercato di spiegare in modo sintetico le logiche secondo le quali
vengono generate le classi. In appendice verrà riportato il listato completo del file
bustaEGov.xsd nel caso in cui il lettore voglia approfondire l’argomento.
È mostrato ciò che accade dopo il lancio del programma ANT.
A titolo esemplificativo sono mostrate le classi generate per alcuni degli elementi che
analizzati fino ad ora; considerata l’attenzione che è stata posta sulla classe
ProfiloCollaborazione sembra opportuno continuare a mostrare questa classe,
essendo più importante la logica che effettivamente il codice generato.
123
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
La classe generata risulta essere come mostrato qui di seguito:
Per quanto riguarda la sola classe ProfiloCollaborazione il generatore ci da in
output diversi files Java:
una
interfaccia
che
estende
l’interfaccia
ProfiloCollaborazioneType
ereditando da quest’ultima i vari metodi set,
una classe che implementa l’interfaccia di cui sopra estendendo l’implementazione
dell’interfaccia
ProfiloCollaborazioneType,
cioè
ProfiloCollaborazioneTypeImpl.
Osservando solo questi due file sembra che il generatore non abbia creato nulla,
essendoci solo dei files con all’interno delle definizioni di classi che dichiarano di
estendere altre classi ma in verità non fanno quasi nulla.
Qui sotto viene presentata l’interfaccia:
package it.cnipa.www.schemas._003.egovit.busta1_0;
public interface ProfiloCollaborazione extends javax.xml.bind.Element ,
it.cnipa.www.schemas._003.egovit.busta1_0.ProfiloCollaborazioneType {
}
e qui l’implementazione dell’interfaccia:
package it.cnipa.www.schemas._003.egovit.busta1_0.impl;
public class ProfiloCollaborazioneImpl
extends it.cnipa.www.schemas._003.egovit.busta1_0.impl.ProfiloCollaborazioneTypeImpl
implements it.cnipa.www.schemas._003.egovit.busta1_0.ProfiloCollaborazione ,
org.apache.ws.jaxme.JMElement
{
124
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
private final static javax.xml.namespace.QName __qName = new
javax.xml.namespace.QName("http://www.cnipa.it/schemas/2003/eGovIT/Busta1_0/",
"ProfiloCollaborazione", "eGov_IT");
public javax.xml.namespace.QName getQName() {
return __qName;
}
}
Guardando invece i files che vengono estesi, si può valutare l’utilità del lavoro svolto
dal
tool
utilizzato.
Qui
di
seguito
è
presentata
l’interfaccia
ProfiloCollaborazioneType:
public interface ProfiloCollaborazioneType {
public java.lang.String getServizioCorrelato();
public void setServizioCorrelato(java.lang.String pServizioCorrelato);
public java.lang.String getTipo();
public void setTipo(java.lang.String pTipo);
public java.lang.String getValue();
public void setValue(java.lang.String pValue);
}
qui si possono vedere i metodi set e get per impostare i valori dei vari campi del profilo
di collaborazione e per accedervi.
Inoltre qui di seguito, viene descritta l’implementazione dell’interfaccia appena vista
package it.cnipa.www.schemas._003.egovit.busta1_0.impl;
public class ProfiloCollaborazioneTypeImpl
implements it.cnipa.www.schemas._003.egovit.busta1_0.ProfiloCollaborazioneType {
private java.lang.String _servizioCorrelato;
125
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
private java.lang.String _tipo;
private java.lang.String _value;
public java.lang.String getServizioCorrelato() {
return _servizioCorrelato;
}
public void setServizioCorrelato(java.lang.String pServizioCorrelato) {
_servizioCorrelato = pServizioCorrelato;
}
public java.lang.String getTipo() {
return _tipo;
}
public void setTipo(java.lang.String pTipo) {
_tipo = pTipo;
}
public java.lang.String getValue() {
return _value;
}
public void setValue(java.lang.String pValue) {
_value = pValue;
}
}
in cui sono presenti i tre campi che caratterizzano il tipo ProfiloCollaborazione,
_servizioCorrelato, _tipo e _value e tutte le implementazioni dei metodi set e
get visti nell’interfaccia
package it.cnipa.www.schemas._003.egovit.busta1_0.impl;
public class ProfiloCollaborazioneTypeDriver
implements org.apache.ws.jaxme.impl.JMSAXDriver {
public org.xml.sax.helpers.AttributesImpl
getAttributes(org.apache.ws.jaxme.impl.JMSAXDriverController pController,
java.lang.Object pObject) throws org.xml.sax.SAXException {
126
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
org.xml.sax.helpers.AttributesImpl _1 = new org.xml.sax.helpers.AttributesImpl();
it.cnipa.www.schemas._003.egovit.busta1_0.ProfiloCollaborazioneType _2 =
(it.cnipa.www.schemas._003.egovit.busta1_0.ProfiloCollaborazioneType) pObject;
java.lang.String _3 = _2.getServizioCorrelato();
if (_3 != null) {
_1.addAttribute("", "servizioCorrelato", pController.getAttrQName(this, "",
"servizioCorrelato"), "CDATA", _2.getServizioCorrelato());
}
java.lang.String _4 = _2.getTipo();
if (_4 != null) {
_1.addAttribute("", "tipo", pController.getAttrQName(this, "", "tipo"), "CDATA",
_2.getTipo());
}
return _1;
}
public java.lang.String getPreferredPrefix(java.lang.String pURI) {
return null;
}
public void marshalChilds(org.apache.ws.jaxme.impl.JMSAXDriverController pController,
org.xml.sax.ContentHandler pHandler, java.lang.Object pObject) throws
org.xml.sax.SAXException {
it.cnipa.www.schemas._003.egovit.busta1_0.ProfiloCollaborazioneType _1 =
(it.cnipa.www.schemas._003.egovit.busta1_0.ProfiloCollaborazioneType) pObject;
java.lang.String _2 = _1.getValue();
if (_2 != null
&&
_2.length() > 0) {
char[] _3 = _2.toCharArray();
pHandler.characters(_3, 0, _3.length);
}
}
}
inoltre vengono create anche una classe Driver ed una classe Handler per gestire le
operazioni di serializzazione e deserializzazione che avverranno poi sulle istanze di
queste classi. Qui di seguito è mostrato quello che viene creato quando viene fatto
girare il tool ANT sui files mostrati prima:
package it.cnipa.www.schemas._003.egovit.busta1_0.impl;
127
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
public class ProfiloCollaborazioneTypeHandler extends
org.apache.ws.jaxme.impl.JMSAXElementParser {
public void addAttribute(java.lang.String pURI, java.lang.String pLocalName,
java.lang.String pValue) throws org.xml.sax.SAXException {
if (pURI == null) {
pURI = "";
}
it.cnipa.www.schemas._003.egovit.busta1_0.ProfiloCollaborazioneType _1 =
(it.cnipa.www.schemas._003.egovit.busta1_0.ProfiloCollaborazioneType) result;
if ("".equals(pURI)) {
if ("servizioCorrelato".equals(pLocalName)) {
_1.setServizioCorrelato((java.lang.String) pValue);
return;
} else if ("tipo".equals(pLocalName)) {
_1.setTipo((java.lang.String) pValue);
return;
}
}
super.addAttribute(pURI, pLocalName, pValue);
}
public boolean startElement(java.lang.String pNamespaceURI, java.lang.String
pLocalName, java.lang.String pQName, org.xml.sax.Attributes pAttr) throws
org.xml.sax.SAXException {
return false;
}
public void endElement(java.lang.String pNamespaceURI, java.lang.String pLocalName,
java.lang.String pQName, java.lang.Object pResult) throws org.xml.sax.SAXException {
it.cnipa.www.schemas._003.egovit.busta1_0.ProfiloCollaborazioneType _1 =
(it.cnipa.www.schemas._003.egovit.busta1_0.ProfiloCollaborazioneType) result;
_1.setValue((java.lang.String) pResult);
}
public boolean isFinished() {
return true;
}
public boolean isEmpty() {
return false;
}
public boolean isAtomic() {
return true;
}
128
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
}
Le classi generate rappresentano totalmente la struttura della Busta di e-Government
versione 1.0; ultime specifiche in vigore al momento della scrittura di questo testo.
Questa rappresentazione dello schema XML che regola la Busta rende possibile la
serializzazione (Marshalling) e la deserializzazione (Unmarshalling) delle stringhe
XML che arrivano alla PDD come richieste a servizi web.
Il fatto di deserializzare la stinga XML dentro una struttura a classe semplifica tutto il
lavoro di gestione dei valori, infatti, avendo i valori dentro una struttura a classi, viene
permesso l’accesso in lettura tramite i metodi get ed in scrittura tramite i metodi set che
si è visto prima per il caso particolare ProfiloCollaborazione ma che sono poi
metodi applicabili su tutte le classi create dell’architettura create.
Anche il sistema ad interfacce ed implementazioni è estremamente potente. Rende
infatti possibile di cambiare il contenuto delle implementazioni, aggiungendo
funzionalità, modificando funzionalità esistenti o eseguendo qualsiasi operazione che si
desideri su queste classi senza portare conseguenze alle interfacce che continuano a
fornire come interfaccia per il programma i soli metodi che veramente gli necessitano,
vale a dire get e set.
Avendo scelto di generare automaticamente le classi, ci si è potuti concentrare sulla
logica applicativa vera e propria della PDD senza dover pensare ad implementare
funzionalità poco interessanti ma molto impegnative da stilare.
Valutata l’ampiezza del progetto, è stato stabilito di realizzare solamente parte delle
modalità secondo le quali le PDD comunicano.
129
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
In questa “proof of concepts“ sono state dunque realizzate solamente le modalità di
comunicazione di tipo a messaggio singolo ed a servizio sincrono.
Si vede qui di seguito come sono state implementati questi profili e come
effettivamente sia provato che i concetti possono essere applicati per lo sviluppo di un
progetto di più ampio respiro che includa tutti i profili di comunicazione e che possa
essere una implementazione di riferimento per i “vendors” che andranno poi a
sviluppare gli elementi del Sistema Pubblico di Cooperazione.
In questo lavoro è stata analizzata anche l’implementazione degli altri profili di
collaborazione, non c’è stato però modo di implementare le classi che avrebbero
realizzato la comunicazione asincrona.
La PDD viene implementata come un qualsiasi Servizio Web sull’application server del
Dominio; ogni Amministrazione per fruire di servizi, siano essi interni o esterni al
dominio, deve inviare richieste alla PDD del proprio Dominio che si occuperà poi di
effettuare la vera e propria comunicazione tra Domini passando per le varie PDD.
4.3
Profili di comunicazione e collaborazione
Il SPCoop definisce quattro possibili profili di collaborazione, come spiegato nella
sezione che descrive la struttura di una Busta di e-Gov (cfr. §3.5).
Qui di seguito viene spiegato come sono stati implementati i profili di collaborazione
nella realizzazione di questa “proof of concept”.
4.3.1 Messaggio singolo
La gestione della comunicazione a messaggio singolo è la più semplice di quelle
presenti nel progetto del SPCoop; infatti alla PDD arriva un Messaggio Applicativo che
130
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
contiene una richiesta per un servizio che svolge una operazione della quale alla parte
fruitrice non interessa il risultato.
Nel caso reale l’operazione potrebbe essere quella che si trova a fare una
Amministrazione Locale come un Comune che alla morte di un residente debba
comunicare alla Motorizzazione Civile l’annullamento della patente di guida del
defunto.
Questo è un tipico caso nel quale all’Amministrazione Comunale non interessa il
risultato dell’operazione, ma è importante solo che la richiesta sia arrivata a
destinazione in modo da essere gestita poi internamente all’Amministrazione
Motorizzazione.
Le operazioni che la PDD deve svolgere sono quelle viste nella parte di progettazione
precedente, è analizzato come sono state realizzate, evidenziando le parti salienti sul
codice Java.
La PDD deve gestire una Busta di e-Government di questo tipo:
<SOAP_ENV:Header xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<eGov_IT:Intestazione xmlns="http://www.cnipa.it/schemas/2003/eGovIT/Busta1_0/"
SOAP_ENV:actor="http://www.cnipa.it/eGov_it/portadominio" SOAP_ENV:mustUnderstand="1">
<eGov_IT:IntestazioneMessaggio>
<eGov_IT:Mittente>
<eGov_IT:IdentificativoParte tipo="CodicePA">ParteA</eGov_IT:IdentificativoParte>
</eGov_IT:Mittente>
<eGov_IT:Destinatario>
<eGov_IT:IdentificativoParte tipo="CodicePA">ParteB</eGov_IT:IdentificativoParte>
</eGov_IT:Destinatario>
<eGov_IT:ProfiloCollaborazione>
EGOV_IT_MessaggioSingoloOneWay
</eGov_IT:ProfiloCollaborazione>
<eGov_IT:Collaborazione>
ParteA_ANGPD_0000630_2003-06-05_17:58
</eGov_IT:Collaborazione>
<eGov_IT:Servizio tipo="TEST">
NomeServizio
</eGov_IT:Servizio>
131
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
<eGov_IT:Azione>
NomeAzione
</eGov_IT:Azione>
<eGov_IT:Messaggio>
<eGov_IT:Identificatore>
ParteA_ANGPD_0000630_2003-06-05_15:58
</eGov_IT:Identificatore>
<eGov_IT:OraRegistrazione tempo="EGOV_IT_SPC">
2003-06-05T17:58:10
</eGov_IT:OraRegistrazione>
<eGov_IT:Scadenza>
2003-06-10T17:58:20
</eGov_IT:Scadenza>
</eGov_IT:Messaggio>
<eGov_IT:ProfiloTrasmissione inoltro="EGOV_IT_PIUDIUNAVOLTA"/>
</eGov_IT:IntestazioneMessaggio>
</eGov_IT:Intestazione>
</SOAP_ENV:Header>
L’elemento
che
caratterizza
questo
tipo
di
comunicazione
è
ProfiloCollaborazione; l’interfaccia delegata della PDD fruitrice, verificando
che il campo ha valore EGOV_IT_MessaggioSingoloOneWay, chiude la
comunicazione appena la richiesta è inviata alla PDD erogatrice.
Altri elementi fondamentali sono Servizio e Azione che identificano il servizio da
invocare sulla PDD remota e l’azione che il servizio deve svolgere.
Negli esempi, quando viene mostrato l’XML che descrive le Buste di e-Gov viene
mostrata solo la parte di estensione, infatti non è utile mostrare la Busta SOAP che
veicola le Buste di e-Gov. In questo documento viene mostrato solo l’header
(SOAP_ENV:Header) che è la parte che viene estesa utilizzando la Busta di e-Gov
invece della semplice busta SOAP.
La parte del SOAP body non è importante ai fini della gestione della comunicazione,
invece sarà fondamentale al momento in cui le Buste effettivamente dovranno veicolare
dati.
132
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
La Busta SOAP viene gestita tramite le API di AXIS, infatti, grazie a questo tool-kit, è
possibile avere un controllo quasi assoluto sul protocollo SOAP.
L’utilizzo di AXIS ci permette di ragionare sulla logica della PDD e non sulla gestione
della busta SOAP:
MessageFactory mf = MessageFactory.newInstance();
SOAPMessage smsg = mf.createMessage( new MimeHeaders(),
new ByteArrayInputStream(str.getBytes()));
SOAPPart sp = smsg.getSOAPPart();
SOAPEnvelope se = (SOAPEnvelope)sp.getEnvelope();
SOAPHeader sh = se.getHeader();
String intestazione ="";
Iterator headers = sh.extractAllHeaderElements();
while (headers.hasNext())
{
SOAPHeaderElement he = (SOAPHeaderElement)headers.next();
intestazione = intestazione + DOM2Writer.nodeToString(he, true);
}
Grazie alle poche istruzioni riportate sopra, infatti, viene letto il contenuto dell’header
SOAP e messo all’interno di una stringa di testo.
Le richieste che arrivano alla Porta, sia all’interfaccia delegata sia all’interfaccia
applicativa, sono richieste SOAP che rispettano il protocollo SOAP1.1; essendo la PDD
implementata come un sevizio web.
Visto che la busta di e-Gov è racchiusa nell’Header si va a prendere la parte header e si
estrae la Busta. Ciò avviene nel ciclo while.
Viene poi istanziata una classe intestazione e la stringa XML estratta dall’header viene
deserializzata all’interno dell’istanza;
Intestazione intes = new IntestazioneImpl();
intes = unmarshallIntestazione(isource);
133
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Si fa il controllo sul profilo di collaborazione per vedere se effettivamente è un profilo a
messaggio singolo;
if(intes.getIntestazioneMessaggio().getProfiloCollaborazione().getValue()
.equal("EGOV_IT_MessaggioSingoloOneWay")){
//
VIENE GESTITA LA COMUNICAZIONE A MESSAGGIO SINGOLO ONE WAY
si controlla il servizio che si vuole fruire;
if(intes.getIntestazioneMessaggio().getServizio().getValue().equals("pigro")){
In questo caso il servizio si chiama pigro, essendo un servizio “giocattolo” che non
compie nessuna azione rilevante, ma effettua solo una stampa sullo standard output del
server;
Service
service = new Service();
Call
call
= (Call) service.createCall();
call.setTargetEndpointAddress( new java.net.URL(endpoint) );
call.setOperationName( method );
call.invoke(new Object[]{});
viene poi creata l’istanza di un Servizio ed il servizio viene invocato con i parametri
passati dall’utente.
Il servizio pigro come si è detto non svolge nessuna operazione particolare. È mostrato
qui di seguito il codice;
public void pigro(){
System.out.println("chiamato il metodo pigro");
}
Fino ad ora è stato esaminato il codice della Porta e quello del Servizio Applicativo che
viene fruito. Non è stato però fino ad ora spiegato come questo codice venga schierato
su un application server e come dal codice si abbia il servizio desiderato.
134
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Riporteremo nei prossimi paragrafi un esempio di fruizione, tramite una PDD, di un
servizio da parte di una Amministrazione.
All’interfaccia Delegata della PDD del dominio che vuole fruire il servizio, cioè al Web
Service schierato sulla PDD interna al Dominio, arriva una richiesta di servizio che
presenta come parametro una stringa XML con i parametri della Busta di e-Gov relativi
a
Servizio,
Azione,
Destinatario
(identificativo
amministrazione),
Mittente
(identificativo amministrazione), e gli altri dati che necessitano alla PDD per invocare il
Servizio Applicativo sulla PDD remota.
Attualmente questi dati vengono passati come parametro ma in seguito, quando
verranno sviluppati i servizi di registro SICA, i dati relativi a queste interazioni
potranno essere letti dagli Accordi di Servizio immagazzinati nei registri SICA ed
accessibili anche essi attraverso Web Services.
In questo caso quando viene chiamato il client per effettuare la richiesta Applicativa, il
risultato dell’interazione è quello visibile in Figura 39.
135
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Figura 39: Output sull’Application Server (caso Messaggio Singlo)
Come si può vedere dall’output che si verifica sul server, la PDD controlla i valori
relativi a servizio, azione, profilo di collaborazione ed i dati relativi al destinatario, in
particolare l’indirizzo telematico.
In questo caso, essendo l’indirizzo telematico relativo all’application server locale il
servizio viene chiamato sulla stessa PDD e in output si vede il risultato della chiamata
al metodo pigro del servizio pigro (vale a dire la stampa sullo standard output
dell’application server con scritto “chiamato il metodo pigro”) , se il servizio
risiedesse su un Dominio differente dal localhost la PDD effettuerebbe la chiamata alla
PDD dell’altro Dominio che si occuperebbe di invocare il servizio erogatore.
136
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
4.3.2 Comunicazione sincrona
Il secondo caso preso in esame è quello della comunicazione di tipo Sincrono; viene
cioè evocato un Servizio Applicativo su un Dominio e si attende una risposta da parte
dell’Amministrazione evocatrice.
È un caso abbastanza complesso ed è la base della comunicazione tra Web Services più
articolati. Infatti scomponendo anche i Web Services a comunicazione asincrona, che
apparentemente molto complessi, questi si possono vedere come combinazioni di
servizi a comunicazione Sincrona con aggiunta del sistema di gestione dei tracciamenti
e del campo RiferimentoMessaggio.
Al fine di rendere al lettore l’idea di un servizio sincrono viene presentato un esempio
di caso reale che si potrebbe verificare quando il SPCoop sarà fruibile agli utenti di
tutte le Amministrazioni ed è auspicabile anche ai cittadini comuni.
Si può immaginare il caso nel quale un cittadino cambi la residenza: la nuova
Amministrazione Comunale di appartenenza si troverà nella situazione di avere un
cittadino del quale non conosce i dati anagrafici.
Se l’Amministrazione Comunale, dove il cittadino era precedentemente residente ha un
buon sistema informativo, probabilmente i dati del cittadino sono fruibili tramite un
Web Service, e quindi la nuova Amministrazione Comunale può accedere a questi dati
fruendo il Servizio tramite il Sistema Pubblico di Cooperazione sulla PDD del Dominio
in cui risiede. Quest’ultima cercherà l’Accordo di Servizio tra le due Amministrazioni
Comunali sul SICA e da lì estrarrà i dati che servono per la comunicazione.
Invocherà il Servizio Applicativo sulla PDD del Dominio erogante e rimarrà in attesa
del Messaggio Applicativo di risposta vista la possibilità di ricevere i dati in maniera
Sincrona.
137
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Di seguito viene presentato un esempio di implementazione di comunicazione Sincrona
tra PDD in Java.
Come negli altri casi, la PDD si troverà a dover gestire delle Buste di e-Government per
veicolare i dati, questa volta ci sarà una Busta di richiesta ed una di risposta che viene
mostrata qui di seguito per dare la possibilità al lettore di capire a che tipo di
interazione ci si trova di fronte. Quella che segue è la busta tipica della richiesta di tipo
Sincrono:
<SOAP_ENV:Header xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<eGov_IT:Intestazione
xmlns=http://www.cnipa.it/schemas/2003/eGovIT/Busta1_0/
SOAP_ENV:actor="http://www.cnipa.it/eGov_it/portadominio"
SOAP_ENV:mustUnderstand="1">
<eGov_IT:IntestazioneMessaggio>
<eGov_IT:Mittente>
<eGov_IT:IdentificativoParte tipo="CodicePA">
ParteA
</eGov_IT:IdentificativoParte>
</eGov_IT:Mittente>
<eGov_IT:Destinatario>
<eGov_IT:IdentificativoParte tipo="CodicePA">
ParteB
</eGov_IT:IdentificativoParte>
</eGov_IT:Destinatario>
<eGov_IT:ProfiloCollaborazione>
EGOV_IT_ServizioSincrono
</eGov_IT:ProfiloCollaborazione>
<eGov_IT:Servizio tipo="TEST">
NomeServizio
</eGov_IT:Servizio>
<eGov_IT:Azione>
NomeAzione
</eGov_IT:Azione>
<eGov_IT:Messaggio>
<eGov_IT:Identificatore>
ParteA_ANGPD_0000630_2003-06-05_15:58
</eGov_IT:Identificatore>
<eGov_IT:OraRegistrazione tempo="EGOV_IT_SPC">
2003-06-05T17:58:10
</eGov_IT:OraRegistrazione>
<eGov_IT:Scadenza>
2003-06-10T17:58:20
138
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
</eGov_IT:Scadenza>
</eGov_IT:Messaggio>
<eGov_IT:ProfiloTrasmissione inoltro="EGOV_IT_PIUDIUNAVOLTA"/>
</eGov_IT:IntestazioneMessaggio>
<eGov_IT:ListaTrasmissioni>
<eGov_IT:Trasmissione>
<eGov_IT:Origine>
<eGov_IT:IdentificativoParte tipo=" CodicePA"
indirizzoTelematico="http://137.5.3.11/pddo/servlet/soapsrv">ParteA
</eGov_IT:IdentificativoParte>
</eGov_IT:Origine>
<eGov_IT:Destinazione>
<eGov_IT:IdentificativoParte tipo=" CodicePA"
indirizzoTelematico="http://158.0.1.21/pddo/servlet/soapsrv"> ParteB
</eGov_IT:IdentificativoParte>
</eGov_IT:Destinazione>
<eGov_IT:OraRegistrazione tempo="EGOV_IT_SPC">2003-0605T17:58:10</eGov_IT:OraRegistrazione>
</eGov_IT:Trasmissione>
</eGov_IT:ListaTrasmissioni>
</eGov_IT:Intestazione>
</SOAP_ENV:Header>
Come si può vedere la Busta è abbastanza simile a quella per una richiesta di tipo
messaggio
singolo,
i
campi
che
più
la
caratterizzano
sono
ProfiloCollaborazione. ProfiloCollaborazione indica all’interfaccia
delegata della PDD fruitrice di non chiudere la comunicazione appena la richiesta è
inviata alla PDD erogatrice ma di attendere che arrivi un Messaggio SPCoop di risposta
contenente i dati desiderati.
Servizio e Azione sono altri elementi fondamentali che identificano il servizio da
invocare sulla PDD remota e l’azione che il servizio deve svolgere.
Nell’esempio che esamineremo, il sistema chiamerà il servizio calculator che,
come azione, dovrà svolgere una somma.
Qui di seguito è mostrata la Busta di e-Gov tipica di una risposta Sincrona:
<SOAP_ENV:Header xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<eGov_IT:Intestazione
xmlns="http://www.cnipa.it/schemas/2003/eGovIT/Busta1_0/"
139
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
SOAP_ENV:actor=http://www.cnipa.it/eGov_it/portadominio
SOAP_ENV:mustUnderstand="1">
<eGov_IT:IntestazioneMessaggio>
<eGov_IT:Mittente>
<eGov_IT:IdentificativoParte tipo="CodicePA">
ParteB
</eGov_IT:IdentificativoParte>
</eGov_IT:Mittente>
<eGov_IT:Destinatario>
<eGov_IT:IdentificativoParte tipo="CodicePA">
ParteA
</eGov_IT:IdentificativoParte>
</eGov_IT:Destinatario>
<eGov_IT:ProfiloCollaborazione>
EGOV_IT_ServizioSincrono
</eGov_IT:ProfiloCollaborazione>
<eGov_IT:Servizio tipo="TEST">
NomeServizio
</eGov_IT:Servizio>
<eGov_IT:Azione>
NomeAzione
</eGov_IT:Azione>
<eGov_IT:Messaggio>
<eGov_IT:Identificatore>
ParteB_ANGPA_0123670_2003-06-05_17:58
</eGov_IT:Identificatore>
<eGov_IT:OraRegistrazione tempo="EGOV_IT_SPC">
2003-06-05T17:58:11
</eGov_IT:OraRegistrazione>
<eGov_IT:RiferimentoMessaggio>
ParteA_ANGPD_0000630_2003-06-05_17:58
</eGov_IT:RiferimentoMessaggio>
</eGov_IT:Messaggio>
<eGov_IT:ProfiloTrasmissione inoltro="EGOV_IT_PIUDIUNAVOLTA"/>
</eGov_IT:IntestazioneMessaggio>
<eGov_IT:ListaTrasmissioni>
<eGov_IT:Trasmissione>
<eGov_IT:Origine>
<eGov_IT:IdentificativoParte tipo=" CodicePA"
indirizzoTelematico="http:// 158.0.1.21/pddo/servlet/soapsrv">
ParteB
</eGov_IT:IdentificativoParte>
</eGov_IT:Origine>
<eGov_IT:Destinazione>
<eGov_IT:IdentificativoParte tipo=" CodicePA"
indirizzoTelematico="http:// 137.5.3.11/pddo/servlet/soapsrv">
140
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
ParteA
</eGov_IT:IdentificativoParte>
</eGov_IT:Destinazione>
<eGov_IT:OraRegistrazione tempo="EGOV_IT_SPC">
2003-06-05T17:58:11
</eGov_IT:OraRegistrazione>
</eGov_IT:Trasmissione>
</eGov_IT:ListaTrasmissioni>
</eGov_IT:Intestazione>
</SOAP_ENV:Header>
Nell’altro caso, quello della comunicazione a messaggio singolo, non esiste nemmeno
la busta di risposta, non esistendo la risposta.
È
interessante
notare
che
nella
busta
di
risposta
è
il
campo
ProfiloCollaborazione che descrive all’interfaccia applicativa della PDD
fruitrice che il messaggio è di tipo Sincrono, ma più interessante è il campo
RiferimentoMessaggio che indica alla PDD che messaggio si riferisce alla
risposta, notare che ha lo stesso valore di Identificatore della Busta di richiesta.
Altri elementi fondamentali sono Servizio e Azione che identificano il servizio
invocato sulla PDD erogatrice e l’azione che il servizio ha eseguito.
Come
avveniva
per
il
caso
del
messaggio
singolo
anche
in
questo
ProfiloCollaborazione succede che le Buste di e-Government siano trasportate
all’interno degli Header SOAP (SOAP_ENV:Header).
La gestione degli header viene effettuata allo stesso modo del caso precedente, anche
qui infatti vengono utilizzate le API fornite dal tool-kit AXIS.
MessageFactory mf = MessageFactory.newInstance();
SOAPMessage smsg = mf.createMessage( new MimeHeaders(),
new ByteArrayInputStream(str.getBytes()));
SOAPPart sp = smsg.getSOAPPart();
SOAPEnvelope se = (SOAPEnvelope)sp.getEnvelope();
SOAPHeader sh = se.getHeader();
141
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
String intestazione ="";
Iterator headers = sh.extractAllHeaderElements();
while (headers.hasNext())
{
SOAPHeaderElement he = (SOAPHeaderElement)headers.next();
intestazione = intestazione + DOM2Writer.nodeToString(he, true);
}
attraverso queste poche istruzioni viene letto il contenuto dell’header SOAP e messo
all’interno di una stringa di testo.
Le richieste che arrivano alla Porta, sia all’interfaccia delegata sia all’interfaccia
applicativa, sono richieste SOAP che rispettano il protocollo SOAP1.1; essendo la PDD
implementata come un sevizio web.
Visto che la busta di e-Gov è racchiusa nell’Header si prende la parte header ed viene
estratta la Busta. Ciò avviene nel ciclo while.
Viene poi istanziata una classe intestazione e la stringa XML estratta dall’header viene
deserializzata all’interno dell’istanza:
Intestazione intes = new IntestazioneImpl();
intes = unmarshallIntestazione(isource);
Si testa poi l’elemento che contiene il dato sul profilo di collaborazione per accertarsi
che sia a scambio di messaggi Sincrono:
else if(intes.getIntestazioneMessaggio().getProfiloCollaborazione().getValue()
.equals("EGOV_IT_ServizioSincrono")){
//
VIENE GESTITA LA COMUNICAZIONE SINCRONA
La PDD effettua poi il controllo sul servizio che si vuole fruire, controllando l’elemento
Servizio delle classi sulle quali è stata deserializzata la stringa XML:
142
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
if(intes.getIntestazioneMessaggio().getServizio().getValue().equals("calculator")){
Si controlla anche che l’operazione che deve essere chiamata remotamente sia una delle
operazioni del servizio:
if (!(method.equals("add") || method.equals("subtract"))) {
System.err.println("no such method");
Viene poi istanziato il servizio, la chiamata al servizio stesso e vengono eseguite le
operazioni di assegnazione dei parametri alla chiamata.
Qui di seguito è riportato il codice che effettua queste operazioni:
Service
service = new Service();
Call
call
= (Call) service.createCall();
call.setTargetEndpointAddress( new java.net.URL(endpoint) );
call.setOperationName( method );
call.addParameter( "op1", XMLType.XSD_INT, ParameterMode.IN );
call.addParameter( "op2", XMLType.XSD_INT, ParameterMode.IN );
call.setReturnType( XMLType.XSD_INT );
Nell’operazione successiva viene effettuata l’invocazione della chiamata che fa
eseguire il servizio richiesto.
Integer ret = (Integer) call.invoke( new Object [] { i1, i2 });
La risposta applicativa viene di nuovo inserita dentro i campi di una nuova classe
messaggio e viene inviata una Busta alla PDD remota che contiene nel SOAP body i
dati di risultato dell’invocazione del servizio.
In verità ai fini della PDD non è di nessuna rilevanza il fatto che il dato venga
trasportato o meno, rilevante è invece che il messaggio venga veicolato indietro per
mezzo di una Busta che sia conforme alle le specifiche CNIPA.
143
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Utilizzando i metodi set che ci si è costruiti con il tool utilizzato per generare le classi
vengono settati i vari campi della Busta (quelli più rilevanti ai fini della comunicazione
sincrona).
Il messaggio viene rinviato al mittente veicolato dalla nuova Busta che è mostrata qui
di seguito:
<?xml version='1.0' encoding='UTF-8'?>
<eGov_IT:Intestazione SOAP_ENV:mustUnderstand="false"
SOAP_ENV:actor=http://www.cnipa.it/eGov_it/portadominio
xmlns:eGov_IT=http://www.cnipa.it/schemas/2003/eGovIT/Busta1_0/
xmlns:SOAP_ENV="http://schemas.xmlsoap.org/soap/envelope/">
<eGov_IT:IntestazioneMessaggio>
<eGov_IT:Mittente>
<eGov_IT:IdentificativoParte
indirizzoTelematico=http://localhost:8080/axis/services/
tipo="CodicePA">
ParteA
</eGov_IT:IdentificativoParte>
</eGov_IT:Mittente>
<eGov_IT:Destinatario>
<eGov_IT:IdentificativoParte
indirizzoTelematico="http://localhost:8080/axis/services/"
tipo="CodicePA">
ParteB
</eGov_IT:IdentificativoParte>
</eGov_IT:Destinatario>
<eGov_IT:ProfiloCollaborazione>
EGOV_IT_ServizioSincrono
</eGov_IT:ProfiloCollaborazione>
<eGov_IT:Servizio tipo="TEST">calculator</eGov_IT:Servizio>
<eGov_IT:Azione>add:1:2</eGov_IT:Azione>
<eGov_IT:Messaggio>
<eGov_IT:Identificatore>ParteA_ANGPD_0_2007-01-14_07:21</eGov_IT:Identificatore>
<eGov_IT:OraRegistrazione>2007-01-14T19:21:15.713+01:00
</eGov_IT:OraRegistrazione>
<eGov_IT:RiferimentoMessaggio>ParteA_ANGPD_0000630_2003-06-05_15:58
</eGov_IT:RiferimentoMessaggio>
<eGov_IT:Scadenza>2003-06-10T17:58:20Z</eGov_IT:Scadenza>
</eGov_IT:Messaggio>
<eGov_IT:ProfiloTrasmissione
confermaRicezione="false"
inoltro="EGOV_IT_PIUDIUNAVOLTA"/>
144
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
</eGov_IT:IntestazioneMessaggio>
<eGov_IT:ListaTrasmissioni>
<eGov_IT:Trasmissione>
<eGov_IT:Origine>
<eGov_IT:IdentificativoParte
indirizzoTelematico="http://localhost:8080/axis/services/" tipo="
CodicePA">ParteA</eGov_IT:IdentificativoParte>
</eGov_IT:Origine>
<eGov_IT:Destinazione>
<eGov_IT:IdentificativoParte
indirizzoTelematico="http://localhost:8080/axis/services/" tipo="
CodicePA">ParteB</eGov_IT:IdentificativoParte>
</eGov_IT:Destinazione>
<eGov_IT:OraRegistrazione tempo="EGOV_IT_SPC">2003-0605T17:58:10Z</eGov_IT:OraRegistrazione>
</eGov_IT:Trasmissione>
</eGov_IT:ListaTrasmissioni>
</eGov_IT:Intestazione>
Importante è osservare come il campo riferimento messaggio faccia riferimento al
messaggio arrivato alla PDD come richiesta e l’identificatore faccia riferimento ad un
altro messaggio.
Si noti che la PDD che fa queste operazioni è sempre la stessa ma basterebbe fare una
implementazione su un’altra macchina per ottenere lo stesso risultato. Qui purtroppo
non è semplice far vedere lo scambio di messaggi che si ha tra differenti interfacce
della PDD perché i riferimenti che sono nella busta a proposito di domini o
amministrazioni sono sempre uguali, essendo sempre la stessa PDD a fare tutto.
4.3.3 Comunicazione asincrona
Altro profilo di collaborazione è quello asincrono. Simmetrico o Asimmetrico che sia si
può vedere come una combinazione di servizi di tipo a messaggio singolo o sincroni.
145
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Come è stato precedentemente osservato, la comunicazione asincrona si differenzia in
due tipi: simmetrico ed asimmetrico si consultino le pagine precedenti per le differenze
che caratterizzano i due tipi di comunicazione.
Nell’ambiente di interazione che si andrà a delineare quando il SPCoop sarà messo in
opera, la maggior parte dei servizi inizialmente saranno di questo tipo.
Si immagini il caso di una richiesta effettuata da una Amministrazione per un dato ad
una altra Amministrazione il cui sistema informativo non permette una interazione
Sincrona, vale a dire il caso in cui un operatore dovrà cercare il dato in un archivio
cartaceo e poi inviare la risposta applicativa tramite il SPCoop.
Questa eventualità può essere esplicativa sia del caso simmetrico che asimmetrico. La
differenza sta nella modalità di consegna della risposta; se l’amministrazione erogatrice
contatta il fruitore nel momento in cui ha la risposta, si è di fronte al caso di
comunicazione
Sincrona
altrimenti,
se
è
il
fruitore
che
deve
contattare
l’Amministrazione erogatrice e prendere il dato che è stato posto accessibile via
SPCoop, si è di fronte ad uno scambio di messaggi Asincrono Asimmetrico.
La comunicazione asincrona deve gestire Buste di e-Government simili a quelle viste
sopra per i casi Sincrono e a Messaggio singolo.
Per la struttura delle buste scambiate si rimanda alle specifiche CNIPA relative alla
Busta di e-Gov. Cercando di non essere prolissi ma comunque, volendo dare al lettore
la possibilità di comprendere, si può dire che ci sono quattro interazioni tra PDD in
caso di comunicazione Asincrona.
Nel caso di comunicazione Simmetrica si ha questo flusso di Buste tra le due
amministrazioni, il fruitore effettua la richiesta, l’erogatore invia un messaggio di
ricezione della richiesta e, quando la risposta è pronta, l’erogatore invia la risposta
mentre il fruitore, alla ricezione, invia un messaggio di ricevuta della risposta.
146
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Nel caso Asimmetrico, il flusso di Buste è il seguente: il fruitore effettua la richiesta,
l’erogatore invia un messaggio di ricezione della richiesta, successivamente il fruitore
invia richieste sullo stato di evasione della richiesta sempre tramite una Busta di e-Gov
e l’erogatore invia messaggi sullo stato, se non ha ancora la risposta, altrimenti invia la
risposta.
Aspetto
caratterizzante
delle
ProfiloCollaborazione
richieste
di
tipo
Asincrono
che
è
il
campo
può
EGOV_IT_ServizioAsincronoSimmetrico
essere
o
EGOV_IT_ServizioAsincronoAsimmetrico a seconda che il profilo di
collaborazione sia di tipo Simmetrico o Asimmetrico.
Da notare sono anche i campi Identificatore e RiferimentoMessaggio e
Collaborazione che fanno in modo che i messaggi siano tracciabili e che le PDD
riescano a capire a chi fa riferimento un messaggio di risposta o un messaggio di
polling sullo stato del servizio richiesto.
I campi Identificatore e RiferimentoMessaggio vengono utilizzati nella
stessa maniera del caso Sincrono, il campo Collaborazione invece è quel campo
che caratterizza a quale richiesta fa riferimento lo scambio di messaggi effettuato.
Qui di seguito vengono mostrati degli spezzono di codice XML per mostrare come i
campi facciano riferimento gli uni agli altri.
Il caso che si vede è quello della comunicazione Asincrona Simmetrica che è
esplicativa anche per il caso Asincrono Asimmetrico.
Viene qui riportato lo spaccato di codice relativo alla richiesta.
<eGov_IT:ProfiloCollaborazione servizioCorrelato="NomeServizioRicezioneRisposte"
tipo="URL">EGOV_IT_ServizioAsincronoSimmetrico</eGov_IT:ProfiloCollaborazione>
<Collaborazione>ParteA_ANGPD_0000630_2003-06-05_17:58</Collaborazione>
<eGov_IT:Servizio tipo="TEST">NomeServizio</eGov_IT:Servizio>
<eGov_IT:Azione>NomeAzione</eGov_IT:Azione>
<eGov_IT:Messaggio>
<eGov_IT:Identificatore>ParteA_ANGPD_0000630_2003-06-05_17:58</eGov_IT:Identificatore>
<eGov_IT:OraRegistrazione tempo="EGOV_IT_SPC">2003-06-05T17:58:00</eGov_IT:OraRegistrazione>
147
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
<Scadenza>2003-06-10T18:00:00</Scadenza>
</eGov_IT:Messaggio>
si vede poi il codice che arriva come ricevuta della richiesta di cui sopra.
<eGov_IT:ProfiloCollaborazione>EGOV_IT_ServizioAsincronoSimmetrico</eGov_IT:ProfiloCollaborazione>
<Collaborazione>ParteA_ANGPD_0000630_2003-06-05_17:58</Collaborazione>
<eGov_IT:Servizio tipo="TEST">NomeServizio</eGov_IT:Servizio>
<eGov_IT:Azione>NomeAzione</eGov_IT:Azione>
<eGov_IT:Messaggio>
<eGov_IT:Identificatore>ParteB_ANGPA_0123670_2003-06-05_17:58</eGov_IT:Identificatore>
<eGov_IT:OraRegistrazione tempo="EGOV_IT_SPC">2003-06-05T17:58:01</eGov_IT:OraRegistrazione>
<RiferimentoMessaggio>ParteA_ANGPD_0000630_2003-06-05_17:58</RiferimentoMessaggio>
</eGov_IT:Messaggio>
Poi si ha la risposta alla richiesta;
<eGov_IT:ProfiloCollaborazione>EGOV_IT_ServizioAsincronoSimmetrico</eGov_IT:ProfiloCollaborazione>
<Collaborazione>ParteA_ANGPD_0000630_2003-06-05_17:58</Collaborazione>
<eGov_IT:Servizio tipo="TEST">NomeServizioRicezioneRisposte</eGov_IT:Servizio>
<eGov_IT:Azione>NomeAzione</eGov_IT:Azione>
<eGov_IT:Messaggio>
<eGov_IT:Identificatore>ParteB_ANGPA_0123671_2003-06-05_17:59</eGov_IT:Identificatore>
<eGov_IT:OraRegistrazione tempo="EGOV_IT_SPC">2003-06-05T17:59:10</eGov_IT:OraRegistrazione>
<RiferimentoMessaggio>ParteA_ANGPD_0000630_2003-06-05_17:58</RiferimentoMessaggio>
</eGov_IT:Messaggio>
e finalmente la ricevuta della risposta alla richiesta;
<eGov_IT:ProfiloCollaborazione>EGOV_IT_ServizioAsincronoSimmetrico</eGov_IT:ProfiloCollaborazione>
<Collaborazione>ParteA_ANGPD_0000630_2003-06-05_17:58</Collaborazione>
<eGov_IT:Servizio tipo="TEST">NomeServizioRicezioneRisposte</eGov_IT:Servizio>
<eGov_IT:Azione>NomeAzione</eGov_IT:Azione>
<eGov_IT:Messaggio>
<eGov_IT:Identificatore>ParteA_ANGPD_0000631_2003-06-05_17:59</eGov_IT:Identificatore>
<eGov_IT:OraRegistrazione tempo="EGOV_IT_SPC">2003-06-05T17:59:11</eGov_IT:OraRegistrazione>
<RiferimentoMessaggio>ParteB_ANGPA_0123671_2003-06-05_17:59</RiferimentoMessaggio>
</eGov_IT:Messaggio>
148
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Notare che il campo Collaborazione non varia mai per tutta l’interazione tra le
porte, mentre i campi RiferimentoMessaggio e Identificatore variano
come quando si è in presenza di comunicazioni Sincrone.
Per questo la comunicazione asincrona si può vedere come una combinazione di
comunicazioni Sincrone.
La differenza sta nel fatto che i messaggi devono essere tracciati in modo che si possa
impostare il campo Collaborazione con valori consistenti.
Questo si può eseguire in diversi modi; la maniera più semplice è probabilmente quella
di utilizzare dei DBMS per la gestione delle tracciature, dai quali attingere i valori degli
identificativi delle collaborazioni per l’invio consistente di messaggi.
In questo lavoro la comunicazione asincrona non è stata implementata, infatti questa
operazione non era necessaria per provare che i concetti dai quali si è partiti per la
realizzazione della PDD, siano validi per lo sviluppo di un sistema che fornisca le
caratteristiche di interoperabilità richieste dalle specifiche italiane in primis e poi da
quelle europee.
4.4
Problemi e soluzioni
Questa sezione riassume ciò che è stato descritto precedentemente; si parlerà di
argomenti che non erano di interesse specifico delle sezioni precedenti e che non sono
state trattate per mantenere l’attenzione del lettore su quella che era la logica di
implementazione della PDD.
Non saranno ripetuti gli stessi concetti visti precedentemente; qui tratteremo ad un
livello differente alcune tematiche di tipo puramente pratico che hanno causato dei
problemi non difficili da risolvere ma comunque interessanti per un lettore che cerchi
delle risposte a questi problemi.
149
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Fondamentale al fine di lavorare in maniera veloce e pratica era avere un ambiente di
sviluppo che permettesse di sviluppare, schierare e testare servizi in maniera rapida e
deterministica.
Per realizzare questo ambiente è stato individuato un valido strumento in eclipse che è
un software per fare editing di documenti in Java in maniera veloce ed assistita, inoltre
in eclipse c’è un debugger, elemento fondamentale per lo sviluppo di sistemi così
articolati, un tool di compilazione molto potente, che permette di compiere operazioni
come lo schieramento dei servizi direttamente sull’Application Server.
Inoltre eclipse offre la possibilità di includere librerie nel codice senza dover
modificare il classpath della propria macchina, tutte le operazioni avvengono in
maniera molto veloce ed intuitiva.
Per la configurazione dell’ambiente di test è stato scritto un file di deploy per
pubblicare i servizi che venivano sviluppati sul Server. Si è poi impostato eclipse per
processare questo file quando viene effettuata una compilazione del codice Java che
implementa la PDD.
Qui di seguito è mostrato uno stralcio del file di cui sopra:
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="porta" provider="java:RPC">
<parameter name="className" value="porta.Write"/>
<parameter name="allowedMethods" value="porta"/>
<parameter name="scope" value="Request"/>
</service>
<service name="calculator" provider="java:RPC">
<parameter name="className" value="testClasses.Calculator"/>
<parameter name="allowedMethods" value="*"/>
<parameter name="scope" value="Request"/>
</service>
<service name="pigro" provider="java:RPC">
<parameter name="className" value="testClasses.OneWay"/>
<parameter name="allowedMethods" value="*"/>
<parameter name="scope" value="Request"/>
150
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
</service>
</deployment>
Si può osservare come vengano pubblicati sull’Application Server i servizi relativi a
porta e servizi di test.
Per impostare eclipse in maniera che esegua il deploy, si devono impostare come
parametri
di
configurazione
main
class
org.apache.axis.client.AdminClient e come argomenti il nome del file di
deploy.
Figura 40: Configurazione di eclipse per il deploy automatico
in questo modo dopo aver compilato l’unica cosa da fare sarà copiare i files .class che si
vuole che siano sull’Application Server per implementare i nostri servizi, a meno che
non si stia sviluppando direttamente dentro l’Application Server, e riavviare il server in
modo che possa processare i files giusti.
La serializzazione e la deserializzazione di stringhe XML, richiedevano l’utilizzo di
istruzioni molto ripetitive.
151
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Si è perciò deciso di includere le operazioni di serializzazione e deserializzazione in
due funzioni specifiche.
Qui di seguito è mostrato il codice:
public static Intestazione unmarshallIntestazione(InputSource pSource)
throwsJAXBException {
Intestazione retVal = new IntestazioneImpl();
JAXBContext context =
JAXBContext.newInstance("it.cnipa.www.schemas._003.egovit.busta1_0");
Unmarshaller unmarshaller = context.createUnmarshaller();
retVal =(Intestazione) unmarshaller.unmarshal(pSource);
return retVal;
}
public static String marshallIntestazione(Intestazione intestazione)
throws JAXBException {
StringWriter sw = new StringWriter();
JAXBContext context =
JAXBContext.newInstance("it.cnipa.www.schemas._003.egovit.busta1_0");
Marshaller marshaller = context.createMarshaller();
marshaller.marshal(intestazione, sw);
return sw.toString();
}
È facile dedurre che, basta passare una istanza della classe intestazione per avere una
stringa XML con la classe serializzata e basta passare la stringa XML in formato
InputSource per avere la stringa deserializzata in una instanza di classe
Intestazione.
Un altro problema che è emerso durante il lavoro, è che per assegnare valori alla classe
Intestazione spesso, sopratutto noi casi in cui il valore è molto innestato nella
struttura si devono scrivere linee di codice molto lunghe ed impegnative, che spesso
portano lo sviluppatore a compiere errori e a perdere molto tempo per implementare
funzioni molto semplici.
Un esempio di queste operazioni può essere
intesRet.getIntestazioneMessaggio().getMessaggio().setRiferimentoMessaggio(intes.getInte
stazioneMessaggio().getMessaggio().getIdentificatore());
152
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Sviluppo di una Porta di Dominio
Vittorio Ottaviani
_______________________________________________________________________
Nel caso più semplice di una operazione di lettura o nel caso di operazioni di scrittura
ci si trova di fronte a dover scrivere linee di codice come questa:
intesRet.getIntestazioneMessaggio().getMessaggio().setIdentificatore(ammCode+"_"+portaCo
de+"_"+numProg+"_"+now );
tale operazione di set in verità non è così impegnativa visto che il tipo di dato da
settare è una stringa, se il tipo di dato fosse differente, come un campo date-time o
qualsiasi altro tipo di dato più complesso di una semplice stringa, le operazioni da
compiere sarebbero molteplici.
Per ovviare a questo problema si è pensato di sviluppare una classe per effettuare
queste scritture, una sorta di facade che permetta di effettuare una get o una set
semplicemente istanziando la classe ed utilizzando i metodi che si occupano delle
operazioni di lettura e scrittura dei valori delle classi che implementano la Busta di eGov.
La facade non è stata implementata, poiché lo scopo del progetto non era implementare
una vera e propria PDD totalmente funzionante ed ottimizzata.
L’obbiettivo di questo lavoro era quello di provare che i concetti alla base di questa
progettazione rappresentano una via valida per fornire interoperabilità alla Pubblica
Amministrazione italiana.
153
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Conclusioni e sviluppi futuri
Vittorio Ottaviani
_______________________________________________________________________
5 Conclusioni e sviluppi futuri
5.1
Conclusioni
Scopo del lavoro era realizzare una “proof of concept” di una Porta di Dominio basata
su strumenti open source.
L’intento era dimostrare che questo elemento fondamentale per il Sistema Pubblico di
Cooperazione fosse realizzabile in ambiente open source.
Nell’ambito di questo lavoro è stata realizzata una PDD dimostrativa che permette la
fruizione e l’erogazione di alcuni servizi di test.
Dei quattro profili di collaborazione previsti dalle specifiche CNIPA ne sono stati
realizzati due; sulla base di questo lavoro, i due profili collaborativi non implementati
potranno essere facilmente sviluppati in lavori successivi, in considerazione del fatto
che tali profili di collaborazione, cioè quelli asincroni, sono una estensione di quelli
implementati.
Si è, dunque, dimostrato che in ambito Open Source è possibile realizzare Servizi Web
che svolgano le funzioni di una Porta di Dominio, vale a dire:
•
Gestione di una Busta di e-Government come quella definita nelle specifiche
CNIPA,
•
Gestione delle tracciature che si devono svolgere in un sistema come il SPCoop,
•
Gestione della Busta SOAP, protocollo che veicola la busta di e-Government.
È inoltre importante sottolineare il positivo riscontro delle scelte effettuate riguardo agli
strumenti utilizzando (vedi §4.2.5), in particolare:
154
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Conclusioni e sviluppi futuri
Vittorio Ottaviani
_______________________________________________________________________
•
Tomcat: che si è rivelato estremamente robusto e di supporto per lo sviluppo e
la gestione di jsp e di applet java.
•
Axis: rivelatosi fondamentale nella gestione del protocollo SOAP e dunque di
parte della Busta di e-gov; Axis può fornire un importante aiuto anche in visione
futura quando dovrà essere stilato l’AS, visto che una delle funzionalità di Axis
è quella di generare automaticamente il WSDL che descrive il servizio.
•
Jaxb: in particolare Jaxme, serie di librerie che si sono rivelate estremamente
utili per gestire in maniera rapida e trasparente stringhe XML e dunque la parte
di estensione della Busta di e-gov rispetto alla busta SOAP.
Sul lato strettamente pratico lo stesso Eclipse si è rivelato un valido ambiente di
sviluppo, viste le ottime funzionalità di supporto alla scrittura di codice, di debug, e di
gestione dei Web Services in fase di rilascio sull’Application Server.
L’utilizzo di strumenti Open Source sembra fondamentale per lo sviluppo di sistemi
interoperabili, vista la necessità dell’utilizzo di standard consolidati ed affermati.
Il lavoro da fare per giungere ad una vera implementazione di riferimento (reference
implementation) è ancora molto, ma i risultati ottenuti in questo lavoro possono essere
di indicazione anche in tal senso.
In conclusione si può affermare che gli obbiettivi che ci si era preposti sono stati
raggiunti con risultati più che soddisfacenti.
Nella prossima sezione saranno proposti possibili sviluppi futuri del progetto SPCoop.
5.2
Sviluppi futuri
Nell’ambito delle attività su SPCoop il CNIPA ha avviato una serie di collaborazioni
con Università ed Enti di ricerca al fine di promuovere il modello anche attraverso
155
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Conclusioni e sviluppi futuri
Vittorio Ottaviani
_______________________________________________________________________
collaborazioni specifiche (stage, tesi di laurea e di dottorato) di cui questo lavoro
rappresenta un primo risultato.
Questa collaborzione vedrà l’Università come uno dei soggetti validatori di modelli ed
eccellenze, ed il CNIPA come promotore di nuovi temi nell’ambito ICT sui quali fare
ricerca.
Sono inoltre stati attivati dei finanziamenti per le regioni al fine di permettere il
potenziamento dei sistemi informativi e di attivare nelle stesse regioni lo sviluppo di
progetti di cooperazione applicativa.
Esistono esperienze di successo, in ambito di cooperazione applicativa, che sono già
state fatte in Toscana, Emilia, Campania e nella provincia autonoma di Trento.
Sarebbe, quindi, auspicabile che al CNIPA, in ambito di cooperazione applicativa, fosse
affidato il ruolo di:
•
promuovere la cooperazione applicativa;
•
organizzare una serie di collaborazioni con il mondo della ricerca;
•
sviluppare una implementazione di riferimento di una PDD;
•
definire una “road-map” per l’evoluzione del modello SPCoop.
Attualmente in ambito SPCoop e più in generale nell’ambito della cooperazione
applicativa in CNIPA i temi di maggiore interesse sono:
•
la definizione di standard, linee guida, e best practices per la definizione e
gestione dei Service Level Agreement (SLA);
•
lo studio di metodologie e modelli per la definizione di Ontologie e
l’applicazione di tecnologie per la “semantizzazione” del SPCoop;
156
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Conclusioni e sviluppi futuri
Vittorio Ottaviani
_______________________________________________________________________
•
la definizione di metodologie e standard per la codifica e la gestione
dell’Accordo di Servizio.
Inoltre, il CNIPA, in collaborazione con le Università, ha intenzione di lanciare il
progetto sperimentale SPCoop Labs, che ha come idea generale quella di istituire
all’interno di Università e centri di ricerca dei laboratori che si occupano di fare ricerca
sui temi attinenti SPCoop.
Altro ambito interessante per il CNIPA e per l’Università è quello dello studio e del
miglioramento dell’Identity Management,in particolare per gli aspetti relativi
all’accesso sicuro ai servizi in rete.
Dal lato Università, in particolare il Dipartimento di Informatica Sistemi e Produzioni
(DISP) della Facoltà di Ingegneria dell’Università di Roma “Tor Vergata”, si è vista la
disponibilità ad approfondire alcuni dei temi di cooperazione applicativa sopra citati,
quali:
•
lo studio degli SLA;
•
la applicazione di metodologie e tecnologie di sicurezza ai sistemi sviluppati;
•
lo studio di Identity Management;
•
la collaborazione per lo sviluppo della gestione degli eventi.
Presso il CNIPA sono attualmente in corso di svolgimento altre due tesi riguardanti la
Porta di Dominio e l’Accordo di Servizio.
Come è stato gia detto in tutta Europa stanno nascendo progetti che si pongono come
obbiettivo quello definire frameworks di interoperabilità per le Pubbliche
Amministrazioni.
157
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Conclusioni e sviluppi futuri
Vittorio Ottaviani
_______________________________________________________________________
In Italia molte aziende private ed Amministrazioni Pubbliche, centrali e locali, stanno
iniziando ad interessarsi allo sviluppo di applicazioni interoperabili secondo il modello
SPCoop.
Basti pensare a progetti di Pota di Dominio come OpenPDD e OpenSPCoop [29] [30],
o le implementazioni di operatori di mercato come Microsoft, IBM, Oracle ed altri.
Anche all’interno della Pubblica Amministrazione ci sono implementazioni di PDD,
quali ad esempio l’implementazione di PDD sviluppata dal Ministero del Tesoro.
In tale ambito, il bisogno di uno sviluppo collaborativo tra Amministrazioni Locali e
operatori di mercato spinge verso l’istituzione di una community di sviluppo, sotto il
coordinamento del CNIPA, per la realizzazione di una reference-implementation. Tale
progetto potrebbe vedere coinvolte anche le università ed enti di ricerca per gli aspetti
avanzati.
In ultimo, sono in via di definizione presso il CNIPA aggiornamenti alle specifiche
della Busta di e-Gov, dunque il presente lavoro dovrà essere rivisto al fine di gestire tali
aggiornamenti.
5.3
Community di Sviluppo
L’idea di sviluppare una community di sviluppo nasce dalla necessità di avere un
sistema che nasca come risultato della collaborazione delle diverse parti in causa nello
sviluppo, in un mondo open source, che sia il più possibile aperto agli input che
vengono dall’esterno e che sia adatto a accettare gli input di nuove tecnologie più
moderne.
Le varie parti in causa nello sviluppo saranno tutti i possibili Stakeholder che possono
venire in mente, come “Vendors”, Amministrazioni Pubbliche, istituzioni private che
158
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Conclusioni e sviluppi futuri
Vittorio Ottaviani
_______________________________________________________________________
usufruiranno dei servizi, cittadini comuni, Università, mondo della ricerca o qualsiasi
sviluppatore che sia interessato a collaborare con un progetto di tale importanza, anche
sociale per il nostro paese e per la Comunità europea.
Per input che vengono dall’esterno si possono citare la nascita di nuovi protocolli, lo
sviluppo di nuove tecnologie etc.
È fondamentale infatti che il SPCoop sia il più possibile all’avanguardia per offrire al
cittadino il miglior servizio possibile a livello di velocità, sicurezza affidabilità e
disponibilità.
Questo spinge a sviluppare un modello collaborativo che permetta ad un pubblico così
eterogeneo di poter scambiare idee ed indicare vie percorribili nella maniera più snella
possibile.
L'idea consiste nel creare una community sul genere di quella fornita agli sviluppatori
di MySql, dove viene reso possibile il confronto tra gli sviluppatori tramite diversi
canali.
Questi canali sono:
•
Forum dove ogni utente o sviluppatore, in relazione al forum con cui si
interagisce, possa sollevare i propri dubbi o problemi affinchè gli altri possano
consigliare soluzioni o fornire aiuto.
•
Mailing lists che forniranno gli stessi servizi del forum solo con la differenza di
avere comodamente le mail sempre disponibili senza necessita di essere
connessi alla rete tutte le volte che si ha bisogno di un'informazione.
•
Blog che avrà le stesse funzionalità degli altri due servizi offerti solo con
metodologie differenti, non sarà più un punto dove richiedere aiuto, ma bensì
dove fornirlo, ogni utente potrà infatti scrivere come ha risolto gli eventuali
159
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Conclusioni e sviluppi futuri
Vittorio Ottaviani
_______________________________________________________________________
problemi riscontrati per dare la possibilità agli altri di usufruire dell'esperienza
acquisita non solo dall'utente ma da tutta la comunità.
•
Canale irc dove gli utenti potranno scambiarsi feedback e trovare aiuto in tempo
reale tra gli altri sviluppatori della community.
•
Sistema CVS che permetterà di avere un controllo sulle versioni del software
che la community sta sviluppando, consentendo il download agli utenti della
versione stabile ed agli sviluppatori delle varie versioni “beta” dei sorgenti da
poter modificare per aggiungere servizi e funzionalità al sistema.
•
Una Wiki dove tutti coloro che vogliono possano immettere e fruire notizie
come viene fatto per wikipedia.
I vari servizi saranno mirati alle differenti tipologie di utenza, sono infatti contemplati
diversi tipi di utenti: utilizzatore, sviluppatore, sviluppatore CNIPA, amministratore, e
altri tipi da definire secondo le necessità future.
Ogni tipologia di utente ha diverse caratterizzazioni nei servizi che verranno offerti, nel
dettaglio le tipologie saranno strutturate in questa maniera:
•
utilizzatore: ha la possibilità di scaricare le versioni stabili del software, i
manuali d'uso, la documentazione e le varie ed eventuali licenze, inoltre per
questa tipologia di utente ciascuno dei servizi accennati sopra, ad esclusione del
CVS al quale non avrà accesso, verrà implementato in maniera da rendere il più
semplice possibile l'utilizzo degli stessi.
160
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Conclusioni e sviluppi futuri
Vittorio Ottaviani
_______________________________________________________________________
o
Una sotto-tipologia di utilizzatore è quello non registrato che può
accedere ai servizi per gli utilizzatori senza possibilità di scrittura
(lasciare messaggi etc...).
•
Sviluppatore: ha la possibilità di scaricare le versioni stabili del software, i
manuali d'uso, la documentazione e le varie ed eventuali licenze, come
l'utilizzatore inoltre per questa tipologia di utente sarà possibile scaricare i
sorgenti del software utilizzando il sistema CVS, gli altri servizi potranno essere
acceduti allo stesso modo dell'utilizzatore, con la possibilità però di avere una
“corsia preferenziale” per servizi dedicati allo sviluppo, come canali irc mailing
lists e forums dedicati.
•
Sviluppatore CNIPA: questo tipo di utente ha un ruolo fondamentale, infatti
sono gli sviluppatori CNIPA a dare le linee guida del progetto e a coordinare gli
altri sviluppatori della community; questa tipologia di utente gode dello stesso
tipo di servizi di uno Sviluppatore, in più collabora attivamente in CNIPA
partecipando alle decisioni che vengono prese sulle vie che il progetto deve
intraprendere.
•
Amministratore: ha la possibilità di usufruire di tutti i servizi forniti, inoltre ha
la responsabilità di gestore del CVS, e dei vari canali di comunicazione tra gli
altri utenti. Decide quando è il momento di effettuare un nuovo rilascio di una
versione in collaborazione con gli sviluppatori e svolge funzione di controllo
sugli utenti. Non è detto che debba essere unico ma la figura dell'amministratore
può essere coperta da un team di persone.
Allo stato attuale sono stati istituiti due servizi per permettere alle
persone
interessate
di
interagire
per
scambiare
notizie
o
suggerimenti. Sono infatti stati posti in essere un Forum [39] ed
161
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Conclusioni e sviluppi futuri
Vittorio Ottaviani
_______________________________________________________________________
una Wiki [40], inoltre sono stati fatti precedentemente a questo
lavoro degli studi per istituire una community e si
giunti alla
soluzione di utilizzare un Project Manager.
Sono stati presi in considerazione differenti prodotti open source
come phprojekt [41], dotproject [42], netoffice [43], gforge [44] ed
altri.
I pi
adatti alle necessit
di sviluppo della community che si
intende realizzare si sono rivelati phproject e gforge; tra i due la
scelta
ricaduta su gforge, questa
attualmente in CNIPA gforge viene gi
stata fatta valutando che
utilizzato per la gestione
della community dell Osservatorio Open Source.
Sembra più economico, dunque, sviluppare elementi dello stesso tipo utilizzando gli
stessi prodotti, in maniera tale da facilitare i compiti di configurazione,
personalizzazione e gestione del team che se ne occuperà.
162
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Bibliografia
Vittorio Ottaviani
_______________________________________________________________________
Bibliografia
Decreti legge
[1]
Decreto legislativo n. 42 del 28 febbraio 2005 Istituzione del Sistema
Pubblico di Connettività e della rete internazionale della Pubblica
Amministrazione, a norma dell'articolo 10, della legge 29 luglio 2003, n. 229,
Gazzetta ufficiale n.73, 30 marzo 2005
http://www.cnipa.gov.it/site/_files/SPC.pdf
[2]
D.Lgs. 7 marzo 2005, n. 82, pubblicato in G.U. del 16 maggio 2005, n. 112 S.O. n. 93 “Codice dell’amministrazione digitale”, aggiornato dal D.Lgs. n.
159 del 4 aprile 2006 pubblicato in G.U. del 29 aprile 2006, n. 99 – S.O. n.
105 "Disposizioni integrative e correttive al decreto legislativo 7 marzo 2005,
n. 82 recante codice dell’amministrazione digitale"
http://www.cnipa.gov.it/site/_files/Codice%20Amministrazione%20Digitale_0
2.pdf
[3]
Legge n. 59 del 15 marzo 1997 Delega al Governo per il conferimento di
funzioni e compiti alle regioni ed enti locali, per la riforma della Pubblica
Amministrazione e per la semplificazione amministrativa, Gazzetta Ufficiale
n. 63 del 17 marzo 1997.
http://www.parlamento.it/leggi/97059l.htm
Documenti rilasciati dal CNIPA
[4]
Gruppo di Lavoro SPC, Sistema Pubblico di Connettività:Scenario
introduttivo, CNIPA, 07 Aprile 2004.
163
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Bibliografia
Vittorio Ottaviani
_______________________________________________________________________
http://www.cnipa.gov.it/site/_files/4.SPC,Scenario%20introduttivo,QS,3.2.pdf
[5]
Gruppo di lavoro per i Servizi di interoperabilità, Sistema Pubblico di
Cooperazione: Architettura, CNIPA, 25 Novembre 2004.
http://www.cnipa.gov.it/site/_files/SPCoop-Architettura_v1.0_20041125_.pdf
[6]
Gruppo di Lavoro SPCoop, Sistema Pubblico di Cooperazione: Accordo di
Servizio, CNIPA, 14 Ottobre 2005.
http://www.cnipa.gov.it/site/_files/SPCoopAccordoServizio_v1.0_20051014.pdf
[7]
Gruppo di Lavoro SPCoop, Sistema Pubblico di Cooperazione: Busta di EGOV, CNIPA, 14 Ottobre 2005.
http://www.cnipa.gov.it/site/_files/SPCoop-Busta%20eGov_v1.1_20051014.pdf
[8]
Gruppo di Lavoro SPCoop, Sistema Pubblico di Cooperazione: Convenzioni
di Nomenclatura e Semantica, CNIPA, 14 ottobre 2005.
http://www.cnipa.gov.it/site/_files/SPCoopNomenclaturaSemantica_v1.0_20051014.pdf
[9]
Gruppo di Lavoro SPCoop, Sistema Pubblico di Cooperazione: Esercizio e
Gestione, CNIPA, 14 Ottobre 2005.
http://www.cnipa.gov.it/site/_files/SPCoopEsercizioGestione_v1.0_20051014.pdf
[10]
Gruppo di lavoro per i Servizi di interoperabilità, cooperazione applicativa ed
accesso del Sistema Pubblico di Connettività e Cooperazione, Sistema
Pubblico di Cooperazione: Organizzazione, CNIPA, 25 Novembre 2005.
164
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Bibliografia
Vittorio Ottaviani
_______________________________________________________________________
http://www.cnipa.gov.it/site/_files/SPCoopOrganizzazione_v1.0_20041125_.pdf
[11]
Gruppo di Lavoro SPCoop, Sistema Pubblico di Cooperazione: Porta di
Dominio, CNIPA, 14 Ottobre 2005.
http://www.cnipa.gov.it/site/_files/SPCoop-PortaDominio_v1.0_20051014.pdf
[12]
Gruppo di Lavoro SPCoop, Sistema Pubblico di Cooperazione: Quadro
Tecnico d’Insieme, CNIPA, 14 Ottobre 2005.
http://www.cnipa.gov.it/site/_files/SPCoopQuadroInsieme_v1%200_20051014.pdf
[13]
Gruppo di Lavoro SPCoop, Sistema Pubblico di Cooperazione: Servizi di
Registro, CNIPA, 14 Ottobre 2005.
http://www.cnipa.gov.it/site/_files/SPCoopServiziRegistro_v1.0_20051014.pdf
[14]
Gruppo di Lavoro SPCoop, Sistema Pubblico di Cooperazione: Servizi di
Sicurezza, CNIPA, 14 Ottobre 2005.
http://www.cnipa.gov.it/site/_files/SPCoopServiziSicurezza_v1.0_20051014.pdf
[15]
Gruppo di Lavoro SPCoop, Sistema Pubblico di Cooperazione: Termini e
Definizioni, CNIPA, 14 Ottobre 2005.
http://www.cnipa.gov.it/site/_files/SPCoopTerminiDefinizioni_v1.0_20051014.pdf
Documenti incontrati sul WEB
165
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Bibliografia
Vittorio Ottaviani
_______________________________________________________________________
[16]
IDABC, presentazione del progetto
http://ec.europa.eu/idabc/en/chapter/5883
[17]
EIF, European Interoperability Framework for pan-European eGovernment
services, Novembre 2004
http://ec.europa.eu/idabc/en/chapter/5883
[18]
IDABC, Open Source Observatory
http://www.cnipa.gov.it/site/_files/SPCoopNomenclaturaSemantica_v1.0_20051014.pdf
[19]
IDABC, E-Government news
http://ec.europa.eu/idabc/en/chapter/194
[20]
Bundesministerium des innern, Standards und Architekturen für EGovernment
http://www.kbst.bund.de/saga
[21]
KBSt unit at the Federal Ministry of the Interior,Standards and Architectures
for eGovernment Applications version 3.0, KBSt publication, ottobre 2006
http://www.kbst.bund.de/cln_047/nn_945224/SharedDocs/Anlagenkbst/Saga/standards-and-Architectures-for-_20e-Government-applicationsversion-3__0-pdf,templateId=raw,property=publicationFile.pdf/standardsand-Architectures-for-%20e-Government-applications-version-3_0-pdf.pdf
[22]
Wikipedia English, Service Oriented Architecture
http://en.wikipedia.org/wiki/Service-oriented_architecture
[23]
Wikipedia Italiano, Service Oriented Architecture
http://it.wikipedia.org/wiki/Service-oriented_architecture
166
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Bibliografia
Vittorio Ottaviani
_______________________________________________________________________
[24]
Csaba Krasznay Budapest University of Technology and Economics Centre of
Information
Technology
Hungary,
Hungarian
Electronic
Public
Administration Interoperability Framework (MEKIK) – Technical Standards
Catalogue, Observatory on interoperable eGovernment services (E-GOVinterop’05 annual conference 23-24 febraio2005 Geneva Switzerland)
http://egovinterop.eupm.net/cdrom/pages/presentations/6b3.ppt
[26]
Zsolt Sikolya, Péter Risztics, Hungarian Electronic Public Administration
Interoperability Framework (MEKIK) – Technical Standards Catalogue
http://www.krasznay.hu/presentation/egovinterop_krasznay.pdf
[27]
e-Government Interoperability Framework Version 6.1, 18 Marzo 2005
http://www.govtalk.gov.uk/documents/eGIF%20v6_1(1).pdf
[28]
Wikipedia English, e-GIF
http://en.wikipedia.org/wiki/E-GIF
[29]
A. Poli, OpenSPCoop: un’implementazione della Specifica di Cooperazione
Applicativa per la Pubblica Amministrazione Italiana, UNIVERSITÀ DI
PISA Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di Laurea
Specialistica in Tecnologie Informatiche, 2005.
http://www.openspcoop.org/openspcoop/download/tesi/TesiAndreaPoli.pdf
[30]
R. Barsacchi, Progettazione di un framework Open Source per la
cooperazione applicativa nella Pubblica Amministrazione, UNIVERSITÀ DI
PISA Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di Laurea
Specialistica in Tecnologie Informatiche, 2005.
http://www.openspcoop.org/openspcoop/download/tesi/TesiRuggeroBarsacchi
.pdf
167
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Bibliografia
Vittorio Ottaviani
_______________________________________________________________________
[31]
Sistema Pubblico di Connettività, pagina introduttiva.
http://www.cnipa.gov.it/site/itIT/In_primo_piano/Sistema_Pubblico_di_Connettivit%c3%a0_(SPC)/
[32]
Servizi di interoperabilità evoluta e cooperazione applicativa, pagina
introduttiva.
http://www.cnipa.gov.it/site/itIT/In_primo_piano/Sistema_Pubblico_di_Connettivit%c3%a0_(SPC)/Servizi_
di_interoperabilit%c3%a0_evoluta_e_cooperazione_applicativa/
[33]
Apache Software Foundation, AXIS documentation users & developers.
http://ws.apache.org/axis/java/index.html
[34]
Sun Developer Network, Java Architecture for XML Binding (JAXB).
http://java.sun.com/webservices/jaxb/
[35]
Jochen Wiedmann, The JAXME 2 Manual, Apache Software Foundation,
2004.
http://ws.apache.org/jaxme/manual/index.html
[36]
Apache Software Foundation, Apache Tomcat Documentation
http://tomcat.apache.org/tomcat-6.0-doc/index.html
[37]
Wikipedia Italia, Web Service.
http://it.wikipedia.org/wiki/Web_service
[38]
Apache Software Foundation, Apache Ant 1.7.0 Manual
http://ant.apache.org/manual/
168
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Bibliografia
Vittorio Ottaviani
_______________________________________________________________________
[39]
pagina principale del forum del SPC
http://forumspc.cnipa.it/forum/
[40]
pagina principale del wiki SPC
http://wikispcoop.cnipa.it/
[41]
pagina principale di phproject
http://www.phprojekt.com/
[42]
pagina principale di dotproject
http://www.dotproject.net/
[43]
pagina principale di netoffice
http://netoffice.sourceforge.net/modules/news/
[44]
pagina principale di gforge
http://gforge.org/
Documenti W3C
[45]
E. Christensen, F. Curbera, G. Meredith, S. Weerawarena, Web Services
Description Language (WSDL) 1.1, W3C, 15 Marzo 2001
http://www.w3.org/TR/wsdl
[46]
D. Box, D. Ehnebuske, G. Kakivaya, A. Layman, N. Mendelsohn, H. F.
Nielsen, S. Thatte, D. Winer, Simple Object Access Protocol (SOAP)1.1,
W3C, 8 Maggio 2000.
http://www.w3.org/TR/2000/NOTE-SOAP-20000508/
169
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Bibliografia
Vittorio Ottaviani
_______________________________________________________________________
[47]
M. Gudgin, M. Hadley, N. Mendelsohn, J. J. Moreau, H. F. Nielsen, Simple
Object Access Protocol (SOAP)1.2, W3C, 24 Giugno 2003.
http://www.w3.org/TR/2003/REC-soap12-part1-20030624/
[48]
L. Clement, A. Hately, C. von Riegen, T. Rogers, UDDI Version 3.0.2, UDDI
Spec Technical Committee Draft, 19 ottobre2004.
http://uddi.org/pubs/uddi-v3.0.2-20041019.htm
[49]
K. Lawrence, C. Kaler, Web Services Security: SOAP Message Security 1.1,
OASIS Standard Specification, 1 febbraio 2006.
http://www.oasis-open.org/committees/download.php/16790/wss-v1.1-specos-SOAPMessageSecurity.pdf
[50]
K. Iwasa, Web Services Reliable Messaging TC WS-Reliability 1.1, OASIS
Standard Specification, 15 novembre 2004.
http://docs.oasis-open.org/wsrm/ws-reliability/v1.1/wsrm-ws_reliability-1.1spec-os.pdf
[51]
D.L. McGuinness, F. van Harmelen, OWL Web Ontology Language
Overview, W3C Recommendation, 10 febbraio 2004
http://www.w3.org/TR/owl-features/
Libri di testo consultati
[52]
C. F. Goldfarb, P. Prescod, XML, Mc. Graw Hill, Febbraio 1999.
[53]
P. Krutchen, The Rational Unified Process: An Introduction, AddisonWesley, 2000.
170
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Bibliografia
Vittorio Ottaviani
_______________________________________________________________________
[54]
G. Booch, J. Rumbaugh, I. Jacobson, The Unified Modeling Language User
Guide, Addison-Wesley.
[55]
M. Page-Jones, Progettazione OO con UML, Apogeo, 2002.
[56]
H. Schildt, Java 2 la guida completa 4°edizione, Mc Graw Hill, 2001.
171
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Vittorio Ottaviani
_______________________________________________________________________
Indice analitico delle figure
Figura 1: Possibile architettura di una SOA (fonte: Wikipedia)...................................... 9
Figura 2: Paradigma Find-Bind-Execute ....................................................................... 13
Figura 3: Architettura del Sistema SAGA [21].............................................................. 14
Figura 4: Pila SPC.......................................................................................................... 16
Figura 5: Esempio di una QXN del Sistema Pubblico di Connetività........................... 20
Figura 6: Modello Architetturale del SPCoop ............................................................... 29
Figura 7: Architettura dei servizi SICA ......................................................................... 32
Figura 8: Esempio di comunicazione tra porte .............................................................. 33
Figura 9: Modalità di Erogazione di un Servizio........................................................... 38
Figura 10 : Struttura completa di un Accordo di Servizio ............................................. 42
Figura 11: Busta SOAP.................................................................................................. 44
Figura 12: Intestazione................................................................................................... 46
Figura 13: IntestazioneMessaggio ................................................................................. 47
Figura 14: Comunicazione tra Porte di Dominio........................................................... 52
Figura 15: Interazione tra Registro Generale e Registri Secondari ............................... 56
Figura 16: Porta di Dominio come Strato Protocollare ................................................. 60
Figura 17: Porta di Dominio come Proxy Applicativo .................................................. 62
Figura 18: Comunicazione Messaggio Singolo ............................................................. 63
Figura 19: Comunicazione Sincrona.............................................................................. 63
Figura 20: Comunicazione Asincrona Simmetrica ........................................................ 64
Figura 21: Comunicazione Asincrona Asimmetrica...................................................... 65
Figura 22: Vista generale degli Use Case ...................................................................... 67
Figura 23: Use Case Trasmetti Messaggio .................................................................... 68
Figura 24: Use Case Ricevi Messaggio ......................................................................... 69
Figura 25: Use Case Gestione Tracciamenti.................................................................. 71
Figura 26: Use Case Gestione Diagnostici .................................................................... 72
Figura 27: Sequence diagram del caso di comunicazione a messaggio singolo
(trasmissione)......................................................................................................... 74
Figura 28: Sequence diagram del caso di comunicazione a messaggio singolo
(ricezione) .............................................................................................................. 76
Figura 29: Sequence diagram del caso di comunicazione sincrona (trasmissione) ....... 78
Figura 30: Sequence diagram del caso di comunicazione sincrona (ricezione) ............ 81
Figura 31: Sequence diagram del caso di comunicazione asincrona simmetrica
(trasmissione)......................................................................................................... 83
Figura 32: Sequence diagram del caso di comunicazione asincrona simmetrica
(ricezione) .............................................................................................................. 85
172
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Indice analitico delle figure
Vittorio Ottaviani
_______________________________________________________________________
Figura 33: Sequence diagram del caso di comunicazione asincrona asimmetrica
(trasmissione)......................................................................................................... 87
Figura 34: Sequence diagram del caso di comunicazione asincrona asimmetrica
(ricezione) .............................................................................................................. 91
Figura 35: Architettura della Porta di Dominio ........................................................... 109
Figura 36: Strumenti utilizzati per realizzare l’architettura della Porta di Dominio ... 111
Figura 37: Schema di funzionamento di JAXME........................................................ 115
Figura 38: Schema di funzionamento del processo di serializzazione/deserializzazione
.............................................................................................................................. 116
Figura 39: Output sull’Application Server (caso Messaggio Singlo).......................... 136
Figura 40: Configurazione di eclipse per il deploy automatico.................................. 151
173
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Glossario
Vittorio Ottaviani
_______________________________________________________________________
Glossario
I. ACoop Accordo di Cooperazione.
II. AS Accordo di Servizio.
III. Accordo di Cooperazione Un Accordo di Cooperazione è la specifica dei
servizi applicativi, composti e coordinati, offerti da un Dominio di
Cooperazione (per dettagli, vedi documenti QUADRO D’INSIEME e
ACCORDO DI SERVIZIO).
IV. Accordo di servizio Definizione delle funzionalità, interfacce, requisiti di
sicurezza e di qualità di uno o più servizi applicativi che vengono scambiati tra
due amministrazioni pubbliche (per dettagli, vedi documenti QUADRO
D’INSIEME e ACCORDO DI SERVIZIO).
V. Applicazione
Interdominio Applicazione Informatica che si basa su
programmi che operano in domini diversi.
VI. Attori dell’Interazione Ruoli di erogazione (erogatore) e fruizione (fruitore) di
uno o più servizi applicativi.. Sono di norma costituiti da applicazioni
informatiche ad hoc.
VII. Autenticazione Operazione mediante cui è possibile verificare l’attendibilità di
un identificativo, riferito ad una persona o ad un sistema elaborativo, associato
ad una transazione o ad un messaggio. L’autenticazione è il mezzo attraverso
cui il destinatario di una transazione o di un messaggio può decidere se accettare
o meno tale transazione.
VIII. Autorizzazione Operazione con cui un dominio di sicurezza decide se accettare
o meno la richiesta di attivazione di una determinata operazione informatica
proveniente da un messaggio o una transazione.
IX. Busta di eGov Protocollo applicativo, specificatamente progettato per SPCoop,
con cui i servizi applicativi sono invocabili remotamente: è una estensione dello
standard SOAP, necessaria al fine di supportare la sicurezza point-to-point,
174
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Glossario
Vittorio Ottaviani
_______________________________________________________________________
l’affidabilità della trasmissione e la tracciatura di tutte le comunicazioni (aspetti
avanzati non ancora standardizzati).
X. Catalogo degli Schemi/Ontologie Il Catalogo degli Schemi/Ontologie è il
componente software che offre funzionalità per “ragionare” sulla semantica dei
servizi e delle informazioni da essi veicolati, ai fini della individuazione dei
servizi migliori candidati all’erogazione delle prestazioni richieste. Funge,
quindi, da struttura di memorizzazione delle ontologie e degli schemi
concettuali, offrendo le funzionalità di registrazione, accesso, aggiornamento,
cancellazione, ricerca e ragionamento su di essi.
XI. Contratto di Servizio Vedi Accordo di Servizio.
XII. Cooperazione applicativa Condizione per cui è possibile rendere disponibili
servizi informatici utilizzando le funzioni di due o più applicazioni progettate
per erogare servizi singolarmente.
XIII. DC Dominio di Cooperazione.
XIV. Dominio di Cooperazione Insieme di amministrazioni che cooperano per
l’automazione di un insieme di procedimenti amministrativi. Vedi DOMINIO
(Glossario).
XV. Dominio di Gestione Insieme di sistemi elaborativi, delle applicazioni e delle
procedure che vengono gestiti da una stessa organizzazione. Vedi DOMINIO
(Glossario).
XVI. Dominio dei Servizi Applicativi Insieme dei servizi applicativi erogati dalla
singola amministrazione in ambito SPCoop. Vedi DOMINIO (Glossario).
XVII. Dominio di Sicurezza Insieme di sistemi elaborativi, delle applicazioni e delle
procedure le cui regole di sicurezza ricadono sotto la responsabilità di una stessa
organizzazione.
XVIII. DSA Dominio dei Servizi Applicativi.
XIX. Erogatore Attore dell’interazione tra servizi applicativi: fornisce informazioni a
chi le richiede, ovvero ad un attore richiedente che di norma è il Fruitore.
XX. Fruitore Attore dell’interazione tra servizi applicativi: richiede informazioni ad
un secondo attore, il quale a fronte di interazione con i propri sistemi legacy,
175
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Glossario
Vittorio Ottaviani
_______________________________________________________________________
eroga (Erogatore) successivamente il servizio richiesto all’attore richiedente, il
quale dunque fruisce del servizio (Fruitore).
XXI. ICP Infrastruttura a Chiave Pubblica. Vedi PKI (Glossario).
XXII. ICP SICA Servizi SICA di infrastruttura a chiave pubblica.
XXIII. Identificazione Operazione che consiste nell’associare ad una transazione o ad
un messaggio un identificativo attribuibile alla persona o al sistema elaborativo
che ha originato la transazione o il messaggio.
XXIV. Incapsulamento Vedi WRAPPING.
XXV. Indice della PA Nell'IndicePA è descritta la struttura organizzativa di ciascuna
amministrazione accreditata, con l'articolazione gerarchica delle varie unità o
uffici. Per ciascuna unità sono disponibili gli indirizzi delle caselle di Posta
Elettronica Certificata (P.E.C.) attive e di eventuali servizi applicativi resi
disponibili on-line. L'IndicePA costituisce, quindi, un punto di riferimento per
l'individuazione e l'accesso alle strutture organizzative e ai servizi telematici
offerti dalla Pubblica Amministrazione centrale e locale. Nell'IndicePA sono,
inoltre, pubblicate tutte le informazioni necessarie per lo scambio di messaggi di
posta elettronica attraverso le caselle istituzionali associate ai sistemi di
protocollo informatico. (Vedi http://www.indicepa.gov.it/).
XXVI. Indice dei Soggetti Insieme di funzionalità necessarie a gestire la “rubrica”
degli operatori della PA. Oltre ad offrire funzionalità di registrazione, accesso,
aggiornamento, cancellazione e ricerca delle informazioni relative agli operatori
(ad es., nome, cognome, riferimenti telefonici ed e-mail, funzioni,
responsabilità, mansioni, etc.), una funzionalità fondamentale offerta da questo
componente infrastrutturale è la gestione dell’identità elettronica del soggetto
(identity management), che è necessaria per poter poi costruire appropriate
politiche di sicurezza (in particolare autenticazione ed autorizzazione) per
l’accesso ai servizi applicativi.
XXVII. Infrastruttura unitaria di Servizi di Interoperabilità Cooperazione e
Accesso Insieme di risorse e di strumenti che abilitano la cooperazione tra
domini diversi rendendo disponibili servizi applicativi comuni (Vedi SICA).
176
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Glossario
Vittorio Ottaviani
_______________________________________________________________________
XXVIII. Indirizzo di Risorsa Vedi URI (Glossario).
XXIX. Interoperabilità Capacità di una applicazione di sfruttare le funzioni di un’altra
applicazione; si dice che A e B interoperano se A è in grado di utilizzare le
funzioni di B e viceversa.
XXX. Messaggio Applicativo Contenuto informativo per erogazione di un servizio
applicativo, che viene scambiato tramite Busta di eGov tra le Porte di Dominio
dei due attori dell’interazione (Erogatore e Fruitore).
XXXI. Ontologia Descrive la semantica dei servizi e delle informazioni da essi
veicolati, ovvero la tipologia di informazioni che il servizio è in grado di
veicolare. Consente di compiere operazioni di “ragionamento” (semi)automatico sulla base di tali informazioni.
XXXII. PD Porta di Dominio.
XXXIII. Porta di dominio La porta di dominio rappresenta un elemento concettuale che
ha la funzione di proxy per l’accesso alle risorse applicative del dominio. Fa
parte del modello organizzativo di SPCoop e, come tale, trova naturalmente
posto nella progettazione concettuale piuttosto che in quella logica o fisica. La
PD può essere ricoprire due ruoli:
ƒ
Porta Applicativa: Ruolo assunto da una porta di dominio di SPCoop
nell’ambito di un episodio di collaborazione applicativa. Assume tale ruolo
la porta di dominio che, a seguito della ricezione di un messaggio di
richiesta proveniente da un’altra porta di dominio (porta delegata) invia al
mittente un messaggio di risposta.
ƒ
Porta Delegata: Ruolo assunto da una porta di dominio di SPCoop
nell’ambito di un episodio di collaborazione applicativa. Assume tale ruolo
la porta di dominio che origina un messaggio di richiesta (di servizio)
destinato ad un’altra porta di dominio (porta applicativa).
(per dettagli, vedi documento PORTA DI DOMINIO).
XXXIV. Processo Insieme di attività tra loro correlate, finalizzate al raggiungimento di
un obiettivo predefinito.
177
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Glossario
Vittorio Ottaviani
_______________________________________________________________________
XXXV. Profilo di Accesso Insieme di informazioni che qualificano il soggetto (persona
o sistema elaborativo) che ha dato origine ad un messaggio o ad una
transazione. Il profilo di accesso ha la finalità di fornire le informazioni
necessarie per il processo di autorizzazione.
XXXVI. Registro SICA Servizi SICA di Registrazione e Ricerca. Vedi SICA.
XXXVII. Relazione di servizio Relazione che lega due attori dell’interazione, all’interno
della quale uno di loro assume il ruolo di erogatore e l’altro di fruitore.
XXXVIII. Riconoscimento (Vedi anche Identificazione) Attività che consente di
determinare l’identità di un soggetto.
XXXIX. Rubrica della PA Directory dei dipendenti della PA Centrale. Primo embrione
di un sistema di Identity Management.
XL. RUPA Rete Unitaria della Pubblica Amministrazione.
XLI. Semantica dei Servizi e delle Informazioni Vedi Ontologia.
XLII. Servizi Asincroni Modalità di erogazione dei servizi applicativi tra le porte di
dominio delle amministrazioni, secondo il sistema di coordinamento e gestione
proprio dio SPCoop (per dettagli, vedi documento ESERCIZIO E GESTIONE).
XLIII. Servizi di Registro I Servizi di Registro sono una delle componenti dei Servizi
Infrastrutturali SICA in cui gli Accordi di Servizio (e di Cooperazione) vengono
registrati e mantenuti (a meno della loro componente semantica). Costituiscono,
di fatto, la base di dati della cooperazione. Offrono funzionalità per la
registrazione, l’accesso, l’aggiornamento, la cancellazione e la ricerca degli
Accordi di Servizio (e di Cooperazione). (per dettagli, vedi documenti
QUADRO D’INSIEME e SERVIZI DI REGISTRO).
XLIV. Servizi Sincroni Modalità di erogazione dei servizi applicativi tra le porte di
dominio delle amministrazioni, secondo il sistema di coordinamento e gestione
proprio di SPCoop (per dettagli, vedi documento ESERCIZIO E GESTIONE).
XLV. Servizi di Interoperabilità, Cooperazione ed Accesso
ƒ
Servizi di rete, erogati con livello di qualità predefinito in termini di
sicurezza, disponibilità ed affidabilità, per l’integrazione di sistemi e servizi
informativi eterogenei per la realizzazione di servizi applicativi compositi.
178
Tesi di Laurea
Ingegneria Informatica Università di Roma ”Tor Vergata”
Glossario
Vittorio Ottaviani
_______________________________________________________________________
ƒ
Sviluppo di applicazioni distribuite basate sull’interazione di servizi di rete
con livelli di qualità, sicurezza ed affidabilità predefiniti.
ƒ
Ricerca ed accesso a servizi di rete erogati da diversi soggetti per la
realizzazione di servizi integrati e compositi a valore aggiunto (per dettagli,
vedi documenti QUADRO D’INSIEME e SERVIZI DI REGISTRO).
XLVI. SICA Vedi Servizi di Interoperabilità, Cooperazione ed Accesso.
XLVII. SICA generale Servizi di Registro SICA a livello centrale (per dettagli, vedi
documenti QUADRO D’INSIEME e SERVIZI DI REGISTRO).
XLVIII. SICA secondari Servizi di Registro SICA a livello locale (per dettagli, vedi
documenti QUADRO D’INSIEME e SERVIZI DI REGISTRO).
XLIX. Sistema Pubblico di Connettività e Cooperazione Il Sistema Pubblico di
Connettività e Cooperazione, evoluzione della RUPA, il cui obbiettivo è
promuovere l’interazione tra le reti regionali, territoriali e delle P.A. centrali,
per conseguire economie di scala nell’utilizzo dei servizi di rete, assicurando
l’interoperabilità e standard comuni di funzionalità e sicurezza. Decreto
Legislativo 28 febbraio 2005, n. 42, pubblicato nella Gazzetta Ufficiale della
Repubblica Italiana – Serie Generale - del 30 marzo 2005, n. 73.
L. SPC Sistema Pubblico di Connettività e Cooperazione.
LI. SPConn Sistema Pubblico di Connettività: sottosistema del SPC, che
comprende i servizi di connettività ed interoperabilità di base.
LII. SPCoop Sistema Pubblico di Cooperazione: sottosistema del SPC che
comprende i sistemi di interoperabilità avanzata e di cooperazione applicativa.
LIII. Transazione Insieme di messaggi correlati che svolgono un’operazione
elementare unitaria che mantiene la consistenza della base informativa.
LIV. Wrapping Insieme di attività di predisposizione delle applicazioni legacy in
uso, al fine di renderle accessibili da parte di servizi applicativi sviluppati ad es.
con tecnologie open e standard di mercato tipo Web Services.
Il presente glossario è un estratto da [15] con il gentile permesso del Gruppo di
Lavoro SPCoop.
179