Università di Pisa
Facoltà di Scienze Matematiche, Fisiche e Naturali
Corso di Laurea Specialistica
in Tecnologie Informatiche
Anno accademico 2005-2006
Tesi di Laurea:
Traduzione automatica di descrizioni
Di servizi Web
Candidato:
Andrea Lorenzani
Relatore:
Controrelatore:
A mia madre, che mi ha permesso di intraprendere questa strada e a tutti coloro che mi hanno sostenuto nel percorrerla
Ringraziamenti
Vorrei esprimere la mia più sincera gratitudine al relatore di questa tesi, il prof. Antonio Brogi, per avermi seguito nella stesura e per la disponibilità dimostrata.
Ringrazio inoltre il dottorando Razvan Andrei Popescu che ha supervisionato il progetto. Ringrazio infine mia mamma, mio fratello, e tutti coloro che mi hanno sostenuto durante il
Indice generale
CAPITOLO 1 - INTRODUZIONE... 10
1.1 OBIETTIVODELLATESIERISULTATIOTTENUTI... 12
1.2 STESURADELLATESI... 15
CAPITOLO 2 - BPEL4WS (BUSINESS PROCESS EXECUTION LANGUAGE FOR WEB SERVICES)... 18
2.1 CENNIALLANASCITADI BPEL4WS...18
2.2 INTRODUZIONEA BPEL4WS...20
2.3 DEFINIZIONE WSDL PERUNPROCESSO BPEL4WS... 25
2.4 DEFINIZIONEDIUNPROCESSO BPEL4WS...32
2.5 LASTRUTTURADIUNPROCESSODIBUSINESS...38
2.5.1 Definizione del processo e attributi ad alto livello... 39
2.5.2 Definizione dei partecipanti esterni al processo...40
2.5.3 Definizione delle variabili...41
2.5.4 Definizione degli insiemi di correlazione... 42
2.5.5 Definizione dei gestori per eventi, fallimenti e compensazioni... 44
2.6 LEATTIVITÀDIUNPROCESSO BPEL4WS...47
2.6.1 Attributi ed elementi standard delle attività e significato dei link...48
2.7 ATTIVITÀSEMPLICI... 51 2.7.1 Receive e Reply... 51 2.7.2 Invoke... 52 2.7.3 Assign... 54 2.7.4 Throw... 55 2.7.5 Compensate...56
2.7.6 Terminate e la terminazione delle attività... 57
2.7.7 Wait... 58 2.7.8 Empty... 59 2.8 ATTIVITÀSTRUTTURATE...59 2.8.1 Sequence...60 2.8.2 Flow... 60 2.8.3 Switch... 61 2.8.4 While... 62 2.8.5 Pick...62 2.8.6 Scope... 63
CAPITOLO 3 - YAWL (YET ANOTHER WORKFLOW LANGUAGE)...68
3.1 INTRODUZIONE...68
3.2 PATTERNDIRIFERIMENTO...69
3.3 ILLINGUAGGIO YAWL... 74
3.4 GESTIONEDEIDATIINUNWORKFLOW YAWL... 77
3.5 ESEMPIDIWORKFLOW YAWL... 78
3.6 ILLINGUAGGIO XML PERUNWORKFLOW YAWL... 84
CAPITOLO 4 - BPEL2YAWL... 102
4.1 PROGETTAZIONE... 102
4.1.1 Gli schemi di traduzione... 103
4.1.2 Schemi di traduzione per le attività semplici di BPEL4WS... 108
4.1.2.1 Empty...108
4.1.2.2 Receive...109
4.1.2.3 Reply... 110 4.1.2.4 Wait...111 4.1.2.5 Invoke... 112 4.1.2.6 Assign... 112 4.1.2.7 Throw...115 4.1.2.8 Compensate ...115 4.1.2.9 Terminate... 118
4.1.3 Schemi di traduzione per le attività composite di BPEL4WS... 119
4.1.3.1 Sequence... 119
4.1.3.2 Flow... 121
4.1.3.3 Switch... 122
4.1.3.4 While...123
4.1.3.5 Pick... 126
4.1.3.6 Scope e gli handler...130
4.1.4 Il processo BPEL4WS... 141 4.2 REALIZZAZIONE... 143 4.2.1 Il package BPELDoc...144 4.2.1.1 La classe GenericActivity... 147 4.2.2 Il package YAWLDoc... 150 4.2.3 Esecuzione di BPEL2YAWL...154 4.3 ESEMPIO...156 CAPITOLO 5 - CONCLUSIONI... 164 APPENDICE A : PATTERN DI TRADUZIONE...169 BIBLIOGRAFIA...227
Indice delle illustrazioni
Figura 1.1: Service Oriented Architecture (SOA)... 11
Figura 2.1: interazione con un web service e rapporto tra WSDL e BPEL4WS...21
Figura 2.2: rappresentazione del servizio per l'esempio di BPEL4WS...25
Figura 2.3: interazione tra servizio e portType esterni...28
Figura 3.1: rappresentazione grafica dei principali elementi di YAWL... 75
Figura 3.2: primo esempio di gestione di istanze multiple...78
Figura 3.3: secondo esempio di gestione di istanze multiple... 78
Figura 3.4: terzo esempio di gestione di istanze multiple... 79
Figura 3.5: funzionamento dell'OR-split... 80
Figura 3.6: funzionamento dell'OR-join...80
Figura 3.7: implementazione del pattern Discriminator (pattern 9)... 81
Figura 3.8: esempio di cancellazione di un task, anche durante l'esecuzione... 82
Figura 3.9: esempio di cancellazione di un task in attesa di esecuzione... 83
Figura 3.10: esempio di cancellazione reciproca tra due task... 83
Figura 3.11: esempio di implmentazione di un reminder...84
Figura 3.12: il workflow dell'esempio preso in esame... 86
Figura 4.1: il pattern generico di traduzione...104
Figura 4.2: il pattern della Empty...108
Figura 4.3: il pattern della Receive...109
Figura 4.4: il pattern della Reply... 110
Figura 4.5: il pattern della Wait...111
Figura 4.6: il pattern della Invoke... 112
Figura 4.7: la Assign ad alto livello...112
Figura 4.8: il pattern della Begin Assign...113
Figura 4.9: il pattern della Copy...114
Figura 4.10: il pattern della End Assign... 114
Figura 4.11: il pattern della Throw...115
Figura 4.12: la Compensate ad alto livello... 116
Figura 4.13: la Begin Compensate... 117
Figura 4.14: la End Compensate...117
Figura 4.15: il pattern della Terminate... 118
Figura 4.16: la Sequence ad alto livello... 119
Figura 4.17: il pattern Begin Sequence... 120
Figura 4.18: il pattern End Sequence...121
Figura 4.19: la Flow ad alto livello...121
Figura 4.20: la Switch ad alto livello...122
Figura 4.21: le modifiche al pattern generico per la Case... 123
Figura 4.22: la While ad alto livello... 124
Figura 4.23: il pattern Begin While... 125
Figura 4.24: il pattern End While... 125
Figura 4.25: la Pick ad alto livello...126
Figura 4.26: il pattern della Begin Pick...127
Figura 4.27: la sottorete della Begin Pick...128
Figura 4.29: la Scope ad alto livello... 130
Figura 4.30: il Fault Handlers ad alto livello...132
Figura 4.31: il pattern Begin Fault Handlers... 133
Figura 4.32: il pattern generico modificato dalla Catch... 134
Figura 4.33: il pattern End Fault Handlers... 135
Figura 4.34: l’Event Handlers ad alto livello... 136
Figura 4.35: il pattern Begin Event Handlers... 136
Figura 4.36: la onMessage ad alto livello...137
Figura 4.37: la onAlarm ad alto livello...138
Figura 4.38: il pattern Begin Compensation Handler...140
Figura 4.39: il pattern End Compensation Handler...140
Figura 4.40: il processo BPEL4WS ad alto livello...141
Figura 4.41: il pattern Begin Process...142
Figura 4.42: il pattern End Process...143
Figura 4.43: diagramma delle classi UML con classi che compongono la BPELProcess ... 145
Figura 4.44: diagramma delle classi UML focalizzato sulla FaultHandler...146
Figura 4.45: diagramma delle classi UML per il package YAWLDoc... 151