Date post: | 25-May-2015 |
Category: |
Documents |
Upload: | elvis-ciotti |
View: | 1,562 times |
Download: | 0 times |
ALMA MATER STUDIORUM - UNIVERSITA' DI BOLOGNA - SEDE DI CESENAFACOLTA' DI SCIENZE MATEMATICHE, FISICHE E NATURALI
CORSO DI LAUREA SPECIALISTICA IN SCIENZE DELL'INFORMAZIONE
IMPLEMENTAZIONE DI UNSISTEMA DI TIPI PER JOLIE
RelatoreChiar.mo Prof. Zavattaro Gianluigi
CorrelatoriDr. Guidi ClaudioDott. Montesi Fabrizio
ControrelatoreChiar.mo Prof. Maniezzo Vittorio
Presentata daCiotti Elvis
Sommario presentazione
• JOLIE- panoramica
- creazione messaggi e invio
• SISTEMA DI TIPI PER JOLIE- dichiarazione tipi e controlli di conformità
- esportazione tipi XML Schema
• DEMO- applicazione distribuita JOLIE con sistema di tipi
• CONCLUSIONI
• Linguaggio di programmazione
• Orchestrazione di servizi web
• Alternativa a WS-BPEL
• Basato su calcolo formale SOCK
(primitive per descrizione meccanismi SOC)
• Sintassi linguaggio in stile C/Java
• Interprete rende operativi i servizi
Java Orchestration Language Interpreter Engine
Alcune caratteristiche
Progetto europeo SENSORIA,Università di Bologna
http://jolie.sourceforge.net/
Primitive di comunicazione
B
NOTIFICATION ONE WAY
<xml …>….
</xml>
<xml …>….
</xml>A
RETE
SOLICIT RESPONSE REQUEST RESPONSE
C
<xml …>….
</xml>
<xml …>….
</xml>
D
RETE
<xml …>FAULT</xml>
<xml …>FAULT</xml>
<xml …>….
</xml>
<xml …>….
</xml>
Operatori di composizione
Sequenza
Parallelo
Scelta non deterministica sugli input
ordine.cliente = “Mario Rossi”;ordine.articoli.prodotto[0] = “a128”;ordine.articoli.prodotto[0].qta = 1;ordine.articoli.prodotto[1] = “b131”;ordine.articoli.prodotto[1].qta = 3;
Strutture dati
ordine> <cliente>Mario Rossi</cliente> <articoli> <prodotto> a128 <qta>1</qta> </prodotto> <prodotto> b131 <qta>3</qta> </prodotto> </articoli></ordine>
Rappresentazione XML Codice JOLIE
ordine.cliente = “Mario Rossi”;ordine.articoli.prodotto[0] = “a128”;ordine.articoli.prodotto[0].qta = 1;ordine.articoli.prodotto[1] = “b131”;ordine.articoli.prodotto[1].qta = 3;
Strutture dati
ordine> <cliente>Mario Rossi</cliente> <articoli> <prodotto> a128 <qta>1</qta> </prodotto> <prodotto> b131 <qta>3</qta> </prodotto> </articoli></ordine>
Rappresentazione XML Codice JOLIE
ordine.cliente = “Mario Rossi”;ordine.articoli.prodotto[0] = “a128”;ordine.articoli.prodotto[0].qta = 1;ordine.articoli.prodotto[1] = “b131”;ordine.articoli.prodotto[1].qta = 3;
Strutture dati
ordine> <cliente>Mario Rossi</cliente> <articoli> <prodotto> a128 <qta>1</qta> </prodotto> <prodotto> b131 <qta>3</qta> </prodotto> </articoli></ordine>
Rappresentazione XML Codice JOLIE
ordine.cliente = “Mario Rossi”;ordine.articoli.prodotto[0] = “a128”;ordine.articoli.prodotto[0].qta = 1;ordine.articoli.prodotto[1] = “b131”;ordine.articoli.prodotto[1].qta = 3;
Strutture dati
ordine> <cliente>Mario Rossi</cliente> <articoli> <prodotto> a128 <qta>1</qta> </prodotto> <prodotto> b131 <qta>3</qta> </prodotto> </articoli></ordine>
Rappresentazione XML Codice JOLIE
ordine.cliente = “Mario Rossi”;ordine.articoli.prodotto[0] = “a128”;ordine.articoli.prodotto[0].qta = 1;ordine.articoli.prodotto[1] = “b131”;ordine.articoli.prodotto[1].qta = 3;
Strutture dati
ordine> <cliente>Mario Rossi</cliente> <articoli> <prodotto> a128 <qta>1</qta> </prodotto> <prodotto> b131 <qta>3</qta> </prodotto> </articoli></ordine>
Rappresentazione XML Codice JOLIE
invio con notification
inviaOrdine@ServizioOrdini( ordine )
In questa tesi…
• Introduzione sistema di tipi per JOLIE- Sintassi per la definizione dei tipi
- Controllo di conformità messaggio / tipo
- Associazione tipi alle operazioni
- Controlli inseriti in ingresso e uscita nelle operazioni
• Estensione generatore WSDL con tipi XML Schema“Strumento per la generazione di documenti WSDL che descrivono servizi JOLIE”
Tesi di Laurea di Malagoli Davide - a.a. 07/08
Relatore: prof Gorrieri Roberto, Correlatori: Dr, Guidi Claudio, Dott. Montesi Fabrizio
Introduzione sistema di tipi 1) Sintassi per la definizione dei tipi dei messaggi
TYPE_DECLARATION
NATIVE_YPE
SUB_TYPE_LIST_N
TYPE_LIST_N
SUBTYPE
CARDINALITY
type id: NATIVE_YPE SUB_TYPE_LIST_N
void | string | int | double | any | undefined
{ SUBTYPE TYPE_LIST_N } | { ? } | Є
, SUBTYPE TYPE_LIST_N | Є
.id CARDINALITY: NATIVE_YPE SUB_TYPE_LIST_N | .id CARDINALITY: idTypeDeclared
[NUMBER, NUMBER] | [NUMBER, *] | * | ? | Є
Introduzione sistema di tipiEsempio di dichiarazioni di tipo del messaggio “ordine”
type ORDINE_TYPE: void {
.cliente: string .articoli: void {
.prodotto[1,*]: string {
.qta: int
} } .altre_info: any {?}}
<ordine> <cliente>Mario Rossi</cliente> <articoli> <prodotto> a128 <qta>1</qta> </prodotto> <prodotto> b131 <qta>3</qta> </prodotto> </articoli></ordine>
Introduzione sistema di tipiEsempio di dichiarazioni di tipo del messaggio “ordine”
type ORDINE_TYPE: void {
.cliente: string .articoli: void {
.prodotto[1,*]: string {
.qta: int
} } .altre_info: any {?}}
<ordine> <cliente>Mario Rossi</cliente> <articoli> <prodotto> a128 <qta>1</qta> </prodotto> <prodotto> b131 <qta>3</qta> </prodotto> </articoli></ordine>
Introduzione sistema di tipiEsempio di dichiarazioni di tipo del messaggio “ordine”
type ORDINE_TYPE: void {
.cliente: string .articoli: void {
.prodotto[1,*]: string {
.qta: int
} } .altre_info: any {?}}
<ordine> <cliente>Mario Rossi</cliente> <articoli> <prodotto> a128 <qta>1</qta> </prodotto> <prodotto> b131 <qta>3</qta> </prodotto> </articoli></ordine>
Introduzione sistema di tipi2) Algoritmo di controllo conformità messaggio al tipo dichiarato
<ordine> 20081218A12 <cliente>Mario Rossi</cliente> <articoli> <prodotto> a128 <qta>1</qta> </prodotto> <prodotto> b131 ??? </prodotto> <data>2008/12/18</data> </articoli></ordine>
type ORDINE_TYPE: void {
.cliente: string .articoli: void {
.prodotto[1,*]: string {
.qta: int
} } .altre_info: any {?}}
Introduzione sistema di tipi3) Associazione tipi alle operazioni
outputPort OrdiniServicePort { Location: “http://xyz:2002” Protocol: soap OneWay: inviaOrdine RequestResponse: opRR throws fault1 fault2 }
( ORDINE_TYPE )
( TIPO1 )( TIPO2 )(TIPO3) (TIPO4)
Introduzione sistema di tipi4) Controlli nelle operazioni a tempo di esecuzione
A B
NOTIFICATION ONE WAY
RETE
ricezione effettiva solo se il messaggio è conforme al tipo locale
<ordine>
…</ordine>
Invio effettivo solo se il messaggio è conforme al tipo locale
TypeMismatch
<ordine>
…</ordine>
SCANNERPARSER
CONTROLLORESEMANTICO
OOITBUILDER
Introduzione sistema di tipi
Modifiche apportate
all’architettura JOLIE
CodiceJOLIE
servizio
AMBIENTE DI ESECUZIONE
GESTORE DELLACOMUNICAZIONE
OOIT
…
op1 opN
…
…
- TIPI- ASSOCIAZIONI TIPI-OPERAZIONI
SCANNERPARSER
CONTROLLORESEMANTICO
OOITBUILDER
Introduzione sistema di tipi
Modifiche apportate
all’architettura JOLIE
CodiceJOLIE
servizio
AMBIENTE DI ESECUZIONE
GESTORE DELLACOMUNICAZIONE
OOIT
…
op1 opN
…
…
- ESISTENZA TIPI- CARDINALITA’
SCANNERPARSER
CONTROLLORESEMANTICO
OOITBUILDER
Introduzione sistema di tipi
Modifiche apportate
all’architettura JOLIE
CodiceJOLIE
servizio
AMBIENTE DI ESECUZIONE
GESTORE DELLACOMUNICAZIONE
OOIT
…
op1 opN
…
…
OGGETTI DICHIARAZIONI TIPOINSERITI NELLE OPERAZIONI
SCANNERPARSER
CONTROLLORESEMANTICO
OOITBUILDER
Introduzione sistema di tipi
Modifiche apportate
all’architettura JOLIE
CodiceJOLIE
servizio
AMBIENTE DI ESECUZIONE
GESTORE DELLACOMUNICAZIONE
OOIT
…
op1 opN
…
…
COMPONENTECONTROLLO
CONFORMITA’
CONTROLLI IN/OUT OPERAZIONI
Introduzione sistema di tipiDemo: gestore sessioni esami
DATABASECORSI E VOTI
DATABASEACCOUNTS
GESTORE SESSIONID’ESAME
PROFESSORE 1
PROFESSORE N
1. Autenticazione
2. Creazione sessione(esame, studente)
3. Domande
4. Proposta voto
1. Autenticazione
2. Partecipazione sessione(esame, studente)
3. Risposte a domande
4. Accettazione voto
STUDENTE 1
STUDENTE M
… …
sessione sessione…
sessione sessione…
Esportazione WSDL
<wsdl:definitions ..><wsdl:types>…</wsdl:types><wsdl:message…>…<wsdl:message…><wsdl:portType …> <wsdl:operation…> … </wsdl:operation…> <wsdl:input … /><wsdl:output … /></wsdl:portType …>
outpuPort outPort { Location:… Protocol: soap{ .schema=“file.xsd” ... } OneWay: op1}…
TRASFORMATOREJOLIE -> WSDL
DICHIARAZIONI XML Schema ESTERNE
Codice JOLIE del servizio Documento WSDL
Esportazione WSDL
<wsdl:definitions ..><wsdl:types>…</wsdl:types><wsdl:message…>…<wsdl:message…><wsdl:portType …> <wsdl:operation…> … </wsdl:operation…> <wsdl:input … /><wsdl:output … /></wsdl:portType …>
outpuPort outPort { Location:… Protocol: soap{ .schema=“file.xsd” ... } OneWay: op1}…
TRASFORMATOREJOLIE -> WSDL
DICHIARAZIONI XML Schema ESTERNE
ESPORTAZIONETIPI -> XSD
type TIPO1 {...}
outpuPort outPort { Location: ... Protocol: soap
OneWay: op1(TIPO1)}…
Codice JOLIE del servizio Documento WSDL
Conclusioni
Sistema di tipi: considerazioni
• Messaggi strutturalmente corretti: diminuzione anomalie di funzionamento
• Visualizzazione dettagliata errori di conformità: strumento di debug
• Dichiarazione tipi molto flessibile: qualsiasi contenuto per sottostruttura del tipo
Sviluppi futuri
• Supporto per altri tipi derivati e costrutti XSD
• Sviluppo linguaggio di coreografia complementare a JOLIE con supporto tipi
Con questa tesi si è introdotto un sistema di tipi per JOLIE che permette la dichiarazione dei tipi
dei messaggi ed effettua dei controlli in ingresso e uscita dalle operazioni, in modo che le
operazioni inviino e ricevano messaggi conformi ai relativi tipi dichiarati.
E’ stato anche modificato lo strumento per la creazione di documenti WSDL descriventi servizi
JOLIE, inserendo l’esportazione dei tipi dichiarati in formato XSD nelle relative operazioni.
Domande ?
Grazie dell’attenzione