SuapFD
SuapFD
SUAP
20/01/2012
SuapFD
Sommario
Sommario ....................................................................... 1
Descrizione del sistema .................................................. 3
Attori............................................................................... 4
Profili applicativi ............................................................. 4
Macrofunzionalità .......................................................... 4
Funzionalità .................................................................... 4
Componenti utilizzate, stack tecnologico....................... 6
Architettura del sistema ................................................. 8
Architettura logica .......................................................... 8
Modello dati ................................................................... 9
Deployment diagram logico ......................................... 10
Casi d’uso...................................................................... 10
Diagramma UC.............................................................. 11
Caso d’uso 1 – richiedi attributi.................................... 12
Descrizione del caso d’uso ............................................ 12
Sequence Diagram........................................................ 13
Esempio di richiesta ...................................................... 13
Esempio di risposta ....................................................... 13
Caso d’uso 2 – richiedi valore attributi per CF ............. 14
Descrizione del caso d’uso ............................................ 14
Sequence Diagram........................................................ 15
Esempio di richiesta ...................................................... 16
Esempio di risposta ....................................................... 16
Caso d’uso 3 – notifica variazione attributi .................. 17
20/01/2012
1
SuapFD
Descrizione del caso d’uso ............................................ 17
Sequence Diagram........................................................ 18
Esempio di richiesta ...................................................... 19
Esempio di risposta ....................................................... 20
20/01/2012
2
SuapFD
Descrizione del sistema
L’applicazione SuapFD è il sistema di
certificazione ruoli per quanto riguarda
gli operatori e gli esperti SUAP.
Il SuapFD coopera via CART per mezzo
delle RFC 146 e 156 con il Role Manager
dell’infrastruttura ARPA.
Di fatto il sistema realizza una componente di service integration che svolge una business unit
work specializzata e distribuita facente parte della funzionalità di business del Role Manager di
certificazione ruoli.
Il SuapFD implementa sia i servizi di richiesta attributi e richiesta valore attributi per codice
fiscale (RFC 146) che il client per l’interrupt da fonte dati (RFC 156) per entrambe le categorie
di utenti che devono essere certificati. Di fatto abbiamo: la fonte dati operatori SUAP (FDOS) e
la fonte dati esperti SUAP (FDES).
Poiché le fonti dati espongono lo stesso contratto, per quanto riguarda la RFC 146, e scambiano
la stessa tipologia di messaggi, il sistema è stato implementato come un sistema multi-service
con un dispatcher in grado di intercettare qual è il servizio richiesto.
In maniera analoga, il client che colloquia con il Role Manger e che implementa la RFC 156
risulta essere solamente uno; a seconda degli attributi che sono stati modificati che
appartengono a una fonte dati, la variazione viene veicolata utilizzando un account di fruizione
piuttosto che un altro.
Lo schema dati del SuapFD modella i dati relativi agli attributi del Ruolo che certifica e al valore
che essi assumono per lo specifico codice fiscale dell’utente. A loro volta gli attributi vengono
collegati alla corrispettiva fonte dati per mezzo di alias; per ogni fonte dati si ha un legame con
la spettante istanza di interrupt da fonte dati.
20/01/2012
3
SuapFD
Attori
Entrambi gli attori coinvolti sono sistemi informatici.
Role Manager
Il Role Manager di ARPA fruisce via CART mediante RFC 146 i servizi erogati dal SuapFD per le
fonti dati FDES e FDOS .
SuapFD
Il SuapFD fruisce via CART mediante RFC 156 il servizio di ricezione interrupt da fonte dati per le
fonti dati FDES e FDOS.
Profili applicativi
Il SuapFD non necessita di profilatura applicativa poiché eroga servizi applicativi e a sua volta
fruisce servizi. La modalità di fruizione è via CART in basic authentication .
Macrofunzionalità
1.
Richiesta attributi gestiti dalla fonte dati
2.
Richiesta valore attributi per specifico codice fiscale
3.
Notifica variazione valore attributo
Le funzionalità si attivano con profilo sincrono , l’invio della richiesta e della risposta non sono
citate nella tabella a seguire.
Funzionalità
nome
descrizione
Fonte dati
FDES
FDOS






