Tesi sistema di tipi jolie

26
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

description

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

Transcript of Tesi sistema di tipi jolie

Page 1: Tesi sistema di tipi jolie

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

Page 2: Tesi sistema di tipi jolie

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

Page 3: Tesi sistema di tipi jolie

• 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/

Page 4: Tesi sistema di tipi jolie

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

Page 5: Tesi sistema di tipi 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

Page 6: Tesi sistema di tipi 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

Page 7: Tesi sistema di tipi 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

Page 8: Tesi sistema di tipi 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

Page 9: Tesi sistema di tipi 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 )

Page 10: Tesi sistema di tipi jolie

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

Page 11: Tesi sistema di tipi jolie

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, *] | * | ? | Є

Page 12: Tesi sistema di tipi jolie

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>

Page 13: Tesi sistema di tipi jolie

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>

Page 14: Tesi sistema di tipi jolie

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>

Page 15: Tesi sistema di tipi jolie

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 {?}}

Page 16: Tesi sistema di tipi jolie

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)

Page 17: Tesi sistema di tipi jolie

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>

Page 18: Tesi sistema di tipi jolie

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

Page 19: Tesi sistema di tipi jolie

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’

Page 20: Tesi sistema di tipi jolie

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

Page 21: Tesi sistema di tipi jolie

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

Page 22: Tesi sistema di tipi jolie

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…

Page 23: Tesi sistema di tipi jolie

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

Page 24: Tesi sistema di tipi jolie

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

Page 25: Tesi sistema di tipi jolie

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.

Page 26: Tesi sistema di tipi jolie

Domande ?

Grazie dell’attenzione