Tesi sistema di tipi jolie

1,798 views

Published on

implementazione sistema di tipi (strutture di messaggi xml) e controllo conformità in JOLIE, un nuovo linguaggio open source per realizzare applicazioni distribuite nella rete

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,798
On SlideShare
0
From Embeds
0
Number of Embeds
424
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • Tesi sistema di tipi jolie

    1. 1. ALMA MATER STUDIORUM - UNIVERSITA' DI BOLOGNA - SEDE DI CESENA FACOLTA' DI SCIENZE MATEMATICHE, FISICHE E NATURALI CORSO DI LAUREA SPECIALISTICA IN SCIENZE DELL'INFORMAZIONE IMPLEMENTAZIONE DI UN SISTEMA DI TIPI PER JOLIE Relatore Chiar.mo Prof. Zavattaro Gianluigi Correlatori Dr. Guidi Claudio Dott. Montesi Fabrizio Controrelatore Chiar.mo Prof. Maniezzo Vittorio Presentata da Ciotti Elvis
    2. 2. Sommario presentazione <ul><li>JOLIE - panoramica - creazione messaggi e invio </li></ul><ul><li>SISTEMA DI TIPI PER JOLIE - dichiarazione tipi e controlli di conformità - esportazione tipi XML Schema </li></ul><ul><li>DEMO - applicazione distribuita JOLIE con sistema di tipi </li></ul><ul><li>CONCLUSIONI </li></ul>
    3. 3. <ul><li>Orchestrazione </li></ul>Web Services <ul><li>Web service: sistema software </li></ul><ul><li>Pubblicazione interfaccia servizi: WSDL e UDDI </li></ul><ul><li>Scambio di messaggi: HTTP e SOAP (XML) </li></ul><ul><li>Comunicazione nella rete tra sistemi eterogenei </li></ul><ul><li>Composizione: coreografia e orchestrazione </li></ul>WS-BPEL B C
    4. 4. <ul><li>Linguaggio di programmazione </li></ul><ul><li>Orchestrazione di servizi web </li></ul><ul><li>Alternativa a WS-BPEL </li></ul><ul><li>Basato su calcolo formale SOCK (primitive per descrizione meccanismi SOC) </li></ul><ul><li>Sintassi linguaggio in stile C/Java </li></ul><ul><li>Interprete rende operativi i servizi </li></ul>Java Orchestration Language Interpreter Engine Alcune caratteristiche Progetto europeo SENSORIA, Università di Bologna http://jolie.sourceforge.net/
    5. 5. 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> <ul><li>Operatori di composizione </li></ul><ul><li>Sequenza </li></ul><ul><li>Parallelo </li></ul><ul><li>Scelta non deterministica sugli input </li></ul>
    6. 6. 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
    7. 7. 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
    8. 8. 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
    9. 9. 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
    10. 10. 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 )
    11. 11. In questa tesi… <ul><li>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 </li></ul><ul><li>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 </li></ul>
    12. 12. 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 , *] | * | ? | Є
    13. 13. Introduzione sistema di tipi Esempio 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 >
    14. 14. Introduzione sistema di tipi Esempio 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 >
    15. 15. Introduzione sistema di tipi Esempio 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 >
    16. 16. Introduzione sistema di tipi 2) 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 {?} }
    17. 17. Introduzione sistema di tipi 3) 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 )
    18. 18. Introduzione sistema di tipi 4) Controlli nelle operazioni a tempo di esecuzione A B NOTIFICATION ONE WAY RETE <ordine> … </ordine> <ordine> … </ordine> ricezione effettiva solo se il messaggio è conforme al tipo locale Invio effettivo solo se il messaggio è conforme al tipo locale TypeMismatch
    19. 19. Introduzione sistema di tipi 3) Controlli nelle operazioni a tempo di esecuzione A B SOLICIT RESPONSE REQUEST RESPONSE RETE Invio effettivo solo se il messaggio è conforme al tipo locale Ricezione effettiva solo se il messaggio è conforme al tipo locale Ricezione effettiva solo se il messaggio è conforme al tipo locale Se il messaggio creato non è conforme al tipo locale: invio fault <xml …> <soap…> … </soap> <xml …> <soap…> … </soap> <xml …> <soap…> … </soap> <xml …> <soap…> … </soap> TypeMismatch IOFault TypeMismatch Received TypeMismatch
    20. 20. SCANNER PARSER CONTROLLORE SEMANTICO OOIT BUILDER Introduzione sistema di tipi Modifiche apportate all’architettura JOLIE Codice JOLIE servizio AMBIENTE DI ESECUZIONE GESTORE DELLA COMUNICAZIONE OOIT … op1 opN … … - TIPI - ASSOCIAZIONI TIPI-OPERAZIONI
    21. 21. SCANNER PARSER CONTROLLORE SEMANTICO OOIT BUILDER Introduzione sistema di tipi Modifiche apportate all’architettura JOLIE Codice JOLIE servizio AMBIENTE DI ESECUZIONE GESTORE DELLA COMUNICAZIONE OOIT … op1 opN … … - ESISTENZA TIPI - CARDINALITA’
    22. 22. SCANNER PARSER CONTROLLORE SEMANTICO OOIT BUILDER Introduzione sistema di tipi Modifiche apportate all’architettura JOLIE Codice JOLIE servizio AMBIENTE DI ESECUZIONE GESTORE DELLA COMUNICAZIONE OOIT … op1 opN … … OGGETTI DICHIARAZIONI TIPO INSERITI NELLE OPERAZIONI
    23. 23. SCANNER PARSER CONTROLLORE SEMANTICO OOIT BUILDER Introduzione sistema di tipi Modifiche apportate all’architettura JOLIE Codice JOLIE servizio AMBIENTE DI ESECUZIONE GESTORE DELLA COMUNICAZIONE OOIT … op1 opN … … COMPONENTE CONTROLLO CONFORMITA’ CONTROLLI IN/OUT OPERAZIONI
    24. 24. Introduzione sistema di tipi Demo: gestore sessioni esami DATABASE CORSI E VOTI DATABASE ACCOUNTS GESTORE SESSIONI D’ESAME PROFESSORE 1 PROFESSORE N <ul><li>Autenticazione </li></ul><ul><li>Creazione sessione (esame, studente) </li></ul><ul><li>Domande </li></ul><ul><li>Proposta voto </li></ul><ul><li>Autenticazione </li></ul><ul><li>Partecipazione sessione (esame, studente) </li></ul><ul><li>Risposte a domande </li></ul><ul><li>Accettazione voto </li></ul>STUDENTE 1 STUDENTE M … … sessione sessione … sessione sessione …
    25. 25. 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 } … TRASFORMATORE JOLIE -> WSDL DICHIARAZIONI XML Schema ESTERNE Codice JOLIE del servizio Documento WSDL
    26. 26. 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 } … TRASFORMATORE JOLIE -> WSDL DICHIARAZIONI XML Schema ESTERNE Codice JOLIE del servizio Documento WSDL ESPORTAZIONE TIPI -> XSD type TIPO1 {...} outpuPort outPort { Location: ... Protocol: soap OneWay: op1( TIPO1 ) } …
    27. 27. Conclusioni <ul><li>Sistema di tipi: considerazioni </li></ul><ul><li>Messaggi strutturalmente corretti: diminuzione anomalie di funzionamento </li></ul><ul><li>Visualizzazione dettagliata errori di conformità: strumento di debug </li></ul><ul><li>Dichiarazione tipi molto flessibile: qualsiasi contenuto per sottostruttura del tipo </li></ul><ul><li>Sviluppi futuri </li></ul><ul><li>Supporto per altri tipi derivati e costrutti XSD </li></ul><ul><li>Sviluppo linguaggio di coreografia complementare a JOLIE con supporto tipi </li></ul>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.
    28. 28. <ul><li>Domande ? </li></ul>Grazie dell’attenzione

    ×