Richiesta attibuti – checkRequest
validazione della request
Richiesta attibuti – getAttributes
recupero attributi dal db
Richiesta attibuti – buildResponse
costruzione della risposta da inviare al Role Manager
20/01/2012
4
SuapFD
Richiesta valore attibuti CF – checkRequest


















validazione della request
Richiesta valore attibuti CF – getAttributesValues
recupero valori attributi dal db per codice fiscale
Richiesta valore attibuti CF – buildResponse
costruzione della risposta da inviare al Role Manager
Richiesta valore attibuti CF – checkResponse
validazione della response
Notifica variazione valore attributo – getToSend
recupero degli attributi che devono essere trasmessi dal db
Notifica variazione valore attributo – buildResponse
costruzione della risposta da inviare al Role Manager
Notifica variazione valore attributo – checkResponse
validazione della response
Notifica variazione valore attributo – putVarizione
invio della notifica al Role Manager
Notifica variazione valore attributo – updateTrasmesso
I'aggiornamento delle notifiche in stato trasmesso
20/01/2012
5
SuapFD
Componenti utilizzate, stack tecnologico
Hibernate è una piattaforma middleware open source per lo sviluppo di applicazioni Java che
fornisce un servizio di Object-relational mapping (ORM), ovvero che gestisce la rappresentazione
e il mantenimento su database relazionale di un sistema di oggetti Java.
Lo scopo principale di Hibernate è quello di fornire un mapping delle classi Java in tabelle di un
database relazionale; sulla base di questo mapping Hibernate gestisce il salvataggio degli oggetti
di tali classi su database. Si occupa inoltre del reperimento degli oggetti da database,
producendo ed eseguendo automaticamente le query SQL necessarie al recupero delle
informazioni e la successiva reistanziazione dell'oggetto precedentemente "ibernato" (mappato
su database).
L'obiettivo di Hibernate è quello di esonerare lo sviluppatore dall'intero lavoro relativo alla
persistenza dei dati. Hibernate si adatta al processo di sviluppo del programmatore, sia se si
parte da zero sia se da un database già esistente. Hibernate genera le chiamate SQL e toglie lo
sviluppatore dal lavoro di recupero manuale dei dati e dalla loro conversione, mantenendo
l'applicazione portabile in tutti i database SQL.
Hibernate è tipicamente usato in applicazioni Java EE facenti uso di servlet o EJB session beans.
Axis2 è una piattaforma middleware open source per lo sviluppo di web services che supporta
tutti gli standard dei web-services come :










WS - ReliableMessaging - Via Apache Sandesha2
WS - Coordination - Via Apache Kandula2
WS - AtomicTransaction - Via Apache Kandula2
WS - SecurityPolicy - Via Apache Rampart
WS - Security - Via Apache Rampart
WS - Trust - Via Apache Rampart
WS - SecureConversation - Via Apache Rampart
SAML 1.1 - Via Apache Rampart
SAML 2.0 - Via Apache Rampart
WS - Addressing - Module included as part of Axis2 core
Inoltre implementa /supporta una serie di features come :








Speed – Via StAX (Streaming API for XML)
Low memory foot print
AXIOM
Hot Deployment
Asynchronous Web services
MEP Support
Stability
Component-oriented Deployment
20/01/2012
6
SuapFD



