implementazione sistema di tipi (strutture di messaggi xml) e controllo conformità in JOLIE, un nuovo linguaggio open source per realizzare applicazioni distribuite nella rete
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.
3.
4.
5.
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. 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. 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. 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. 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.
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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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