Transport Framework
WSDL support – version 1.1 e 2.0
Composition and Extensibility
Quartz è una libreria Open Source che permette di schedulare Job (processi) scritti in Java, e
può essere utilizzata in qualsiasi applicazione Java sia di tipo Enterprise (J2EE) che stand alone
(J2SE). L’esecuzione di un Job avviene quando il Trigger ad esso associato scatta. E’ possibile
creare dei Trigger che scattino all’accadere delle più disparate combinazioni di eventi.
Il deliverable del SuapFD viene assemblato come un Web archive (WAR) e dispiegato su un
tomcat6 presso RT. Come db viene utilizzato DB2.
20/01/2012
7
SuapFD
Architettura del sistema
In questa sezione vengono presentati alcune figure logiche relative all’architettura del sistema
SuapEngine.
Architettura logica
Figura 1 Architettura logica sistema
20/01/2012
8
SuapFD
Modello dati
Figura 2 Modello dati db fdsuap
20/01/2012
9
SuapFD
Deployment diagram logico
Figura 3 Deployment logico del sistema
Casi d’uso
Di seguito verranno descritti i casi d’uso delle funzionalità implementate dal sistema.
Entrambi i casi d’uso sono equivalenti sia per la fonte dati FDES che la fonte dati FDOS.
20/01/2012
10
SuapFD
Diagramma UC
Figura 4 Diagramma dei casi d’uso semplice
Figura 5 Diagramma dei casi d’uso dettaglio attori
20/01/2012
11
SuapFD
Caso d’uso 1 – richiedi attributi
Descrizione del caso d’uso
Titolo
Richiesta attributi gestiti dalla fonte dati
Descrizione
L’attore invoca la fonte dati per chiedere gli
attributi che gestisce
Precondizioni
I parametri in ingresso richiesti devono essere
forniti e devono essere corretti
Postcondizioni
Attori
SuapFD, Cart Porta delegata, Role Manager
Note
--
Scenario principale
A1. Il RoleManager chiama il CART il quale a sua volta veicola la richiesta verso l’endpoint dove
risponde il servizio SuapFD per FDES e FDOS.
A2. Il SuapFD intercetta quale fonte dati è stata invocata e veicola la richiesta al dispatcher.
A3. Il SuapFD (FDES/FDOS) verifica che i dati passati in ingresso siano corretti e conformi alle
specifiche.
A4. Il SuapFD (FDES/FDOS) recupera i dati sul db.
A5. Il SuapFD (FDES/FDOS) costruisce il messaggio di risposta.
A6. Il SuapFD (FDES/FDOS) ritorna al CART il messaggio contenente la risposta generata.
A7. Il CART inoltra il messaggio al RoleManager
Scenario alternativo 1
A1. Viene sollevato un messaggio di errore gestito.
A2. Il SuapFD (FDES/FDOS) ritorna al CART il messaggio vuoto conforme alla RFC 146.
A3. Il CART inoltra il messaggio al RoleManager.
Scenario alternativo 2
A1. La ricerca sul db produce un risultato vuoto.
A2. Il SuapFD (FDES/FDOS) ritorna al CART il messaggio vuoto conforme alla RFC 146.
20/01/2012
12
SuapFD
A3. Il CART inoltra il messaggio al RoleManager.
Sequence Diagram
Nel diagramma vengono riportati i passaggi per la richiesta degli attributi gestiti dalla fonte dati.
L’esempio riporta lo scenario principale per la fonte dati FDES. Per la fonte dati FDOS il
diagramma è analogo.
Figura 6 Richiesta attributi gestiti dalla fonte dati
Esempio di richiesta
<ser:getUserAttributes />
Esempio di risposta
<ns1:getUserAttributesResponse xmlns:ns1="http://service.fontedati.arpa.eng.it">
<getUserAttributesReturn soapenc:arrayType="soapenc:string[4]" xsi:type="soapenc:Array"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
<getUserAttributesReturn
xsi:type="soapenc:string">AMBITO_SUAP</getUserAttributesReturn>
<getUserAttributesReturn
xsi:type="soapenc:string">ENTE_SUAP</getUserAttributesReturn>
20/01/2012
13
SuapFD
<getUserAttributesReturn xsi:type="soapenc:string">Funzioni</getUserAttributesReturn>
<getUserAttributesReturn
xsi:type="soapenc:string">Mail_Istituzionale</getUserAttributesReturn>
</getUserAttributesReturn>
</ns1:getUserAttributesResponse>
Caso d’uso 2 – richiedi valore attributi per CF
Descrizione del caso d’uso
Titolo
Richiesta valore attributi gestiti dalla fonte
dati per specifico codice fiscale
Descrizione
L’attore invoca la fonte dati per chiedere la
lista dei valori degli attributi e la loro validità
per lo specifico codice fiscale
Precondizioni
I parametri in ingresso richiesti devono essere
forniti e devono essere corretti
Postcondizioni
Attori
SuapFD, Cart Porta delegata, Role Manager
Note
--
Scenario principale
A1. Il RoleManager chiama il CART il quale a sua volta veicola la richiesta verso l’endpoint dove
risponde il servizio SuapFD per FDES e FDOS.
A2. Il SuapFD intercetta quale fonte dati è stata invocata e veicola la richiesta al dispatcher.
A3. Il SuapFD (FDES/FDOS) verifica che i dati passati in ingresso siano corretti e conformi alle
specifiche.
A4. Il SuapFD (FDES/FDOS) recupera i dati sul db.
A5. Il SuapFD (FDES/FDOS) costruisce il messaggio di risposta.
A6. Il SuapFD (FDES/FDOS) valida il messaggio di risposta.
A7. Il SuapFD (FDES/FDOS) ritorna al CART il messaggio contenente la risposta generata.
A8. Il CART inoltra il messaggio al RoleManager
20/01/2012
14
SuapFD
Scenario alternativo 1
A1. Viene sollevato un messaggio di errore gestito.
A2. Il SuapFD (FDES/FDOS) ritorna al CART il messaggio vuoto conforme alla RFC 146.
A3. Il CART inoltra il messaggio al RoleManager.
Scenario alternativo 2
A1. La ricerca sul db produce un risultato vuoto.
A2. Il SuapFD (FDES/FDOS) ritorna al CART il messaggio vuoto conforme alla RFC 146.
A3. Il CART inoltra il messaggio al RoleManager.
Sequence Diagram
Nel diagramma vengono riportati i passaggi relativi alla richiesta dei valori degli attributi per lo
specifico codice fiscale. L’esempio riporta solo lo scenario principale per la fonte dati FDES. Per
la fonte dati FDOS il diagramma è analogo.
Figura 7 Richiesta valore attributi per codice fiscale
20/01/2012
15
SuapFD
Esempio di richiesta
<ser:getAttributesValues >
<cf xsi:type="xsd:string">XXXXBA82E28G793B</cf>
<attributesName xsi:type="ser:ArrayOfString" soapenc:arrayType="xsd:string[]">
<attribute>AMBITO_SUAP</attribute>
<attribute>Mail_Istituzionale</attribute>
<attribute>Funzioni</attribute>
<attribute>ENTE_SUAP</attribute>
</attributesName>
</ser:getAttributesValues>
Esempio di risposta
<ns1:getAttributesValuesResponse xmlns:ns1="http://service.fontedati.arpa.eng.it">
<getAttributesValuesReturn xsi:type="xsd:string"><![CDATA[<?xml version="1.0"
encoding="UTF-8"?>
<lista_attributi>
<CodiceFiscale>XXXXBA82E28G793B</CodiceFiscale>
<attributo nome="ENTE_SUAP">
<valore>13.13.1.M.999.999999</valore>
<fine_validita>2012-01-20T15:54:31</fine_validita>
</attributo>
<attributo nome="AMBITO_SUAP">
<valore>13.13.1.M.999.999999</valore>
<valore>13.13.1.M.000.053004</valore>
<valore>13.13.1.M.000.048004</valore>
<valore>13.13.1.M.001.049005</valore>
<valore>13.13.1.M.000.045003</valore>
<fine_validita>2012-01-20T15:54:31</fine_validita>
20/01/2012
16
SuapFD
</attributo>
<attributo nome="Funzioni">
<valore>RespSUAP</valore>
<valore>OpSUAP</valore>
<fine_validita>2012-01-20T15:54:31</fine_validita>
</attributo>
<attributo nome="Mail_Istituzionale">
<valore>[email protected]</valore>
<fine_validita>2012-01-20T15:54:31</fine_validita>
</attributo>
<data_generazione>2012-01-19T15:54:31</data_generazione>
<id_fonte_dati>Fonte dati operatore SUAP</id_fonte_dati>
</lista_attributi>
</getAttributesValuesReturn>
</ns1:getAttributesValuesResponse>
Caso d’uso 3 – notifica variazione attributi
Descrizione del caso d’uso
Titolo
Notifica variazione valore attributi gestiti dalla
fonte dati al Role Manager
Descrizione
Il sistema SuapFD intercetta un evento di
modifica del valore di uno o più attributi della
fonte dati. Viene notificata la variazione al
Role Manager.
Precondizioni
I parametri in ingresso richiesti devono essere
forniti e devono essere corretti
Postcondizioni
Attori
SuapFD, Cart Porta delegata, Role Manager
20/01/2012
17
SuapFD
Note
--
Scenario principale
A1. Viene intercettata la modifica di un attributo.
A2. Viene scritto
trasmettere.
il nuovo valore dell’attributo sulla tabella TRASMISSIONE in stato da
A3. Si attiva il trigger relativo al job di controllo.
A4. Il job di controllo recupera la trasmissione.
A5. Il job di controllo costruisce il messaggio da inviare.
A6. Il job di controllo valida il messaggio da inviare.
A7. Il job di controllo decodifica quale credenziali utilizzare per fruire la RFC 156.
A8. Il job di controllo invoca il client che effettua la trasmissione delle variazione sul CART.
A9. Il job di controllo aggiorna lo stato della trasmissione a trasmessa.
A10. Il CART inoltra il messaggio al Role Manager.
Punto di estensione 1 (A4)
A4.1 Nel caso in cui per lo stesso attributo sono presenti più variazioni si prende quella più
recente ponendo a trasmessa lo stato di quelle meno recenti.
Scenario alternativo 1
A1. Viene sollevato un messaggio di errore gestito.
A2. Si ripete lo scenario principale.
Scenario alternativo 2
A1. Viene sollevato un messaggio di errore non gestito.
A2. Si ripete lo scenario principale.
Sequence Diagram
Il diagramma non mostra la fase di modifica dei valore degli attributi poiché il caso d’uso
principale si attiva solo quando tale valore è già presente nella tabella TRASMISSIONE.
20/01/2012
18
SuapFD
Volutamente non è stato modellato nei diagrammi dei casi d’uso lo scenario di modifica dei dati
da parte di un ulteriore attore poiché non prettamente inerente alla tematica del SuapFD.
L’attributo modificato tramite un trigger viene inserito nella tabella TRASMISSIONE.
Nel diagramma vengono riportati i passaggi relativi alla notifica della variazione del valore degli
attributi al Role Manager. L’esempio riporta solo lo scenario principale per entrambe le fonti
dati FDES e FDOS. Il diagramma evidenzia il dettaglio relativo al flusso opzionale nel caso in cui il
messaggio costruito sia valido e al flusso opzionale nel caso in cui il messaggio di risposta dal
Role Manager sia corretto. Inoltre viene evidenziato che l’interazione è di tipo loop e viene
iterato fin tanto che ci sono variazioni da notificare.
Figura 8 Invio della variazione al Role Manager
Esempio di richiesta
<ws:putVariazione>
<xml xsi:type="soapenc:string">
20/01/2012
19
SuapFD
<lista_variazioni>
<data_generazione>2012-01-20T16:38:00</data_generazione>
<id_fonte_dati> Fonte dati operatore SUAP </id_fonte_dati>
<lista_attributi>
<CodiceFiscale> XXXXBA82E28G793B </CodiceFiscale>
<attributo nome="Funzioni">
<valore> RespSUAP </valore>
<valore> OpSUAP </valore>
<fine_validita>2012-01-21T16:38:00</fine_validita>
</attributo>
</lista_attributi>
</lista_variazioni>
</xml>
</ws:putVariazione>
Esempio di risposta
<ns1:putVariazioneResponse
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns1="http://ws.arpa.datapos.it">
<putVariazioneReturn xsi:type="soapenc:string"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">ACK</putVariazioneReturn>
</ns1:putVariazioneResponse>
20/01/2012
20