Thesis full text PDF - Politecnico di Milano
Thesis full text PDF - Politecnico di Milano
Thesis full text PDF - Politecnico di Milano
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
POLITECNICO DI MILANO<br />
FACOLTA’ DI INGEGNERIA DELL’INFORMAZIONE<br />
SEDE DI MILANO LEONARDO<br />
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE<br />
CORSO DI LAUREA SPECIALISTICA IN INGEGNERIA INFORMATICA<br />
Modellazione concettuale <strong>di</strong> processi<br />
aziendali <strong>di</strong>stribuiti basati su<br />
architettura Web Services<br />
Relatore:<br />
Correlatore:<br />
Prof. Ceri Stefano<br />
Ing. Brambilla Marco<br />
Tesi <strong>di</strong> laurea <strong>di</strong>:<br />
Brivio Marco 666662<br />
Brusadelli Alessio 666663<br />
ANNO ACCADEMICO 2004-2005
In<strong>di</strong>ce<br />
1. Introduzione ................................................................................................... 1<br />
2. Workflow ........................................................................................................ 5<br />
2.1. Concetti ...................................................................................................... 7<br />
2.2. Notazioni .................................................................................................. 10<br />
2.3. Casi <strong>di</strong> stu<strong>di</strong>o ............................................................................................ 13<br />
2.3.1. Click4aLoan ........................................................................................ 13<br />
2.3.2. Click4aCar .......................................................................................... 15<br />
3. Web Service .................................................................................................. 17<br />
3.1. Coreografia e orchestrazione ....................................................................... 20<br />
4. WebML .......................................................................................................... 23<br />
4.1. Modello dei dati ......................................................................................... 25<br />
4.2. Modello <strong>di</strong> ipertesto .................................................................................... 26<br />
4.2.1 Site-view............................................................................................. 27<br />
4.2.2 Pagine ................................................................................................ 27<br />
4.2.3 Unit .................................................................................................... 27<br />
4.2.4 Operation ............................................................................................ 29<br />
4.2.5 Link .................................................................................................... 30<br />
4.2.6 Parametri globali .................................................................................. 31<br />
4.3. Modello <strong>di</strong> presentazione ............................................................................. 31<br />
4.4. Estensione <strong>di</strong> WebML per i Workflow ............................................................. 32<br />
4.4.1. Modello <strong>di</strong> processo ............................................................................. 32<br />
4.4.2. Modello dei dati ................................................................................... 32<br />
4.4.3. Modello <strong>di</strong> ipertesto ............................................................................. 34<br />
4.5. Estensione <strong>di</strong> WebML per i Web Service ......................................................... 36<br />
4.5.1. Primitive per la descrizione e la pubblicazione <strong>di</strong> servizi ............................. 36<br />
4.5.2. Primitive per l’invocazione <strong>di</strong> servizi ....................................................... 40<br />
5. Workflow Distribuiti ..................................................................................... 42<br />
5.1. Distribuzione <strong>di</strong> un singolo servizio ............................................................... 44<br />
5.2. Distribuzione dei sotto-processi .................................................................... 46<br />
5.2.1. Distribuzione con controllo centralizzato ................................................. 46<br />
5.2.2. Distribuzione con controllo <strong>di</strong>stribuito ..................................................... 49<br />
5.2.2.1. Controllo <strong>di</strong>stribuito con coor<strong>di</strong>nazione annidata ................................ 49<br />
5.2.2.2. Controllo <strong>di</strong>stribuito con coor<strong>di</strong>nazione generalizzata .......................... 52
5.3. Interazione fra processi in<strong>di</strong>pendenti ............................................................. 54<br />
5.4. Stili <strong>di</strong> progettazione .................................................................................. 58<br />
5.4.1. Automatico vs. Manuale ....................................................................... 58<br />
5.4.2. Push vs. Pull ....................................................................................... 59<br />
5.4.3. Assegnamento delle attività .................................................................. 60<br />
5.4.4. Scenari .............................................................................................. 60<br />
5.4.5. Gestione dei meta-dati ......................................................................... 62<br />
6. Progettazione delle applicazioni ................................................................... 65<br />
6.1. Click4aLoan ............................................................................................... 66<br />
6.1.1. Requisiti ............................................................................................. 67<br />
6.1.2. Modello dei dati ................................................................................... 69<br />
6.1.3. Ipertesto ............................................................................................ 74<br />
6.1.3.1. Organizzazione delle site-view ........................................................ 74<br />
6.1.3.2. Implementazione degli scenari <strong>di</strong> <strong>di</strong>stribuzione .................................. 76<br />
6.2. Click4aCar .............................................................................................. 101<br />
6.2.1. Requisiti ........................................................................................... 101<br />
6.2.2. Modello dei dati ................................................................................. 103<br />
6.2.3. Ipertesto .......................................................................................... 104<br />
6.2.3.1. Organizzazione delle site-view ...................................................... 104<br />
6.2.3.2. Implementazione degli scenari <strong>di</strong> <strong>di</strong>stribuzione ................................ 104<br />
7. Related Work .............................................................................................. 114<br />
8. Conclusioni ................................................................................................. 118<br />
Bibliografia ..................................................................................................... 122
Introduzione Capitolo 1<br />
1. Introduzione<br />
1
Introduzione Capitolo 1<br />
A partire dalla metà degli anni novanta lo sviluppo massiccio <strong>di</strong> sistemi informativi in rete e delle<br />
tecnologie Internet ha stimolato l’interesse <strong>di</strong> svariate <strong>di</strong>scipline nei confronti dei meccanismi <strong>di</strong><br />
gestione <strong>di</strong> processi interaziendali.<br />
In particolare i mercati della “new economy” hanno contribuito alla generazione <strong>di</strong> nuove tecniche<br />
<strong>di</strong> gestione <strong>di</strong> flussi <strong>di</strong> processo che si pongono come veri e propri elementi innovativi rispetto ai<br />
meccanismi tra<strong>di</strong>zionali.<br />
Inoltre, la crescente complessità delle attività all’interno delle organizzazioni, porta la pianificazione<br />
e la gestione <strong>di</strong> processi e risorse a <strong>di</strong>ventare un elemento critico nella gestione organizzativa.<br />
La concomitanza dei fattori sopra esposti ha portato a sottolineare alcune peculiarità tipiche dei<br />
workflow <strong>di</strong>stribuiti, sviluppati e progettati attraverso tecnologie informatiche:<br />
- I mezzi elettronici possono aiutare a dare una rappresentazione formale del problema della<br />
gestione del processo, supportando gli attori nella loro attività.<br />
- Il numero dei potenziali interlocutori che partecipano al processo può aumentare,<br />
permettendo <strong>di</strong>versi scenari <strong>di</strong> interazione tra i partecipanti.<br />
- Le tecnologie informatiche possono meglio supportare i responsabili nella pianificazione e<br />
nella realizzazione <strong>di</strong> processi più strutturati, in particolare è molto più facile avere a<br />
<strong>di</strong>sposizione dati storici sulle interazioni precedenti al fine <strong>di</strong> scegliere le migliori strategie<br />
per la conduzione dell’attività corrente.<br />
- L’introduzione <strong>di</strong> standard per lo stu<strong>di</strong>o, la realizzazione e la gestione <strong>di</strong> processi <strong>di</strong>stribuiti,<br />
ha reso possibile una maggiore comprensibilità dei lavori esistenti ed ha portato ad una<br />
visione unitaria dei problemi.<br />
L’insieme <strong>di</strong> tutti questi aspetti innovativi ha stimolato la ricerca scientifica verso tecniche <strong>di</strong><br />
gestione <strong>di</strong> processi aziendali sempre più avanzate, ovvero verso la creazione <strong>di</strong> applicazioni<br />
software in grado <strong>di</strong> gestire in maniera organizzata le attività componenti i processi aziendali.<br />
L’utilizzo <strong>di</strong> applicazioni a supporto della gestione dei processi aziendali fornisce notevoli vantaggi,<br />
specialmente nel caso in cui essi sono svolti in <strong>di</strong>verse località remote che necessitano <strong>di</strong> essere<br />
interfacciate in real time:<br />
- Riduce il tempo <strong>di</strong> negoziazione, in quanto l’interazione fra attori umani è relativamente<br />
lenta.<br />
- Rimuove la reticenza degli umani nell’occuparsi <strong>di</strong> processi <strong>di</strong> questa natura.<br />
- Permette <strong>di</strong> ottenere comunicazioni <strong>di</strong> business con partecipanti in <strong>di</strong>fferenti zone orarie.<br />
2
Introduzione Capitolo 1<br />
Alla luce <strong>di</strong> tutto ciò, il lavoro proposto vuole focalizzarsi sullo stu<strong>di</strong>o e sulla realizzazione <strong>di</strong><br />
applicazioni web che permettano l’esecuzione <strong>di</strong> attività facenti parte <strong>di</strong> un processo aziendale<br />
<strong>di</strong>stribuito geograficamente su <strong>di</strong>versi server.<br />
La <strong>di</strong>stribuzione geografica dei processi introduce <strong>di</strong>verse <strong>di</strong>fficoltà <strong>di</strong> comunicazione in quanto i<br />
dati remoti devono essere resi <strong>di</strong>sponibili nel minor tempo possibile dai vari server, in modo che il<br />
processo aziendale non subisca ritar<strong>di</strong> dovuti alla mancanza <strong>di</strong> dati. Per poterla concretizzare,<br />
utilizzeremo la tecnologia dei Web Service a supporto dei workflow per garantire lo scambio <strong>di</strong> dati<br />
tra <strong>di</strong>versi server, sui quali risiedono frammenti del flusso <strong>di</strong> processo aziendale, i quali perciò<br />
necessitano <strong>di</strong> una coor<strong>di</strong>nazione.<br />
Per poter ottenere tali risultati utilizzeremo il linguaggio concettuale Web Modeling Language [7]<br />
(WebML) per la specifica e la progettazione <strong>di</strong> applicazioni data-intensive, che propone una<br />
notazione per la specifica, la progettazione e la pubblicazione automatica <strong>di</strong> siti web a partire da<br />
specifiche <strong>di</strong> alto livello. In una delle sue estensioni, WebML permette la realizzazione <strong>di</strong> siti web<br />
che permettono l’esecuzione e la gestione <strong>di</strong> flussi <strong>di</strong> processo. Tutto questo si pone ad un livello <strong>di</strong><br />
design più basso rispetto alla progettazione classica <strong>di</strong> un processo <strong>di</strong> business, in quanto il flusso<br />
<strong>di</strong> processo viene integrato all’interno della progettazione dell’applicazione web e non ad un livello<br />
<strong>di</strong> astrazione più elevato.<br />
Obiettivo del nostro lavoro è quello <strong>di</strong> analizzare i vari scenari esistenti nella gestione <strong>di</strong> workflow<br />
<strong>di</strong>stribuiti, <strong>di</strong> realizzare tali scenari con dei prototipi me<strong>di</strong>ante casi <strong>di</strong> stu<strong>di</strong>o e <strong>di</strong> analizzare come<br />
WebML reagisce alle varie casistiche che il problema pone.<br />
Il nostro lavoro si pone come un elemento innovativo se si considera che, allo stato attuale, i<br />
principali tool presenti sul mercato permettono la realizzazione <strong>di</strong> applicazioni web residenti su un<br />
singolo server, e che si propone <strong>di</strong> realizzare applicazioni aziendali che partano da un modello <strong>di</strong><br />
processo preesistente e che permetta <strong>di</strong> <strong>di</strong>stribuire parti <strong>di</strong> questo processo su server <strong>di</strong>fferenti.<br />
Dal punto <strong>di</strong> vista implementativo sono state realizzate quattro applicazioni Web (più le rispettive<br />
varianti) che hanno permesso <strong>di</strong> coprire tutti gli scenari possibili in un contesto <strong>di</strong>stribuito. Queste<br />
applicazioni sono state realizzate tramite l’ausilio <strong>di</strong> un tool sviluppato al <strong>Politecnico</strong> <strong>di</strong> <strong>Milano</strong>,<br />
WebRatio ® [26], che ci ha permesso, utilizzando le notazioni introdotte da WebML, l’impiego delle<br />
tecnologie dei Web Service a supporto della gestione <strong>di</strong> flussi <strong>di</strong> processi <strong>di</strong>stribuiti.<br />
Il lavoro si presenta sud<strong>di</strong>viso in capitoli, <strong>di</strong> cui forniamo una breve descrizione:<br />
3
Introduzione Capitolo 1<br />
Il capitolo 2 offre una panoramica generale sui workflow, introducendo concetti <strong>di</strong> stampo teorico,<br />
viene introdotta una notazione grafica per rappresentare flussi <strong>di</strong> processo, e vengono presentati i<br />
casi <strong>di</strong> stu<strong>di</strong>o implementati nei progetti.<br />
Il capitolo 3 delinea un quadro completo e preciso dei Web Service, introducendone concetti e<br />
notazioni attualmente adottate.<br />
Il capitolo 4 si concentra sulla descrizione del linguaggio <strong>di</strong> modellazione WebML, e in particolare<br />
sulle sue estensioni per poter utilizzare le tecnologie dei workflow e dei Web Service.<br />
Il capitolo 5 fornisce una visione esaustiva degli scenari in<strong>di</strong>viduati nel mondo dei workflow<br />
<strong>di</strong>stribuiti, e la loro applicazione ai casi <strong>di</strong> stu<strong>di</strong>o trattati.<br />
Il capitolo 6 presenta la progettazione delle applicazioni che implementano gli scenari presentati nel<br />
capitolo 5 e la relativa modellazione WebML, corredata da esempi <strong>di</strong> implementazione per fornire<br />
una panoramica sull’esperienza implementativa maturata durante lo svolgimento dei progetti.<br />
Il capitolo 7 presenta un’analisi <strong>di</strong> lavori esistenti e relazionati al nostro ambito <strong>di</strong> stu<strong>di</strong>o.<br />
Il capitolo 8 conclude il lavoro proposto riportando osservazioni e considerazioni sul lavoro svolto e<br />
un’analisi critica delle tecnologie utilizzate.<br />
4
Workflow Capitolo 2<br />
2. Workflow<br />
5
Workflow Capitolo 2<br />
In accordo con il modello <strong>di</strong> riferimento proposto dalla Workflow Management Coalition [27], un<br />
workflow si preoccupa <strong>di</strong> automatizzare procedure in cui documenti, informazioni o tasks vengono<br />
passati fra i vari attori, rispettando definiti set <strong>di</strong> regole per poter ottenere o contribuire ad un<br />
obiettivo comune. Più semplicemente può essere descritto come l’agevolazione o<br />
l’automatizzazione computerizzata <strong>di</strong> un processo <strong>di</strong> business, in parte o totalmente. Se da un lato,<br />
un flusso <strong>di</strong> processo potrebbe essere organizzato manualmente, nella pratica è normalmente<br />
strutturato all’interno <strong>di</strong> un sistema IT per fornire un supporto automatizzato per l’automazione<br />
procedurale.<br />
L’automatizzazione <strong>di</strong> un processo <strong>di</strong> business è definita all’interno <strong>di</strong> una specifica <strong>di</strong> processo, in<br />
cui si identificano le varie attività, le regole procedurali e i rispettivi dati <strong>di</strong> controllo, che vengono<br />
utilizzati per gestire il workflow durante l’esecuzione del processo. Ogni istanza del processo ha<br />
associato un set specifico <strong>di</strong> dati che sono rilevanti per quella determinata istanza <strong>di</strong> processo<br />
(Case).<br />
Una <strong>di</strong>stinzione viene segnata tra workflow <strong>di</strong> produzione e workflow ad-hoc; i primi utilizzano<br />
regole procedurali definite a priori, mentre nei secon<strong>di</strong> le regole procedurali possono essere<br />
mo<strong>di</strong>ficate o create durante le operazioni del processo.<br />
Un sistema <strong>di</strong> gestione <strong>di</strong> workflow, o meglio “Workflow Management System”, è un sistema che<br />
definisce, crea e gestisce l’esecuzione dei workflow attraverso l’utilizzo <strong>di</strong> software, i quali vengono<br />
eseguiti su uno o più workflow engine, i quali sono in grado <strong>di</strong> interpretare le definizioni <strong>di</strong><br />
processo, interagire con i partecipanti e invocare l’uso <strong>di</strong> tool e applicazioni IT quando richiesto.<br />
I vantaggi da esso apportati sono <strong>di</strong>versi:<br />
- Il lavoro non va in stallo e non segue percorsi non corretti e perciò gli impiegati sono<br />
raramente chiamati a recuperare situazioni <strong>di</strong> errore.<br />
- I manager possono focalizzarsi su problemi <strong>di</strong> business quali performance in<strong>di</strong>viduali,<br />
procedure <strong>di</strong> ottimizzazione, e casi speciali, anziché badare all’assegnamento delle attività.<br />
Gli impiegati sono sollevati dal compito <strong>di</strong> inviare e tenere traccia del loro lavoro, in quanto<br />
queste operazioni sono svolte in automatico.<br />
- Le procedure sono documentate formalmente ed eseguite correttamente; ciò assicura che il<br />
lavoro sia svolto nella maniera in cui è stato pianificato dal manager, andando a sod<strong>di</strong>sfare<br />
tutti i requisiti a cui è soggetto.<br />
6
Workflow Capitolo 2<br />
- I compiti più importanti vengono svolti per primi, assegnando la persona o macchina più<br />
appropriata ad ogni attività componente il processo. Gli impiegati non sprecano tempo<br />
scegliendo il lavoro da svolgere o rimandando compiti complessi ma al contempo<br />
importanti.<br />
- Viene migliorata l’efficienza in quanto l’automatizzazione dei processi porta all’eliminazione<br />
<strong>di</strong> molti step non necessari.<br />
- Rispetto ad un workflow tra<strong>di</strong>zionale, l’introduzione del parallelismo, cioè l’esecuzione<br />
concorrente <strong>di</strong> più task, porta ad una semplificazione del processo e a minor attese e<br />
per<strong>di</strong>te <strong>di</strong> tempo.<br />
- Porta miglioramenti anche per quanto riguarda il servizio clienti, in quanto la consistenza<br />
del processo porta ad una maggiore preve<strong>di</strong>bilità del livello <strong>di</strong> risposta ai clienti.<br />
- Dal punto <strong>di</strong> vista della flessibilità si hanno dei vantaggi in quanto il controllo<br />
computerizzato dei processi permette la loro riprogettazione in linea con i cambiamenti <strong>di</strong><br />
business richiesti.<br />
Tutti questi vantaggi fanno si che l’utilizzo dei workflow porti benefici sia all’azienda che esegue i<br />
processi in maniera più efficiente con minor costo, sia agli impiegati che sono portati ad eseguire<br />
sempre il lavoro corretto.<br />
2.1. Concetti<br />
Scopo <strong>di</strong> questa sezione è quello <strong>di</strong> identificare i concetti <strong>di</strong> base e la terminologia [1] associata ai<br />
workflow.<br />
• Business process: insieme <strong>di</strong> una o più procedure o attività collegate, le quali realizzano<br />
collettivamente un obiettivo comune, normalmente all’interno del contesto <strong>di</strong> una struttura<br />
organizzativa che definisce ruoli funzionali e relazioni.<br />
Un business process può coinvolgere interazioni formali o informali tra i partecipanti e la<br />
sua durata può variare largamente.<br />
Può essere composto da attività automatizzate in grado <strong>di</strong> gestire il workflow e/o da attività<br />
manuali le quali non riguardano ciò che concerne la gestione del workflow.<br />
7
Workflow Capitolo 2<br />
• Process: rappresentazione <strong>di</strong> un processo <strong>di</strong> business in una forma che supporta la<br />
manipolazione automatica. La definizione <strong>di</strong> un processo consiste in una rete <strong>di</strong> attività e<br />
nelle loro relazioni, criterio atto ad in<strong>di</strong>care l’avvio, la terminazione <strong>di</strong> un processo, le<br />
informazioni legati alle attività in<strong>di</strong>viduali, i partecipanti, le applicazioni associate, i dati,<br />
ecc…<br />
La definizione <strong>di</strong> un processo può contenere collegamenti a sottoprocessi, definiti<br />
separatamente, che possono prendere parte alla definizione globale <strong>di</strong> processo.<br />
• Process Instance (Case): rappresentazione <strong>di</strong> una singola istanza <strong>di</strong> processo, creata,<br />
gestita ed eventualmente terminata da un workflow management system, in accordo con la<br />
definizione <strong>di</strong> processo. Ogni process instance usa dati propri ed è in grado <strong>di</strong> procedere<br />
in<strong>di</strong>pendentemente attraverso i vari step fino al suo completamento o terminazione.<br />
Ogni process instance mantiene uno stato interno che rappresenta il suo stato <strong>di</strong><br />
avanzamento attraverso le attività che la compongono.<br />
Una process instance può trovarsi in vari stati:<br />
- Initiated: l’istanza <strong>di</strong> processo è stata creata ma non è in esecuzione.<br />
- Running: l’istanza <strong>di</strong> processo ha iniziato la sua esecuzione ed una o più delle sue<br />
attività possono essere eseguite.<br />
- Active: uno o più activity sono iniziate e sono state create delle activity instance.<br />
- Suspended: l’istanza <strong>di</strong> processo è quiescente: ulteriori activity non possono essere<br />
iniziate prima che essa riprenda la sua esecuzione.<br />
- Completed: l’istanza <strong>di</strong> processo ha raggiunto le con<strong>di</strong>zioni <strong>di</strong> terminazione.<br />
- Terminated: l’esecuzione del processo è stata interrotta in maniera non corretta a<br />
causa <strong>di</strong> errori o su richiesta dell’utente.<br />
- Archived: l’istanza <strong>di</strong> processo è in uno stato <strong>di</strong> archiviazione, ma può essere riabilitata<br />
per la ripresa del processo.<br />
• Activity: descrizione <strong>di</strong> una parte <strong>di</strong> lavoro che forma uno step logico all’interno <strong>di</strong> un<br />
processo. Un’attività può essere manuale, che non supporta automazione computerizzata, o<br />
automatizzata. Un’attività <strong>di</strong> workflow richiede delle risorse umane o hardware per<br />
supportare l’esecuzione del processo; quando è richiesta una risorsa umana, l’attività viene<br />
assegnata ad un utente coinvolto nel workflow.<br />
Un’attività è tipicamente la più piccola unità <strong>di</strong> lavoro che è schedulata da un workflow<br />
engine durante l’esecuzione del processo.<br />
8
Workflow Capitolo 2<br />
• Activity Instance: rappresentazione <strong>di</strong> un’attività all’interno <strong>di</strong> una singola istanza <strong>di</strong><br />
processo. Ogni activity instance rappresenta una singola invocazione <strong>di</strong> una attività,<br />
relazionata esattamente ad una istanza <strong>di</strong> processo, ed usa i dati associati all’istanza <strong>di</strong><br />
processo. Diverse activity instance possono essere associate ad un process instance, ma<br />
un’activity instance non può essere associata a più process instance.<br />
Un’activity instance può trovarsi in vari stati:<br />
- Inactive: l’activity instance è stata creata, ma non ancora attivata; non esiste un workitem<br />
per quella attività.<br />
- Active: uno o più work-item sono stati creati e assegnati per essere processati.<br />
- Suspended: l’activity instance è quiescente: ulteriori work-item non possono essere<br />
iniziati prima che essa riprenda la sua esecuzione.<br />
- Completed: l’activity instance ha raggiunto le con<strong>di</strong>zioni <strong>di</strong> terminazione.<br />
• Work-Item: rappresentazione del lavoro che deve essere processato nel contesto <strong>di</strong><br />
un’attività all’interno <strong>di</strong> un’istanza <strong>di</strong> processo. Un work-item è normalmente presentato<br />
all’utente per mezzo <strong>di</strong> una lista <strong>di</strong> lavori, che mantiene i dettagli dei work-item assegnati a<br />
quello specifico utente.<br />
Dopo aver analizzato i concetti base dei workflow, ve<strong>di</strong>amo come essi si relazionano fra loro<br />
me<strong>di</strong>ante lo scheda in figura:<br />
Figura 1 - Relazioni tra la terminologia <strong>di</strong> base<br />
9
Workflow Capitolo 2<br />
2.2. Notazioni<br />
Tra le varie notazioni nell’ambito dei workflow, presentiamo la Business Process Modeling Notation<br />
(BPMN) [4], una notazione grafica per rappresentare flussi <strong>di</strong> processo, la quale verrà utilizzata in<br />
seguito per descrivere i casi <strong>di</strong> stu<strong>di</strong>o trattati.<br />
La Business Process Modeling Notation è uno standard sviluppato dalla Business Process Modeling<br />
Initiative, con lo scopo <strong>di</strong> fornire una notazione chiara, completa e facilmente comprensibile da tutti<br />
gli utenti, sia dagli analisti <strong>di</strong> business, sia dagli sviluppatori e sia da coloro che gestiranno e<br />
monitoreranno i processi rappresentati, fornendo un ponte standar<strong>di</strong>zzato che colma il gap tra la<br />
progettazione dei processi <strong>di</strong> business e la loro implementazione.<br />
La BPMN definisce un Business Process Diagram (BPD) che, utilizzando <strong>di</strong>agrammi <strong>di</strong> flusso<br />
composti da un insieme <strong>di</strong> elementi grafici, permette la creazione <strong>di</strong> modelli <strong>di</strong> business process, e<br />
allo stesso tempo <strong>di</strong> gestire in maniera efficace la complessità che essi comportano.<br />
La BPMI nella definizione dello standard ha scelto <strong>di</strong> organizzare gli elementi grafici della notazione<br />
in categorie specifiche, permettendo al lettore <strong>di</strong> riconoscere e capire facilmente gli elementi base<br />
dei <strong>di</strong>agrammi. Le quattro categorie base <strong>di</strong> elementi sono: Flow Objects, Connecting Objects,<br />
Swimlanes e Artifacts.<br />
I Flow Objects sono i tre elementi base che compongono un Business Process Diagram: Event,<br />
Activity e Gateway.<br />
Event<br />
Un evento è rappresentato da un cerchio ed è qualcosa che<br />
accade durante il processo. Esistono tre tipi <strong>di</strong> eventi:<br />
Start, Interme<strong>di</strong>ate e End.<br />
Gli eventi si possono rendere specifici al contesto <strong>di</strong> utilizzo<br />
inserendo al loro interno vari simboli. Un esempio può<br />
essere l’evento riguardante la ricezione <strong>di</strong> un messaggio.<br />
Activity<br />
Una attività è rappresentata da un rettangolo smussato e<br />
rappresenta un compito da svolgere nel processo.<br />
10
Workflow Capitolo 2<br />
Gateway<br />
Un gateway è usato per controllare la <strong>di</strong>visione o la<br />
convergenza <strong>di</strong> flussi <strong>di</strong> lavoro ed è rappresentato da un<br />
rombo con all’interno il simbolo che identifica il tipo <strong>di</strong><br />
controllo (es. “+” AND, “X” XOR).<br />
I Connecting Objects permettono <strong>di</strong> connettere fra loro i Flow Objects per creare una<br />
struttura schematica del processo. Sono stati definiti tre tipi <strong>di</strong> simboli:<br />
Sequence<br />
Flow<br />
Usato per mostrare l’or<strong>di</strong>ne in cui le attività devono essere<br />
eseguite in un processo, e viene rappresentato da una<br />
freccia semplice.<br />
Message<br />
Flow<br />
Usato per mostrare il flusso <strong>di</strong> messaggi fra due<br />
partecipanti del processo, e viene rappresentato da una<br />
freccia tratteggiata.<br />
Association<br />
Usato per associare dati, testo e altri oggetti con i Flow<br />
Objects e per mostrare gli input e gli output delle attività,<br />
ed è rappresentato da una linea punteggiata.<br />
Le Swimlanes sono un meccanismo che permette <strong>di</strong> organizzare le attività in categorie<br />
visuali separate e <strong>di</strong> illustrare <strong>di</strong>fferenti capacità o responsabilità.<br />
Pool<br />
Rappresenta un partecipante <strong>di</strong> un processo<br />
e agisce come contenitore grafico per<br />
partizionare un set <strong>di</strong> attività da altri pool.<br />
Lane<br />
È una sottopartizione all’interno <strong>di</strong> un pool e<br />
serve per organizzare e categorizzare<br />
attività.<br />
Gli Artifacts permettono <strong>di</strong> estendere la notazione fornendo elementi per descrivere in maniera più<br />
dettagliata le <strong>di</strong>verse situazioni:<br />
11
Workflow Capitolo 2<br />
Data<br />
Object<br />
Sono meccanismi per mostrare come un dato è richiesto o<br />
prodotto da una attività e sono connessi alle attività tramite<br />
le association.<br />
Group Il raggruppamento può essere usato per scopi <strong>di</strong><br />
documentazione o <strong>di</strong> analisi, ma non influisce sul flusso <strong>di</strong><br />
processo.<br />
Annotation Sono dei meccanismi che forniscono informazioni<br />
ad<strong>di</strong>zionali per il lettore del <strong>di</strong>agramma.<br />
Uno degli utilizzi <strong>di</strong> BPMN è quello <strong>di</strong> realizzare <strong>di</strong>agrammi che descrivano l’interazione tra due o più<br />
entità <strong>di</strong> business creando un modello <strong>di</strong> tipo collaborativo chiamato processo Business-to-Business<br />
(B2B). Per questo motivo, nel nostro lavoro <strong>di</strong> tesi, adotteremo questa notazione per descrivere i<br />
casi <strong>di</strong> stu<strong>di</strong>o trattati.<br />
12
Workflow Capitolo 2<br />
2.3. Casi <strong>di</strong> stu<strong>di</strong>o<br />
In questo paragrafo introdurremo una descrizione dettagliata, utilizzando la notazione BPMN, dei<br />
flussi <strong>di</strong> processo caratterizzanti i due casi <strong>di</strong> stu<strong>di</strong>o trattati, che ci serviranno per poter modellare e<br />
implementare le <strong>di</strong>verse varianti <strong>di</strong> <strong>di</strong>stribuzione dei flussi <strong>di</strong> processo in<strong>di</strong>viduate.<br />
2.3.1. Click4aLoan<br />
Il primo caso <strong>di</strong> stu<strong>di</strong>o è relativo ad un flusso <strong>di</strong> processo per la gestione <strong>di</strong> prestiti bancari via<br />
Web. Innanzitutto possiamo identificare tre <strong>di</strong>versi attori che prendono parte al processo <strong>di</strong><br />
richiesta/gestione del prestito: l’utente che richiede il prestito (Applicant), il manager che effettua<br />
una validazione preliminare e una valutazione finale, e gli impiegati (Employee), che hanno il<br />
compito <strong>di</strong> verificare che l’utente abbia tutti i requisiti necessari per poter ricevere il finanziamento<br />
desiderato tramite <strong>di</strong>verse attività <strong>di</strong> controllo (Job Check, Financial Check, Residence Check, Cre<strong>di</strong>t<br />
Check).<br />
Nella pagina successiva viene illustrato, tramite la notazione BPMN, il flusso <strong>di</strong> operazioni che<br />
compongono il workflow <strong>di</strong> Click4aLoan.<br />
Il processo rappresenta i passi necessari per poter effettuare la richiesta <strong>di</strong> un prestito bancario.<br />
Esso inizia con la richiesta <strong>di</strong> un prestito da parte <strong>di</strong> un utente (Applicant). Tale richiesta viene<br />
processata dapprima da un manager aziendale che ne fa una valutazione preliminare e verifica se i<br />
dati immessi dall’utente sono vali<strong>di</strong>, interrompendo, in caso contrario, l’intero processo. Nel caso in<br />
cui i dati siano vali<strong>di</strong> il processo proseguirebbe la sua esecuzione e il manager passerebbe la<br />
richiesta agli impiegati, effettuando una selezione dei compiti da assegnare ad ogni impiegato.<br />
A questo punto il processo si <strong>di</strong>vide in due parti che possono essere svolte in <strong>di</strong>sgiunzione: infatti<br />
se l’utente avesse fatto richiesta <strong>di</strong> un prestito semplice (Loan), le verifiche da effettuare da parte<br />
degli impiegati sono quella finanziaria, <strong>di</strong> residenza e <strong>di</strong> cre<strong>di</strong>to bancario. Nel caso <strong>di</strong> un mutuo<br />
(Mortgage), invece, gli impiegati devono verificare sia lo stato finanziario dell’utente e la residenza,<br />
sia effettuare una verifica sull’impiego dell’utente. Una volta effettuate tali verifiche, la richiesta<br />
ritorna sotto la competenza del manager, che effettua una verifica finale e decide se accettare o<br />
meno la richiesta <strong>di</strong> prestito. Infine l’utente decide se accettare o rifiutare il prestito, terminando<br />
così l’intero processo.<br />
13
Workflow Capitolo 2<br />
Figura 2 - Workflow <strong>di</strong> Click4aLoan<br />
14
Workflow Capitolo 2<br />
Lo scopo <strong>di</strong> questo caso <strong>di</strong> stu<strong>di</strong>o è quello <strong>di</strong> offrire un processo base da poter scomporre in<br />
<strong>di</strong>fferenti sottoprocessi da eseguire su <strong>di</strong>versi server, anche detti “peer”, per coprire i <strong>di</strong>versi<br />
scenari in<strong>di</strong>viduabili nel contesto dei workflow <strong>di</strong>stribuiti. Questi scenari verranno presentati e<br />
illustrati dettagliatamente nel capitolo 5.<br />
2.3.2. Click4aCar<br />
Questo secondo caso <strong>di</strong> stu<strong>di</strong>o è stato introdotto in quanto si adatta in modo più adeguato ad un<br />
particolare scenario <strong>di</strong> <strong>di</strong>stribuzione <strong>di</strong> workflow che tratteremo rispetto al caso <strong>di</strong> stu<strong>di</strong>o<br />
precedente, in quanto è necessario avere due flussi <strong>di</strong> processo separati; per questo motivo<br />
abbiamo scelto lo scenario della compraven<strong>di</strong>ta <strong>di</strong> macchine usate.<br />
In questo caso abbiamo due workflow in<strong>di</strong>pendenti, uno riguardante le auto, che viene gestito da<br />
un’applicazione che rappresenta un concessionario, e uno riguardante l’utente, proprio <strong>di</strong><br />
un’applicazione che gestisce i clienti del concessionario.<br />
Il workflow delle auto è quello riportato in figura 3:<br />
Car<br />
Manufacture Matriculation For Sale Purchase / Sale x<br />
Demolition<br />
Figura 3 - Workflow delle auto<br />
Il flusso <strong>di</strong> processo relativo ad un auto inizia con la sua fabbricazione, continua con la sua<br />
immatricolazione e prosegue con delle attività che rappresentano la compraven<strong>di</strong>ta dell’auto.<br />
Queste attività comprendono “For Sale”, in cui l’auto viene messa in ven<strong>di</strong>ta per consentirle la<br />
ricerca da parte dell’acquirente, e “Purchase / Sale” che conclude le operazioni <strong>di</strong> compraven<strong>di</strong>ta;<br />
esse possono essere eseguite più volte, a seconda del numero <strong>di</strong> transazioni che avvengono nel<br />
sistema. L’ultima fase, che porta al completamento del flusso <strong>di</strong> processo relativo ad un’auto, è la<br />
demolizione.<br />
User<br />
Figura 4 - Workflow degli utenti<br />
15
Workflow Capitolo 2<br />
Il workflow degli utenti inizia con la ricerca <strong>di</strong> un’auto e prosegue, dopo l’acquisto, con il suo<br />
utilizzo, per continuare poi con una attività <strong>di</strong> messa in ven<strong>di</strong>ta dell’auto. A questo punto il flusso <strong>di</strong><br />
lavoro ritorna alla fase iniziale <strong>di</strong> ricerca delle auto.<br />
I due workflow interagiscono fra loro solamente a fronte <strong>di</strong> una richiesta <strong>di</strong> acquisto o ven<strong>di</strong>ta <strong>di</strong><br />
un’auto.<br />
Questo caso <strong>di</strong> stu<strong>di</strong>o ci offre la possibilità <strong>di</strong> ricavare svariate combinazioni <strong>di</strong> interazione fra le<br />
due tipologie <strong>di</strong> workflow. Quella più semplice riguarda il solo workflow relativo alle auto, utilizzato<br />
dalla concessionaria, che immatricola le auto, le acquista per se, e in seguito le demolisce. A<br />
questo è possibile aggiungere un’istanza del workflow degli utenti, rappresentando un cliente che<br />
desideri acquistare o vendere la propria auto esclusivamente al concessionario. A questo scenario è<br />
possibile inserire altre istanze del workflow degli utenti, senza un limite massimo, per<br />
rappresentare un sistema <strong>di</strong> compraven<strong>di</strong>ta che coinvolga svariati utenti.<br />
16
Web Service Capitolo 3<br />
3. Web Service<br />
17
Web Service Capitolo 3<br />
Le varietà <strong>di</strong> sistemi informativi riscontrabili, al giorno d’oggi, presso le aziende che compongono<br />
una qualsiasi filiera, comportano una molteplicità <strong>di</strong> modalità <strong>di</strong> scambio delle informazioni e <strong>di</strong><br />
interazioni con le applicazioni, necessitando <strong>di</strong> adottare soluzioni che favoriscano l’integrazione<br />
attraverso l’utilizzo <strong>di</strong> standard <strong>di</strong> interazione che riducano la varietà <strong>di</strong> formati e quin<strong>di</strong><br />
<strong>di</strong>minuiscano i costi <strong>di</strong> transizione.<br />
Per consentire l’interazione a livello applicativo tra componenti e sistemi informatici realizzati su<br />
piattaforme tecnologiche <strong>di</strong>verse (es. Java/J2EE, .NET, COM+, Unix/Linux, ecc.) connessi tra loro<br />
tramite Internet, vengono oggi utilizzati i Web Service.<br />
Un Web Service è un sistema software creato per supportare interazioni macchina-macchina su una<br />
rete. Presenta un’interfaccia descritta in un formato <strong>di</strong> specifica standard (WSDL). Gli altri sistemi<br />
interagiscono con i Web Service nelle modalità descritte nella sua specifica, utilizzando messaggi<br />
SOAP (Simple Object Access Protocol), in formato XML tipicamente trasmessi utilizzando HTTP. Le<br />
applicazioni software scritte in vari linguaggi <strong>di</strong> programmazione ed eseguiti su varie piattaforme<br />
possono utilizzare i Web Service per scambiarsi dati o informazioni su reti come Internet in maniera<br />
molto simile a quanto avviene nella comunicazione tra processi su un unico computer.<br />
I vantaggi che comporta l’integrazione a livello applicativo fornita dai Web Service sono molteplici:<br />
in primo luogo si può operare sia in real-time sia in modalità <strong>di</strong>fferita; inoltre sfruttando le<br />
funzionalità dell’applicazione che espone i Web Services si riduce il rischio <strong>di</strong> inconsistenze nei dati<br />
gestiti.<br />
A complemento dello standard XML/SOAP, i Web Services prevedono la possibilità <strong>di</strong> utilizzare due<br />
standard complementari, sempre basati su XML:<br />
<br />
WSDL (Web Services Description Language): è un formato basato su XML per la descrizione<br />
<strong>di</strong> servizi remoti, con il quale è possibile descrivere l’interfaccia pubblica dei Web Services,<br />
in modo da fornire una modalità attraverso la quale altri soggetti possono sapere come<br />
accedervi.<br />
WSDL è spesso usato in combinazione con SOAP e XML Schema per fornire Web Services<br />
attraverso Internet. Un client che si connette ad un Web Service può leggere il WDSL per<br />
determinare quali funzioni fornisce il server. Ogni tipo speciale <strong>di</strong> dato usato, è incluso nel<br />
file WSDL in formato XML Schema. Il client può quin<strong>di</strong> usare SOAP per chiamare una delle<br />
funzioni elencate nel WSDL.<br />
18
Web Service Capitolo 3<br />
<br />
UDDI (Universal Description, Discovery, and Integration): è un registro basato su XML che<br />
affronta le problematiche <strong>di</strong> pubblicazione e reperimento dei servizi consentendo sia<br />
l’accesso alla descrizione e alle tipologie dei servizi e dei fornitori secondo una struttura ben<br />
definita, sia l’estrazione della tecnologia utilizzata nella realizzazione del servizio. Questo<br />
permette l’integrazione tra servizi realizzati con tecnologie <strong>di</strong>fferenti e la ricerca utilizzando<br />
chiavi <strong>di</strong>verse. Esso quin<strong>di</strong> non è un contenitore <strong>di</strong> servizi, ma uno strumento che tiene<br />
traccia della loro <strong>di</strong>slocazione e delle loro descrizioni.<br />
Naturalmente, quando si crea un Web Service, non è strettamente necessario crearne anche la<br />
descrizione WSDL e tantomeno pubblicarla in un registro UDDI. Questo soprattutto se l’utilizzo del<br />
Web Service viene riservato ad un numero ristretto <strong>di</strong> soggetti, nel qual caso le stesse informazioni<br />
possono essere fornite <strong>di</strong>rettamente.<br />
Il loro utilizzo può essere sincrono o asincrono, delineando quin<strong>di</strong> due modelli <strong>di</strong> funzionamento: il<br />
primo (sincrono) si basa sul para<strong>di</strong>gma client/server su Internet: il client richiede al server<br />
l’informazione <strong>di</strong> cui necessita e attende che il server risponda con il dato richiesto prima <strong>di</strong><br />
continuare l’elaborazione; il secondo (asincrono) consiste in uno scambio <strong>di</strong> messaggi XML<br />
attraverso Internet in maniera <strong>di</strong>fferita e programmata, senza una interazione real-time.<br />
Figura 5 - Ricerca tramite UDDI ed invocazione <strong>di</strong> un Web Service<br />
In figura 5 è riportato lo schema <strong>di</strong> funzionamento <strong>di</strong> una generica interazione tra Client, Registry e<br />
Web Service:<br />
19
Web Service Capitolo 3<br />
• Il Service Provider, innanzitutto, pubblica la descrizione WSDL del servizio che vuole<br />
rendere pubblico su un registry UDDI.<br />
• Il Service Requester, interessato ad utilizzare un determinato servizio, si connette ad un<br />
Service Broker ed effettua una ricerca del servizio desiderato nel registry UDDI.<br />
• Una volta trovato il servizio che sod<strong>di</strong>sfa le richieste del Client, viene ritornata a<br />
quest’ultimo la descrizione dell’interfaccia pubblica del Web Services e la metodologia con<br />
la quale comunicare con lo stesso.<br />
• A questo punto il Service Requester può invocare <strong>di</strong>rettamente il servizio web fornito dal<br />
Service Provider e comunicare con esso attraverso messaggi SOAP.<br />
3.1. Coreografia e orchestrazione<br />
I processi tuttora implementati, necessitano <strong>di</strong> adattarsi velocemente alle necessità del cliente e<br />
alle continue evoluzioni del mercato. Per garantire che la progettazione dei processi <strong>di</strong> business sia<br />
flessibile e relativamente semplice si sente la necessità <strong>di</strong> uno standard che descriva<br />
dettagliatamente i vari passi della progettazione.<br />
Tale standard dovrebbe regolamentare la gestione delle interazioni sia <strong>di</strong> EAI (Enterprise<br />
Application Integragration) che B2B attraverso i Web Services [9].<br />
L’interazione fra Web Service può essere affrontata a due livelli <strong>di</strong> astrazione: il livello <strong>di</strong><br />
orchestrazione e il livello <strong>di</strong> coreografia.<br />
L’orchestrazione <strong>di</strong> Web Services fornisce un approccio standard e aperto per l’interazione fra<br />
questi servizi permettendo la creazione <strong>di</strong> processi <strong>di</strong> business ad un livello più alto, descrivendo<br />
inoltre come i Web Services possono interagire tra loro a livello <strong>di</strong> messaggi scambiati, includendo<br />
la logica <strong>di</strong> business e l’or<strong>di</strong>ne <strong>di</strong> esecuzione delle interazioni, le quali possono coinvolgere più<br />
applicazioni, server e/o organizzazioni. Il risultato consiste nella specifica <strong>di</strong> un processo <strong>di</strong><br />
business “long-running” <strong>di</strong> alto livello che descrive un’applicazione eseguibile da un proprietario, il<br />
quale può esporre come nuovo servizio il processo risultante.<br />
La coreografia tiene traccia delle sequenze <strong>di</strong> messaggi che possono coinvolgere più applicazioni<br />
od organizzazioni attraverso una visione globale del processo, e punta a fornire una<br />
rappresentazione più collaborativa delle interazioni, descrivendo i processi ad un livello più alto<br />
20
Web Service Capitolo 3<br />
rispetto all’orchestrazione. Gli attori coinvolti si trovano tutti allo stesso livello e non è presente un<br />
proprietario del processo come avviene per l’orchestrazione.<br />
Nella recente storia dell'informatica sono state ideate <strong>di</strong>verse proposte <strong>di</strong> standard basate su XML<br />
che permettono <strong>di</strong> coprire sia l’orchestrazione che la coreografia <strong>di</strong> Web Services:<br />
<br />
XLang (Microsoft BizTalk language), nato per descrivere interazioni tra Web Services in<br />
Microsoft BizTalk Server e pesantemente basato su WSDL, estendendolo con alcune primitive<br />
per descrivere il comportamento reciproco dei Web Services. Permette inoltre <strong>di</strong> specificare<br />
sequenze, con<strong>di</strong>zioni ed esecuzioni parallele <strong>di</strong> Web Services e può gestire eventuali eccezioni<br />
durante l’esecuzione.<br />
<br />
WSFL (Web Services Flow Language), che fornisce due livelli <strong>di</strong> specifica (assimilabili a<br />
orchestrazione e coreografia):<br />
- Flow Model (orchestrazione) che descrive un business process in termini <strong>di</strong> interazioni<br />
tra Web Services, specificando i possibili usage patterns riguardanti le possibili<br />
combinazioni corrette <strong>di</strong> Web Services e gli obiettivi che queste consentono <strong>di</strong> ottenere.<br />
- Global Model (coreografia) che descrive gli interaction pattern <strong>di</strong> un insieme <strong>di</strong> Web<br />
Services, ovvero una visione globale delle possibili interazioni tra molti partner.<br />
<br />
WSCL (Web Services Conversation Language), che fornisce semplici concetti per descrivere<br />
conversazioni tra servizi, attraverso: cinque tipi <strong>di</strong> interazioni (Send, Receive, SendReceive,<br />
ReceiveSend, Empty), e transizioni: per descrivere l’or<strong>di</strong>ne delle interazioni, le quali a loro<br />
volta sono associate ai document types che vengono scambiati.<br />
<br />
BTP (Business Transaction Protocol), che copre transazioni “long-running” basate su Web<br />
services. È più orientato alla transazionalità ed estende il noto protocollo <strong>di</strong> commit a 2 fasi al<br />
mondo dei Web Services, introducendo appositi messaggi (prepare(d), commit(ted),<br />
cancel(led)) e i concetti Atom, assimilabili alle “vecchie” transazioni, e Cohesion, che possono<br />
comporre atoms, ma sono più flessibili, consentono, ad esempio, parziali fallimenti <strong>di</strong> alcuni<br />
partecipanti.<br />
<br />
ebXML (Electronic Business using XML), che descrive un’infrastruttura complessa per la<br />
comunicazione tra applicazioni <strong>di</strong> e-commerce, comprendendo aspetti architetturali,<br />
implementativi e <strong>di</strong> specifica (BPSS - Business Process Specification Schema), tra cui concetti<br />
legati alle conversazioni tra Web Services.<br />
21
Web Service Capitolo 3<br />
<br />
WSCI (Web Services Choreography Interface), che descrive il comportamento interattivo tra<br />
Web Services osservabile dall’esterno, supportando correlazione <strong>di</strong> messaggi, regole <strong>di</strong><br />
sequenza, gestione delle eccezioni, transazioni e collaborazione <strong>di</strong>namica.<br />
<br />
BPEL4WS (Business Process Exec. Lang. for WS), è il risultato della fusione tra XLang e<br />
WSFL, e rappresenta uno strato al <strong>di</strong> sopra <strong>di</strong> WSDL, in 3 sensi:<br />
- Ogni processo BPEL può essere esposto come servizio in WSDL (che descrive entry ed<br />
exit point del processo stesso).<br />
- Sfrutta data types definiti in WSDL per descrivere il passaggio <strong>di</strong> informazioni.<br />
- Può referenziare servizi esterni specificati in WSDL.<br />
Consente <strong>di</strong> specificare l’orchestrazione <strong>di</strong> Web Services attraverso il concetto <strong>di</strong> “Executable<br />
Process” e i partecipanti in una business interaction; ed inoltre <strong>di</strong> specificare coreografie per<br />
mezzo del concetto <strong>di</strong> “Business Protocol”, descrivendo un abstract process, cioè la parte<br />
visibile dall’esterno (messaggi scambiati tra i partner), e trascurando i dettagli del flusso <strong>di</strong><br />
processo.<br />
22
WebML Capitolo 4<br />
4. WebML<br />
23
WebML Capitolo 4<br />
Oggi le applicazioni Web basate sui dati sono il tipo <strong>di</strong> applicazioni più <strong>di</strong>ffuse sul Web e hanno la<br />
necessità <strong>di</strong> gestire e pubblicare una grande mole <strong>di</strong> dati. Lo sviluppo e la manutenzione <strong>di</strong> tali<br />
applicazioni necessita degli strumenti e delle tecniche trattati dall’ingegneria del software, che<br />
comprendono le seguenti caratteristiche: definizione <strong>di</strong> un processo <strong>di</strong> sviluppo del software ben<br />
organizzato, concetti <strong>di</strong> progettazione e notazioni appropriati e linee guida per la conduzione delle<br />
varie attività.<br />
Web Modeling Language (WebML) [5], un linguaggio <strong>di</strong> modellazione <strong>di</strong> alto livello per la specifica<br />
<strong>di</strong> applicazioni Web, segue lo stile <strong>di</strong> linguaggi <strong>di</strong> modellazione noti, come il modello Entità-<br />
Relazione e UML, permettendo così <strong>di</strong> rappresentare graficamente ogni concetto e <strong>di</strong> offrirne una<br />
specifica attraverso <strong>di</strong>agrammi visuali. Questi <strong>di</strong>agrammi visuali permettono <strong>di</strong> descrivere un<br />
ipertesto, definito come un insieme <strong>di</strong> pagine costituite da unit <strong>di</strong> contenuto e operazioni collegate<br />
tra loro, permettono la progettazione della struttura dati per poter memorizzare i contenuti e la<br />
creazione <strong>di</strong> stili grafici per le applicazioni trattate.<br />
I principali obiettivi del processo <strong>di</strong> modellazione WebML sono:<br />
<br />
Esprimere la struttura <strong>di</strong> un applicazione Web me<strong>di</strong>ante una descrizione ad alto livello,<br />
utilizzata per progettare e sviluppare l’applicazione stessa.<br />
<br />
<br />
Permettere <strong>di</strong> avere a <strong>di</strong>sposizione <strong>di</strong>versi punti <strong>di</strong> vista per lo stesso contenuto.<br />
Definire e sviluppare separatamente gli elementi della logica a tre livelli: dati, navigazione<br />
e presentazione.<br />
<br />
Permettere <strong>di</strong> raccogliere informazioni in un repository, che può consentirne un utilizzo<br />
<strong>di</strong>fferito per la generazione <strong>di</strong>namica delle pagine web.<br />
<br />
Realizzare politiche <strong>di</strong> personalizzazione <strong>di</strong> accesso e contenuti me<strong>di</strong>ante la modellazione<br />
esplicita <strong>di</strong> utenti e gruppi.<br />
<br />
Permettere mo<strong>di</strong>fiche all’applicazione o l’interazione con applicazioni esterne me<strong>di</strong>ante<br />
operazioni <strong>di</strong> manipolazione dei dati.<br />
WebML, nella specifica delle applicazioni Web Data-Intensive, segue tre prospettive <strong>di</strong>stinte e<br />
ortogonali per la modellazione:<br />
<br />
modello dei dati<br />
<br />
modello <strong>di</strong> ipertesto<br />
<br />
modello <strong>di</strong> presentazione<br />
24
WebML Capitolo 4<br />
Figura 6 - Struttura a tre livelli <strong>di</strong> WebML<br />
4.1. Modello dei dati<br />
Lo scopo della modellazione dei dati è quello <strong>di</strong> specificare in modo formale e intuitivo i dati che<br />
verranno utilizzati nell’applicazione. Tale modellazione è un’operazione preliminare, e permette,<br />
tramite uno schema concettuale, <strong>di</strong> riassumere in modo semplice e comprensibile i dati applicativi.<br />
Questo schema concettuale viene realizzato me<strong>di</strong>ante la notazione più <strong>di</strong>ffusa per la modellazione<br />
<strong>di</strong> database: il modello Entità-Relazione. Gli ingre<strong>di</strong>enti essenziali <strong>di</strong> questo modello sono le Entità,<br />
che rappresenta una descrizione delle caratteristiche comuni <strong>di</strong> un insieme <strong>di</strong> oggetti del modo<br />
reale, e le Relazioni, che rappresentano connessioni semantiche tra le entità.<br />
Le entità sono descritte tramite attributi, che rappresentano le proprietà degli oggetti del mondo<br />
reale, rilevanti per l’applicazione. Essi sono associati alle entità ed in<strong>di</strong>cano che tutte le istanze<br />
dell’entità sono caratterizzate dallo stesso insieme <strong>di</strong> attributi.<br />
Le relazioni permettono <strong>di</strong> realizzare connessioni semantiche tra le entità. La forma più semplice <strong>di</strong><br />
relazione è la relazione binaria, che connette due entità. Questo tipo <strong>di</strong> relazione è caratterizzata<br />
da due ruoli <strong>di</strong> relazione, ognuno dei quali esprime la funzione che una delle entità gioca nella<br />
partecipazione alla realizzazione. I ruoli delle relazioni possono essere annotati con dei vincoli <strong>di</strong><br />
car<strong>di</strong>nalità minimo e massimo, che in<strong>di</strong>cano il numero minimo e massimo <strong>di</strong> oggetti dell’entità <strong>di</strong><br />
destinazione a cui un oggetto dell’entità sorgente può essere collegato. Valori rilevanti per la<br />
car<strong>di</strong>nalità minima sono zero e uno, mentre per quelle massime sono uno o molti, quest’ultimo<br />
rappresentato dal simbolo N.<br />
25
WebML Capitolo 4<br />
Figura 7 - Modello dei dati<br />
La figura mostra uno schema <strong>di</strong> dati che permette la gestione degli utenti, dei loro gruppi <strong>di</strong><br />
appartenenza e delle site-view, cioè le aree dell’applicazione web associate ai vari gruppi <strong>di</strong> utenti.<br />
Un utente è caratterizzato da un ID univoco, da un nome utente, da una password e da una e-mail;<br />
un gruppo da un ID e da un nome; una site-view da un ID numerico e da un ID nominale. Un<br />
utente può appartenere da uno a N gruppi, mentre ha un solo gruppo <strong>di</strong> default; a sua volta un<br />
gruppo può avere e può essere gruppo <strong>di</strong> default <strong>di</strong> uno o N utenti; inoltre un gruppo è associato<br />
ad una sola site-view, mentre una site-view può essere associata a più gruppi.<br />
4.2. Modello <strong>di</strong> ipertesto<br />
Lo scopo della modellazione ipertestuale è quello <strong>di</strong> specificare l’organizzazione dell’interfaccia <strong>di</strong><br />
un’applicazione Web e <strong>di</strong> esprimere in modo semplice ed intuitivo aspetti quali la sud<strong>di</strong>visione<br />
logica dell’applicazione in moduli <strong>di</strong> alto livello, la loro partizione in sotto-moduli e la topologia<br />
dell’ipertesto <strong>di</strong> ogni modulo in termini <strong>di</strong> pagine, costituite da elementi <strong>di</strong> contenuto e link che<br />
supportano la navigazione e l’interazione dell’utente. WebML fornisce le primitive per la<br />
modellazione ipertestuale utilizzando concetti semplici ed espressivi propri del modello Entità-<br />
Relazione.<br />
Gli ingre<strong>di</strong>enti chiave sono le pagine, le unit e i link, organizzati in costrutti modulari detti aree e<br />
site-view. Le unit rappresentano le parti atomiche <strong>di</strong> contenuto da pubblicare e costituiscono gli<br />
elementi base delle pagine. Questi due elementi sono collegati tramite link per formare una<br />
struttura ipertestuale, i quali permettono la navigazione nell’ipertesto e il passaggio <strong>di</strong> parametri da<br />
una unit all’altra, requisito necessario per il corretto calcolo del contenuto <strong>di</strong> una pagina. Un<br />
insieme <strong>di</strong> pagine può essere raggruppato in una site-view, che sono un costrutto modulare per<br />
raccogliere le aree, le pagine, le unit e i relativi link. Infine, a livello <strong>di</strong> site-view è possibile<br />
26
WebML Capitolo 4<br />
specificare dei parametri globali per denotare delle informazioni che devono essere memorizzate e<br />
riutilizzate durante la navigazione dell’utente.<br />
4.2.1 Site-view<br />
Una site-view rappresenta un ipertesto coerente per sod<strong>di</strong>sfare un insieme ben definito <strong>di</strong> requisiti,<br />
per esempio relativi ad uno specifico gruppo <strong>di</strong> utenti. Le site-view più complesse possono essere<br />
decomposte gerarchicamente in aree, ovvero gruppi <strong>di</strong> pagine con uno scopo omogeneo, le quali<br />
sono contenitori <strong>di</strong> pagine, o in modo ricorsivo, <strong>di</strong> altre sottoaree.<br />
4.2.2 Pagine<br />
Le pagine costituiscono gli elementi <strong>di</strong> interfaccia forniti all’utente, il quale naviga l’ipertesto<br />
accedendo alle sua pagine secondo la sequenza desiderata. Tipicamente una pagina contiene<br />
<strong>di</strong>verse unit, raggruppate per specificare concetti ben definiti.<br />
Le pagine e le aree sono caratterizzate da alcune proprietà che evidenziano la loro importanza nel<br />
sito Web; in particolare, le pagine possono avere le seguenti tre proprietà:<br />
- Home, è la pagina all’in<strong>di</strong>rizzo <strong>di</strong> default del sito, o che viene presentata dopo che l’utente<br />
effettua la login. Deve essere unica all’interno della site-view e viene denotata col simbolo<br />
“H” all’interno dell’icona della pagina.<br />
- Default, è la pagina presentata <strong>di</strong> default quando si accede all’area che la racchiude. Deve<br />
essere unica all’interno <strong>di</strong> un’area e viene denotata da una “D” all’interno dell’icona della<br />
pagina.<br />
- Landmark, è una pagina raggiungibile da tutte le altre pagine o aree all’interno del modulo<br />
che la racchiude. Viene denotata da una “L” all’interno dell’icona della pagina.<br />
4.2.3 Unit<br />
Le unit (o unità <strong>di</strong> contenuto) sono gli elementi atomici per specificare il contenuto <strong>di</strong> una pagina<br />
web, e corrispondono ad una “vista” definita su <strong>di</strong> un contenitore <strong>di</strong> oggetti, che permette <strong>di</strong><br />
specificare tutte le istanze <strong>di</strong> un’entità sorgente o solo quelle che sod<strong>di</strong>sfano una con<strong>di</strong>zione <strong>di</strong><br />
selezione chiamata selettore.<br />
Ogni unit può avere parametri <strong>di</strong> input e output. I parametri <strong>di</strong> input sono i parametri richiesti dal<br />
selettore della unit, mentre quelli <strong>di</strong> output possono essere utilizzati per la computazione <strong>di</strong> una o<br />
più unit che <strong>di</strong>pendono dalla unit corrente.<br />
27
WebML Capitolo 4<br />
WebML supporta cinque tipi <strong>di</strong> unit:<br />
Data Unit<br />
Multidata<br />
Unit<br />
Index Unit<br />
Utilizzata per pubblicare dati <strong>di</strong> un singolo oggetto <strong>di</strong> una<br />
determinata entità; ed è caratterizzata dalle seguenti proprietà:<br />
Nome, Sorgente (Entità che fornisce il contenuto alla unit),<br />
Selettore (per identificare un unico oggetto) e attributi da<br />
visualizzare.<br />
Permette <strong>di</strong> presentare un insieme <strong>di</strong> oggetti <strong>di</strong> un’entità, ripetendo<br />
la presentazione <strong>di</strong> molte unit Data, ed è caratterizzata dalle<br />
seguenti proprietà: Nome, Sorgente (Entità che fornisce il<br />
contenuto alla unit), Selettore (per identificare un unico oggetto),<br />
attributi da visualizzare e clausola <strong>di</strong> or<strong>di</strong>namento.<br />
Permette <strong>di</strong> presentare un insieme <strong>di</strong> oggetti <strong>di</strong> un’entità come una<br />
lista, ed è caratterizzata dalle seguenti proprietà: Nome, Sorgente<br />
(Entità che fornisce il contenuto alla unit), Selettore (per<br />
identificare un unico oggetto), attributi da visualizzare e clausola <strong>di</strong><br />
or<strong>di</strong>namento. Una unit Index viene tipicamente utilizzata per<br />
selezionare un particolare oggetto, a <strong>di</strong>fferenza della unit Multidata,<br />
che viene invece utilizzata per elaborare tutti gli oggetti mostrati.<br />
La unit Index ammette due varianti:<br />
- Multi-choice Index Unit: ogni elemento della lista è<br />
associato ad una casella <strong>di</strong> scelta che permette all’utente <strong>di</strong><br />
selezionare un insieme <strong>di</strong> oggetti anziché un singolo<br />
oggetto.<br />
- Hierarchical Index Unit: le voci dell’in<strong>di</strong>ce sono<br />
organizzate secondo un albero a più livelli.<br />
Scroller<br />
Unit<br />
Entry Unit<br />
Fornisce i coman<strong>di</strong> per navigare una sequenza <strong>di</strong> oggetti, per<br />
esempio tutte le istanze <strong>di</strong> un’entità, ed è caratterizzata dalle<br />
seguenti proprietà: Nome, Sorgente (Entità che fornisce il<br />
contenuto alla unit), Selettore (per identificare un unico oggetto),<br />
Block Factor (numero <strong>di</strong> elementi <strong>di</strong> un blocco) e clausola <strong>di</strong><br />
or<strong>di</strong>namento.<br />
Supporta l’inserimento dei dati tramite form, viene utilizzata per<br />
ricevere gli input dall’utente, che viene tipicamente impiegato per<br />
effettuare ricerche all’interno <strong>di</strong> un insieme <strong>di</strong> oggetti <strong>di</strong> un entità o<br />
fornire i parametri a operazioni che aggiornano il contenuto della<br />
base <strong>di</strong> dati. È caratterizzata dalle seguenti proprietà: Nome,<br />
Campi (per l’inserimento dei valori).<br />
28
WebML Capitolo 4<br />
4.2.4 Operation<br />
WebML include inoltre <strong>di</strong>verse operazioni, che rappresentano le primitive più comunemente usate<br />
per aggiornare le istanze delle entità e delle relazioni dell’applicazione. Le operation unit <strong>di</strong> WebML<br />
sono delle unit che possono essere posizionate all’esterno delle pagine, che a <strong>di</strong>fferenza delle unit<br />
<strong>di</strong> contenuto non hanno lo scopo <strong>di</strong> pubblicare informazioni, ma eseguono semplicemente<br />
un’azione. Esse sono collegate ad altre operazioni o unit tramite link, possono avere un oggetto<br />
sorgente e dei selettori.<br />
WebML fornisce delle operazioni predefinite, per il controllo degli accessi e per l’invio <strong>di</strong> e-mail, e<br />
generiche:<br />
Operazioni predefinite:<br />
Create Unit<br />
Delete Unit<br />
Mo<strong>di</strong>fy Unit<br />
Connect Unit<br />
Disconnect<br />
Unit<br />
Permette <strong>di</strong> creare una nuova istanza <strong>di</strong> attività, ed è caratterizzata<br />
da un nome, dall’entità sorgente su cui si applica l’operazione e un<br />
insieme <strong>di</strong> assegnamenti che legano gli attributi dell’oggetto da<br />
creare con i valori dei parametri passati.<br />
Permette <strong>di</strong> eliminare uno o più oggetti <strong>di</strong> una determinata entità,<br />
ed è caratterizzata da un nome, dall’entità sorgente e dal selettore<br />
che determina gli oggetti su cui si applica l’operazione.<br />
Permette <strong>di</strong> aggiornare uno o più oggetti <strong>di</strong> una determinata entità,<br />
ed è caratterizzata da un nome, dall’entità sorgente, dal selettore<br />
che determina gli oggetti su cui si applica l’operazione e un insieme<br />
<strong>di</strong> assegnamenti che associano i nuovi valori agli attributi degli<br />
oggetti da mo<strong>di</strong>ficare.<br />
Permette <strong>di</strong> creare nuove istanze <strong>di</strong> una relazione e si applica a uno<br />
dei due possibili ruoli <strong>di</strong> una relazione e crea una o più istanze del<br />
ruolo della relazione che connette alcuni oggetti all’entità sorgente<br />
con alcuni oggetti dell’entità destinazione. È caratterizzata da un<br />
nome, dal ruolo della relazione al quale si applica l’operazione e da<br />
due selettori, uno per in<strong>di</strong>viduare gli oggetti dell’entità sorgente, e<br />
uno per gli oggetti dell’entità destinazione.<br />
Permette <strong>di</strong> cancellare le istanze <strong>di</strong> una relazione e si applica a uno<br />
dei due possibili ruoli <strong>di</strong> una relazione e cancella le connessioni tra<br />
alcuni oggetti dell’entità sorgente e alcuni oggetti dell’entità<br />
destinazione. È caratterizzata da un nome, dal ruolo della relazione<br />
al quale si applica l’operazione e da due selettori, uno per<br />
in<strong>di</strong>viduare gli oggetti dell’entità sorgente, e uno per gli oggetti<br />
dell’entità destinazione.<br />
29
WebML Capitolo 4<br />
Operazioni per il controllo degli accessi e per l’invio <strong>di</strong> e-mail:<br />
Login Unit<br />
Logout Unit<br />
SendMail Unit<br />
Permette il controllo degli accessi e la verifica dell’identità <strong>di</strong> un<br />
utente che accede al sito. Controlla la vali<strong>di</strong>tà dei parametri inseriti<br />
(nome utente e password) e porta l’utente alla home-page della<br />
sua site-view <strong>di</strong> default.<br />
Viene utilizzata per far terminare la sessione <strong>di</strong> un utente e<br />
portarlo ad una pagina <strong>di</strong> default in cui non vi è il controllo<br />
dell’accesso. Essa non ha parametri <strong>di</strong> input e <strong>di</strong> output.<br />
Permette <strong>di</strong> inviare un messaggio <strong>di</strong> posta elettronica, ed è<br />
caratterizzata da cinque parametri: il testo del messaggio,<br />
l’insieme degli in<strong>di</strong>rizzi dei destinatari, l’in<strong>di</strong>rizzo del mittente,<br />
l’oggetto del messaggio ed un insieme <strong>di</strong> allegati.<br />
Operazioni generiche:<br />
Operation<br />
Unit<br />
Permette <strong>di</strong> definire operazioni generiche la cui specifica è data<br />
semplicemente dal nome dell’operazione. Viene eseguita al <strong>di</strong> fuori<br />
del contesto WebML.<br />
4.2.5 Link<br />
Le pagine e le unit possono essere collegate tramite link, che permettono <strong>di</strong> specificare i possibili<br />
percorsi navigazionali tra le pagine, le possibili selezioni offerte all’utente e l’effetto dell’interazione<br />
dell’utente sul contenuto delle unit visualizzate nella pagina. Le nozioni principali del modello<br />
navigazionale, sono i concetti <strong>di</strong>:<br />
- Link: collegamento orientato tra due unit o pagine.<br />
- Parametro del link: specifica <strong>di</strong> un’informazione che viene trasportata dalla sorgente alla<br />
destinazione <strong>di</strong> un link.<br />
- Selettore parametrico: selettore <strong>di</strong> una unit i cui pre<strong>di</strong>cati contengono riferimenti a dei<br />
parametri <strong>di</strong> link.<br />
I link possono essere utilizzati anche per specificare particolari tipi <strong>di</strong> flussi <strong>di</strong> informazione tra unit,<br />
che avvengono senza l’intervento dell’utente. Ne esistono due tipologie:<br />
- Automatici: vengono navigati senza l’intervento dell’utente e propagano l’informazione<br />
contestuale scelta in modo automatico dalla unit sorgente a quella <strong>di</strong> destinazione.<br />
30
WebML Capitolo 4<br />
- Di trasporto: vengono utilizzati solamente per passare informazione contestuale da una<br />
unit ad un’altra. Abilita solamente il passaggio <strong>di</strong> parametri e non la navigazione<br />
dell’utente.<br />
Una particolare tipologia <strong>di</strong> link è rappresentata dai link uscenti dalle unit che rappresentano<br />
operazioni, che si <strong>di</strong>stinguono in OK-Link e KO-Link, che catturano rispettivamente gli eventi <strong>di</strong><br />
successo e <strong>di</strong> fallimento dell’operazione, permettendo al progettista <strong>di</strong> scegliere azioni alternative<br />
dopo l’esecuzione <strong>di</strong> un’operazione a seconda del risultato della sua esecuzione.<br />
4.2.6 Parametri globali<br />
Esistono delle situazioni in cui le informazioni contestuali non vengono trasferite punto a punto<br />
durante la navigazione, ma devono essere <strong>di</strong>sponibili “globalmente” a tutte le pagine del sito. Per<br />
questo motivo WebML offre la nozione <strong>di</strong> parametro globale, che consiste in un’informazione<br />
associata alla sessione dell’utente, che può essere impostata esplicitamente durante la navigazione<br />
dell’ipertesto ed estratta successivamente per calcolare il contenuto <strong>di</strong> alcune unit, attraverso due<br />
unit apposite chiamate “Set Unit” e “Get Unit”.<br />
4.3. Modello <strong>di</strong> presentazione<br />
Il modello <strong>di</strong> presentazione descrive come appaiono graficamente le pagine web in<strong>di</strong>pendentemente<br />
dal linguaggio usato per la loro pubblicazione.<br />
La progettazione della presentazione consiste nella definizione dei fogli <strong>di</strong> stile XSL contenenti le<br />
regole <strong>di</strong> presentazione necessarie a produrre i template <strong>di</strong> pagina. Un foglio <strong>di</strong> stile XSL consiste in<br />
un insieme <strong>di</strong> regole che governano il modo in cui l’intera pagina e i vari tipi <strong>di</strong> unit vengono<br />
generati.<br />
Partendo dal modello WebML generato è poi possibile ottenere automaticamente il co<strong>di</strong>ce <strong>di</strong><br />
navigazione dei dati in un linguaggio <strong>di</strong> scripting come ASP o JSP.<br />
31
WebML Capitolo 4<br />
4.4. Estensione <strong>di</strong> WebML per i Workflow<br />
Scopo <strong>di</strong> questa sezione è quello <strong>di</strong> mostrare come è stato arricchito il linguaggio WebML per poter<br />
integrare gli ipertesti con le funzionalità offerte dai workflow [10, 19], il che significa sviluppare<br />
interfacce web che permettano l’esecuzione <strong>di</strong> attività e che esprimano dei vincoli che permettano<br />
<strong>di</strong> guidare l’utente nella navigazione. Il processo <strong>di</strong> sviluppo <strong>di</strong> ipertesti guidati da workflow è<br />
centrato su una modellazione concettuale che integra tre prospettive ortogonali: modello <strong>di</strong><br />
processo, modello dei dati e modello <strong>di</strong> ipertesto.<br />
4.4.1. Modello <strong>di</strong> processo<br />
Il modello <strong>di</strong> processo rappresenta il processo che deve essere eseguito, nei termini delle attività<br />
che lo compongono, i suoi vincoli <strong>di</strong> precedenza e gli attori incaricati <strong>di</strong> eseguire ogni attività.<br />
I concetti e le notazioni alla base del modello <strong>di</strong> processo sono stati affrontati in modo dettagliato<br />
nel capitolo 2.<br />
4.4.2. Modello dei dati<br />
Per poter gestire i dati relativi ad un workflow in WebML, è stata introdotto un meta-modello dei<br />
dati apposito, integrato con i dati propri dell’applicazione. Esso include le entità e le relazioni<br />
richieste per gestire uno o più workflow.<br />
Figura 8 - Meta-modello dei dati per i workflow<br />
32
WebML Capitolo 4<br />
La figura mostra lo schema base del meta-modello dei dati per i workflow ed include:<br />
- I processi, cioè le descrizioni dei workflow processati e supportati.<br />
- I cases, le istanze <strong>di</strong> processo sono create, gestite ed eventualmente terminate dal<br />
workflow management system, e caratterizzate da uno stato <strong>di</strong> esecuzione.<br />
- Le attività che compongono il processo.<br />
- Le activity instance, cioè le istanze in<strong>di</strong>viduali <strong>di</strong> un’attività all’interno <strong>di</strong> un case. Possono<br />
essere assegnate ad utenti specifici o ad un gruppo <strong>di</strong> utente e sono eseguite da un unico<br />
utente. Anch’esse sono caratterizzate da uno stato.<br />
- I partecipanti del workflow, come gli utenti che svolgono il lavoro correlato alle activity<br />
instances. I partecipanti al workflow sono organizzati in utenti e gruppi, i quali possono<br />
essere usati per controllare l’accesso all’applicazione web.<br />
Più precisamente, le entità componenti il meta-modello dei dati per i workflow sono le seguenti:<br />
- PROCESS: Contiene la descrizione del processo utilizzato dall’applicazione, ed è<br />
caratterizzato da: Nome, Descrizione, ID.<br />
- CASE: Memorizza le istanze dei processi attivati durante l‘esecuzione dell’applicazione, ed è<br />
caratterizzato da: Nome, Started, Ended.<br />
- CASE STATUS: Memorizza lo stato delle istanze del processo attivato durante l‘esecuzione<br />
dell’applicazione, ed è caratterizzato da: Nome che è uno tra<br />
[Active, Complete,<br />
Suspended, Terminated, Archived].<br />
- ACTIVITY: Memorizza la descrizione dei tipi <strong>di</strong> attività che compongono un processo, ed è<br />
caratterizzato da: Nome, Descrizione, ID.<br />
- ACTIVITY ISTANCE: Memorizza le istanze delle attività attivate durante l‘esecuzione<br />
dell’applicazione, ed è caratterizzato da: Started, Ended.<br />
- ACTIVITY ISTANCE STATUS: Memorizza lo stato delle istanze delle attività attivate durante<br />
l‘esecuzione dell’applicazione, ed è caratterizzato da: Nome che è uno tra [Active, Inactive,<br />
Complete, Suspended, Terminated, Archived]<br />
33
WebML Capitolo 4<br />
Come possiamo notare i dati relativi alla nostra applicazione (Work Item) sono relazionati con la<br />
parte <strong>di</strong> database relativa al workflow tramite le istanze dell’attività con car<strong>di</strong>nalità 0:N. Infatti una<br />
applicazione può avere da 0 a N istanze <strong>di</strong> attività, così come le istanze <strong>di</strong> attività sono relazionate<br />
con zero o N applicazioni.<br />
4.4.3. Modello <strong>di</strong> ipertesto<br />
La modellazione <strong>di</strong> un ipertesto guidato da workflow potrebbe essere vista come una naturale<br />
estensione della modellazione <strong>di</strong> pagine e aree classiche. In particolare, pagine e aree possono<br />
essere utilizzate per rappresentare attività e unità <strong>di</strong> operazione per gestire il workflow.<br />
Il contenuto delle pagine che costituiscono le attività sono rappresentate da contenuti WebML e<br />
operation units. Per poter definire un’attività, sono state aggiunte al modello <strong>di</strong> ipertesto standard<br />
le seguenti operazioni:<br />
Start / End<br />
Start / end activities: le pagine costituenti un’attività devono<br />
essere racchiuse tra questi due simboli. Perché un’attività possa<br />
iniziare bisogna che siano verificate due precon<strong>di</strong>zioni:<br />
la presenza delle informazioni:<br />
- Activity type: un’attività deve essere associata ad un<br />
singolo Activity type.<br />
- User: chi deve eseguire l’attività.<br />
- Case: il case nel quale l’attività deve essere svolta.<br />
i parametri globali:<br />
- Current user: chi svolgerà l’azione.<br />
- Current case: al quale l’attività sarà associata a runtime.<br />
- Current activity istance.<br />
Start / end cases: la prima attività del processo avvierà il<br />
case, e l’ultima lo farà terminare. Se un’attività avvia un case,<br />
saranno compiute le operazioni associate allo “starting case”. (es<br />
crea un nuovo case, il cui stato è settato ad “attivo” e setta il<br />
parametro globale “current case”). Le operazioni duali vengono<br />
eseguite nel caso in cui l’attività faccia terminare il case.<br />
Expression<br />
Parsing Unit<br />
Permette <strong>di</strong> valutare <strong>di</strong>verse espressioni (booleane,<br />
matematiche), presentando in output un risultato in accordo con<br />
i parametri in ingresso. Questa unit accetta l’espressione da<br />
valutare come una proprietà. Le espressioni sono composte da<br />
un numero variabile <strong>di</strong> pre<strong>di</strong>cati che devono essere forniti alla<br />
unit come parametri <strong>di</strong> input.<br />
34
WebML Capitolo 4<br />
Switch Unit Utilizzata per selezionare <strong>di</strong>versi rami<br />
decisionali, in base ad un singolo valore <strong>di</strong><br />
input. Ogni OK-link è associato ad un valore<br />
costante che deve essere comparato con il<br />
valore <strong>di</strong> input. Logicamente i vari rami<br />
devono essere in <strong>di</strong>sgiunzione tra <strong>di</strong> loro.<br />
Test Unit E’ utilizzata per valutare espressioni booleane. Se<br />
l’espressione in ingresso fosse vera si procederebbe verso<br />
l’OK-link, in caso fosse falsa verso il KO-link. (trasportando in<br />
uscita tale valore).<br />
Workflow<br />
Aware Index<br />
Unit<br />
Assign Unit<br />
Questa unit viene utilizzata per estrarre dati relativi ad<br />
un’istanza <strong>di</strong> una attività. Essa estrae solo le istanze relative<br />
ad una data attività se questa appartiene ad un tipo<br />
prefissato (Activity ID), ha un particolare stato, appartiene ad<br />
un case che abbia un determinato stato, o che sia assegnata<br />
ed eseguita dall’utente corrente.<br />
Questa unit viene utilizzata per assegnare degli oggetti<br />
dell’applicazione (dati) ad una particolare istanza <strong>di</strong> attività.<br />
Scopo <strong>di</strong> questa unit è quello <strong>di</strong> definire “link <strong>di</strong> dati” tra le<br />
attività, e <strong>di</strong> assegnare dati ad uno specifico utente.<br />
Quando un’attività produce un dato da usare in un’altra<br />
attività, esso può essere passato all’altra attività<br />
assegnandolo come un’attività. Questi oggetti da passare<br />
devono appartenere ad un’entità connessa all’ entità “Activity<br />
Istance”.<br />
Get Activity<br />
Status Unit<br />
Viene utilizzata per ottenere lo stato <strong>di</strong> una attività.<br />
35
WebML Capitolo 4<br />
4.5. Estensione <strong>di</strong> WebML per i Web Service<br />
Scopo <strong>di</strong> questa sezione è quello <strong>di</strong> mostrare come è stato integrato il linguaggio WebML [11, 19,<br />
20] per poter dare la possibilità al progettista <strong>di</strong> utilizzare la tecnologia dei Web Service nelle<br />
applicazioni web.<br />
4.5.1. Primitive per la descrizione e la pubblicazione <strong>di</strong> servizi<br />
L’estensione <strong>di</strong> WebML per i Web Service permette <strong>di</strong> pubblicare schemi <strong>di</strong> ipertesto come dei Web<br />
Service, tramite le primitive standard <strong>di</strong> ipertesto e la unit Synchronous Solicit-Response Service<br />
Operation, utilizzata per processare un messaggio da un client e per comporre l’appropriata<br />
risposta.<br />
La unit Solicit-Response si presenta col seguente simbolo:<br />
Solicit Response<br />
Figura 9 - Simbolo della unit Solicit-Response<br />
L’unica proprietà <strong>di</strong> questa unit è il suo Nome, è possibile creare parametri <strong>di</strong> input attraverso il<br />
menu contestuale (“Add Parameter”).<br />
Le site-view che contengono i servizi pubblicati devono avere particolari caratteristiche:<br />
- Deve essere aggiunta la proprietà personalizzata “ApplicationBaseAddress” col valore<br />
“http://localhost:{http-port}/{application-name}” per poter impostare l’in<strong>di</strong>rizzo<br />
base dell’applicazione.<br />
- Deve essere aggiunta la proprietà personalizzata “ServiceGroup” col valore “Yes” per poter<br />
definire una site-view che permetta <strong>di</strong> pubblicare un web service.<br />
- Il layout <strong>di</strong> pagina deve essere impostato sul valore “SOAP Envelope” per permettere<br />
all’applicazione <strong>di</strong> generare file <strong>di</strong> configurazione SOAP al posto <strong>di</strong> pagine JSP. Inoltre deve<br />
essere selezionato lo stylesheet “Web services” per poter generare documenti XML al posto<br />
<strong>di</strong> pagine HTML.<br />
36
WebML Capitolo 4<br />
Per ogni site-view <strong>di</strong> questo tipo viene creato un file <strong>di</strong> configurazione SOAP, che contiene le<br />
informazioni necessarie riguardanti sia il progetto sia ogni Web Service che viene pubblicato. In<br />
questo file sono contenute le seguenti informazioni:<br />
- L’application base address che definisce l’in<strong>di</strong>rizzo dell’applicazione.<br />
- Per ogni unit Solicit-Response sono registrati i dati:<br />
o<br />
o<br />
o<br />
o<br />
o<br />
Soap-path: che definisce l’end-point-url del Web Service.<br />
Tag-name: che definisce il nome del Web Service.<br />
Id: l’id della unit Solicit-Response.<br />
Operation-type: che definisce il tipo <strong>di</strong> Web Service, Solicit-Response o Notification.<br />
Url-path: l’id della unit o della pagina che seguono <strong>di</strong>rettamente la unit Solicit-<br />
Response.<br />
- Per ogni parametro definito per la unit Solicit-Response sono registrate le seguenti<br />
informazioni:<br />
o<br />
o<br />
Url-name: la destinazione del parametro.<br />
Tag-name: il nome del parametro.<br />
Un esempio <strong>di</strong> pubblicazione <strong>di</strong> Web Service è mostrato in figura, dove sono riportate una unit<br />
Solicit-Response e una pagina contenente una lista dei prestiti da restituire.<br />
Loan Types<br />
getLoanTypes<br />
Loan Types<br />
Index<br />
Loan Proposal<br />
Ed il relativo file <strong>di</strong> configurazione SOAP:<br />
Figura 10 - Esempio <strong>di</strong> pubblicazione <strong>di</strong> Web Service<br />
<br />
<br />
<br />
37
WebML Capitolo 4<br />
Per ogni unit Solicit-Response viene generato un file WSDL a livello <strong>di</strong> presentazione, e contiene le<br />
seguenti informazioni:<br />
- Types: L’elemento wsdl:types racchiude le definizioni dei tipi <strong>di</strong> dati rilevanti per i messaggi<br />
scambiati dal Web Service, specificati per mezzo del linguaggio XML Schema.<br />
Per poter generare il file WSDL automaticamente sono assunte le convenzioni:<br />
o<br />
Il nome dei tipi <strong>di</strong> output ritornati dal Web Service è il nome dei messaggi <strong>di</strong><br />
risposta.<br />
o<br />
Il contenuto dei tipi <strong>di</strong> output racchiude il nome dell’entità sulla quale la content<br />
unit è definita (Loan Proposal), ed è composto dagli attributi mostrati dalla content<br />
unit ed i rispettivi tipi. Ogni tipo <strong>di</strong> dato WebML viene mappato in un tipo <strong>di</strong> dato<br />
XML Schema, come mostrato nella tabella:<br />
Tipo WebML<br />
String<br />
Text<br />
Integer<br />
Number<br />
Float<br />
Date<br />
Boolean<br />
URL<br />
BLOB<br />
Tipo XML Schema<br />
s:string<br />
s:string<br />
s:int<br />
s:double<br />
s:float<br />
s:date<br />
s:Boolean<br />
s:string<br />
s:string<br />
- Messages: nel caso <strong>di</strong> un’operazione <strong>di</strong> Solicit-Response contiene due messaggi, uno per la<br />
richiesta e uno per la risposta; mentre nel caso <strong>di</strong> un’operazione <strong>di</strong> Notification contiene<br />
solo un messaggio <strong>di</strong> input.<br />
Per poter generare il file WSDL automaticamente sono assunte le convenzioni:<br />
o<br />
I nomi dei messaggi sono i nomi delle unit Solicit-Responce, che agiscono come end<br />
point url del servizio col suffisso Request o Response.<br />
o<br />
Per ogni messaggio è definito un campo wsdl:part, <strong>di</strong>pendente dai parametri <strong>di</strong><br />
ingresso e <strong>di</strong> uscita del messaggio.<br />
o<br />
Per un messaggio <strong>di</strong> richiesta è definito un campo wsdl:part per ogni parametro <strong>di</strong><br />
ingresso della unit avente il nome del parametro e il tipo xsd:string.<br />
o<br />
Per un messaggio <strong>di</strong> risposta il wsdl:part è definito come specificato nell’elemento<br />
wsdl:types.<br />
38
WebML Capitolo 4<br />
- PortType: la sezione wsdl:portType definisce il set <strong>di</strong> operazioni e <strong>di</strong> messaggi astratti del<br />
servizio. Per poter generare il file WSDL automaticamente sono assunte le convenzioni:<br />
o<br />
o<br />
Il nome dell’operazione è il nome della Solicit-Response unit.<br />
I messaggi sono quelli definiti nella sezione definita precedentemente.<br />
- Bin<strong>di</strong>ng: il wsdl:bin<strong>di</strong>ng definisce il formato dei messaggi e i dettagli del protocollo da<br />
utilizzare per invocare l’operazione. Per poter generare il file WSDL automaticamente sono<br />
assunte le convenzioni:<br />
o<br />
I messaggi sono definiti da un particolare wsdl:portType, che punta <strong>di</strong>rettamente al<br />
wsdl:portType definito nella sezione precedente.<br />
o Viene utilizzato il protocollo SOAP 1.1.<br />
- Service: il gruppo <strong>di</strong> elementi wsdl:service raggruppa un insieme <strong>di</strong> porte relazionate fra<br />
loro. Attraverso l’elemento soap:address può essere definito l’end point url dove sarà<br />
raggiungibile il Web Service. Per poter generare il file WSDL automaticamente sono assunte<br />
le convenzioni:<br />
o<br />
L’in<strong>di</strong>rizzo è la concatenazione dell Application Base Address e il soap-path della<br />
unit Solicit-Response.<br />
Riportiamo ora il file WSDL relativo all’esempio precedente:<br />
<br />
targetNamespace="http://www.webratio.com"<br />
xmlns:s="http://www.w3.org/2001/XMLSchema"<br />
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"<br />
xmlns:soapenc="http://schemas.xmlsoap.org/soap/enco<strong>di</strong>ng/"<br />
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"<br />
xmlns:tns="http://www.webratio.com"<br />
xmlns:s0="http://www.webratio.com"><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
39
WebML Capitolo 4<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
WebML Capitolo 4<br />
One-Way<br />
Unit<br />
La unit One Way è del tutto simile alla precedente, ad eccezione<br />
del fatto che non prevede una risposta dal servizio Web<br />
invocato.<br />
Adapter<br />
Unit<br />
XML IN<br />
Unit<br />
XML OUT<br />
Unit<br />
Permette <strong>di</strong> applicare una trasformazione XSL [23] su un<br />
documento XML in ingresso, fornendo il documento XML<br />
trasformato come output. Può ricevere più <strong>di</strong> un documento in<br />
ingresso, ma produce sempre un solo documento in uscita.<br />
Permette <strong>di</strong> trasformare un documento XML in dati relazionali. I<br />
documenti XML in ingresso solitamente vengono forniti da una<br />
unit Request-Response o da una unit Adapter, e devono essere<br />
in un formato canonico che permetta <strong>di</strong> costruire<br />
automaticamente le entità e la relazioni nei database relazionali.<br />
Questa unit non presenta output, il risultato della computazione<br />
è salvato in un Database reale o in uno virtuale temporaneo.<br />
Effettua l’azione duale rispetto alla unit precedente, in<br />
particolare trasforma un frammento <strong>di</strong> schema E-R in un<br />
documento XML canonico.<br />
41
Workflow Distribuiti Capitolo 5<br />
5. Workflow Distribuiti<br />
42
Workflow Distribuiti Capitolo 5<br />
La <strong>di</strong>stribuzione dei processi è quella metodologia <strong>di</strong> design delle applicazioni me<strong>di</strong>ante la quale<br />
vengono assegnate le <strong>di</strong>verse attività, che compongono l’intero processo da modellizzare, ai vari<br />
server che possono eseguirle e che non con<strong>di</strong>vidano necessariamente una stessa base <strong>di</strong> dati<br />
contenente i meta-dati <strong>di</strong> processo [2, 21].<br />
Le Attività sono unità atomiche <strong>di</strong> <strong>di</strong>stribuzione, cioè dato un compito che può essere sud<strong>di</strong>viso in<br />
varie sotto-attività, esso deve essere spezzato in attività più piccole da far eseguire ciascuna a<br />
server <strong>di</strong>fferenti. La composizione <strong>di</strong> tutte queste sotto-attività (e del loro flusso <strong>di</strong> esecuzione),<br />
rappresenta l’intero processo.<br />
Da un punto <strong>di</strong> vista tecnologico, il fatto <strong>di</strong> coinvolgere <strong>di</strong>verse organizzazioni, pone il problema<br />
della <strong>di</strong>versità dei dati tra <strong>di</strong> esse e il problema <strong>di</strong> poter effettuare queries e update trasparenti sui<br />
vari database <strong>di</strong> organizzazioni <strong>di</strong>fferenti.<br />
Per questo motivo, ogni organizzazione fornisce dei Web Services me<strong>di</strong>ante i quali l’utente remoto<br />
può accedere ai dati locali <strong>di</strong> una organizzazione, e mo<strong>di</strong>ficarli secondo una logica definita, per<br />
evitare errori generici nel flusso delle operazioni da eseguire e per fornire una certa sicurezza<br />
nell’accesso ai dati. Inoltre, essendo i no<strong>di</strong> coinvolti nel processo interagenti tra essi via Http, nasce<br />
la necessità <strong>di</strong> poter comunicare tramite questo protocollo, e <strong>di</strong> pubblicare ipertesti e Web Services<br />
accessibili via Http, nonché <strong>di</strong> utilizzare i database locali o trasparentemente <strong>di</strong>stribuiti per poter<br />
memorizzare i dati dell’applicazione e del processo in atto.<br />
Sotto queste ipotesi, per poter governare correttamente i processi <strong>di</strong>stribuiti, esprimeremo i<br />
requisiti <strong>di</strong> <strong>di</strong>stribuzione tramite la notazione BPMN, che ci permetterà <strong>di</strong> assegnare esplicitamente<br />
varie attività ai <strong>di</strong>versi no<strong>di</strong>, o peer, coinvolti nel processo, ed integreremo la <strong>di</strong>stribuzione nel<br />
modello ipertestuale, utilizzando le estensioni per i Workflow e i Web Service <strong>di</strong> WebML, che ci<br />
consentiranno <strong>di</strong> pubblicare e invocare servizi remoti, nonché <strong>di</strong> gestire il relativo flusso <strong>di</strong> lavoro<br />
tra i vari server.<br />
Nell’ambito della <strong>di</strong>stribuzione dei processi, possiamo in<strong>di</strong>viduare <strong>di</strong>fferenti scenari <strong>di</strong> <strong>di</strong>stribuzione<br />
delle attività, che verranno descritti con l’ausilio della notazione BPMN, la quale verrà estesa<br />
tramite specifiche convenzioni, come il rappresentare ogni peer tramite un pool separato e lo<br />
scambio <strong>di</strong> messaggi <strong>di</strong> richiesta e risposta delle comunicazioni tra i server tramite frecce <strong>di</strong> tipo<br />
“Message Flow” che attraversano i pool. Inoltre adotteremo il tipo <strong>di</strong> evento “Message” per<br />
rappresentare l’avvio dell’attività successiva a fronte della ricezione <strong>di</strong> un messaggio.<br />
43
Workflow Distribuiti Capitolo 5<br />
Per poter descrivere meglio le <strong>di</strong>verse varianti della <strong>di</strong>stribuzione dei processi utilizzeremo i casi <strong>di</strong><br />
stu<strong>di</strong>o presentati nel capitolo 2, che permettono <strong>di</strong> comprendere con più chiarezza i vari approcci:<br />
- Distribuzione <strong>di</strong> un singolo servizio, dove solo un servizio semplice viene delegato ad un<br />
peer remoto.<br />
- Distribuzione dei sotto-processi, dove vengono delegati ai peer remoti <strong>di</strong>verse attività del<br />
processo, e in cui si possono identificare <strong>di</strong>verse metodologie <strong>di</strong> controllo del flusso <strong>di</strong><br />
processo:<br />
o Controllo centralizzato<br />
o Controllo <strong>di</strong>stribuito<br />
• Controllo <strong>di</strong>stribuito annidato<br />
• Controllo <strong>di</strong>stribuito generalizzato<br />
- Interazione fra processi in<strong>di</strong>pendenti, dove vengono coinvolti due o più flussi <strong>di</strong> processo<br />
che comunicano fra loro.<br />
5.1. Distribuzione <strong>di</strong> un singolo servizio<br />
Questo scenario rappresenta l’approccio più semplice alla <strong>di</strong>stribuzione dei processi, in quanto non<br />
vi è decentramento <strong>di</strong> attività o sotto-processi tra i vari server, ma riguarda solamente la<br />
<strong>di</strong>stribuzione <strong>di</strong> un servizio semplice.<br />
Nella realtà questo scenario copre <strong>di</strong>versi contesti: il contesto in cui un’azienda intende pubblicare<br />
un servizio per renderlo <strong>di</strong>sponibile ad altre entità che sfruttano questo servizio per portare a<br />
termine delle operazioni; il contesto in cui un’azienda desideri recuperare informazioni da basi <strong>di</strong><br />
dati remote e da applicativi già esistenti che le esportano per mezzo <strong>di</strong> Web Services.<br />
In questo scenario, le operazioni svolte sul peer che esporta il servizio (remoto), non fanno parte<br />
del flusso <strong>di</strong> processo, ma servono per portare a compimento una delle sue attività, che vengono<br />
svolte tutte sullo stesso peer, detto principale, che mantiene in un unico database i dati necessari<br />
all’applicazione e i meta-dati che permettono la gestione del workflow.<br />
Il peer che fornisce il servizio semplice, non è coinvolto nel workflow e perciò non ne possiede i<br />
meta-dati.<br />
Questo scenario è stato applicato al caso <strong>di</strong> stu<strong>di</strong>o Click4aLoan per simulare il caso in cui le<br />
proposte <strong>di</strong> prestito e le relative modalità <strong>di</strong> pagamento vengano rese <strong>di</strong>sponibili da un servizio<br />
remoto, e l’applicazione <strong>di</strong> gestione dei prestiti sfrutti l’invocazione <strong>di</strong> questo servizio per<br />
44
Workflow Distribuiti Capitolo 5<br />
presentare all’utente una lista delle proposte <strong>di</strong> prestito offerte dalle <strong>di</strong>verse banche, tra le quali<br />
potrà scegliere quella desiderata.<br />
In figura 11 è riportato il <strong>di</strong>agramma <strong>di</strong> processo del caso <strong>di</strong> stu<strong>di</strong>o Click4aLoan applicato a questo<br />
scenario, descritto tramite la notazione BPMN:<br />
Main Peer<br />
Remote Peer<br />
Applicant Manager Employee<br />
Application<br />
Request<br />
Get Remote Data<br />
Not Valid<br />
Preliminary<br />
Validation<br />
x<br />
Loan<br />
x<br />
Mortgage<br />
+<br />
Financial<br />
Check<br />
Financial<br />
Check<br />
Job<br />
Check<br />
Residence<br />
Check<br />
Residence<br />
Check<br />
+<br />
Cre<strong>di</strong>t<br />
Check<br />
x<br />
Final<br />
Validation<br />
x<br />
Not Valid<br />
Choice<br />
Figura 11 - Distribuzione <strong>di</strong> un singolo servizio applicata al caso <strong>di</strong> stu<strong>di</strong>o Click4aLoan<br />
45
Workflow Distribuiti Capitolo 5<br />
Il <strong>di</strong>agramma si presenta come quello riportato nel capitolo 2, figura 2, dove l’intero workflow<br />
risiede sul peer principale, fatta eccezione per la presenza <strong>di</strong> un peer remoto che rende <strong>di</strong>sponibili i<br />
dati relativi ai prestiti tramite la pubblicazione <strong>di</strong> un Web Service, invocato dal peer principale per<br />
ottenere le informazioni da presentare all’utente.<br />
5.2. Distribuzione dei sotto-processi<br />
In questo scenario cominciamo ad affrontare la vera e propria <strong>di</strong>stribuzione <strong>di</strong> attività e sottoprocessi<br />
su <strong>di</strong>versi peer, la quale introduce una nuova <strong>di</strong>mensione all’attività <strong>di</strong> design, cioè la<br />
scelta dell’ubicazione del controllo del processo <strong>di</strong>stribuito.<br />
Si possono infatti in<strong>di</strong>viduare <strong>di</strong>verse metodologie che il progettista può seguire per quanto<br />
riguarda la scelta dei peer che dovranno occuparsi <strong>di</strong> gestire il flusso <strong>di</strong> processo.<br />
Una prima metodologia può essere quella <strong>di</strong> delegare il controllo ad un unico peer centrale che<br />
abbia costantemente una visione generale dello stato <strong>di</strong> avanzamento del processo e delle sue<br />
attività, e in cui gli altri peer si limitino ad eseguire semplici attività atomiche. Una seconda è quella<br />
in cui il controllo del processo viene <strong>di</strong>stribuito tra i vari server, e in cui il peer centrale non ha<br />
continuamente una visione completa dello stato <strong>di</strong> avanzamento delle attività, siccome la gestione<br />
dei <strong>di</strong>versi sotto-processi è delegata ad altri peer. La coor<strong>di</strong>nazione dei peer può seguire <strong>di</strong>versi<br />
modelli <strong>di</strong> cui riconosciamo due varianti principali: coor<strong>di</strong>nazione annidata e generalizzata.<br />
5.2.1. Distribuzione con controllo centralizzato<br />
Con il controllo centralizzato del processo, vi è un peer principale incaricato <strong>di</strong> mantenere lo stato<br />
<strong>di</strong> avanzamento <strong>di</strong> tutte le attività <strong>di</strong> un determinato processo, anche quelle delegate ed eseguite<br />
su altri server.<br />
Questo scenario rappresenta il caso reale in cui un’azienda desideri delegare ad altre entità<br />
l’esecuzione <strong>di</strong> operazioni atomiche che andranno a far parte del suo flusso <strong>di</strong> processo. Tali<br />
operazioni, essendo atomiche, non richiedono a queste entità <strong>di</strong> dover essere a conoscenza del<br />
flusso <strong>di</strong> operazioni del processo, e le sollevano dal mantenerne i meta-dati <strong>di</strong> workflow.<br />
Per ogni attività delegata ad un peer remoto, verranno scambiati dei messaggi con il peer<br />
principale unicamente all’attivazione o al completamente della stessa.<br />
In figura 12 possiamo osservare un <strong>di</strong>agramma <strong>di</strong> sequenza che rappresenta l’interazione tra tre<br />
peer <strong>di</strong>fferenti in un contesto <strong>di</strong> <strong>di</strong>stribuzione con controllo centralizzato.<br />
46
Workflow Distribuiti Capitolo 5<br />
Le linee verticali denotano l’evoluzione temporale delle attività ed ogni numero corrisponde al loro<br />
or<strong>di</strong>ne <strong>di</strong> esecuzione. Nell’esempio possiamo vedere come il coor<strong>di</strong>natore (Main Peer) esegue<br />
l’attività 1 e delega la 2 al peer A, che terminata l’esecuzione contatta il coor<strong>di</strong>natore con un<br />
messaggio <strong>di</strong> completamento. Questa procedura avviene per tutte le attività svolte da ogni peer, in<br />
modo che ad ogni passo il manager sia a conoscenza dello stato <strong>di</strong> avanzamento del processo<br />
<strong>di</strong>stribuito.<br />
Figura 12 - Controllo centralizzato del processo<br />
Questo scenario è stato applicato al caso <strong>di</strong> stu<strong>di</strong>o Click4aLoan per rappresentare il caso in cui<br />
alcuni dei controlli da effettuare sulle richieste <strong>di</strong> prestito avvengano su un peer remoto, per<br />
simulare il fatto che vi sia una agenzia apposita che esegua questi compiti, riducendo il carico <strong>di</strong><br />
lavoro dell’entità che ha delegato queste attività.<br />
La figura 13 mostra l’intero flusso <strong>di</strong> processo del caso <strong>di</strong> stu<strong>di</strong>o Click4aLoan nel caso <strong>di</strong> controllo<br />
centralizzato, sempre per mezzo della notazione BPMN.<br />
47
Workflow Distribuiti Capitolo 5<br />
Figura 13 - Controllo centralizzato applicato al caso <strong>di</strong> stu<strong>di</strong>o Click4aLoan<br />
48
Workflow Distribuiti Capitolo 5<br />
Si può notare che per ogni attività completata sul peer remoto, è necessario inviare un messaggio<br />
al peer centrale con tutti i dati mo<strong>di</strong>ficati durante l’attività appena conclusa in modo da consentire<br />
al peer centrale <strong>di</strong> mantenere uno stato consistente <strong>di</strong> tutto il processo.<br />
I peer remoti non gestiscono nessun tipo <strong>di</strong> meta-data <strong>di</strong> processo, in quanto eseguono solo<br />
operazioni atomiche, mentre sono gestiti nella loro totalità dal peer principale, sempre con<br />
l’obiettivo <strong>di</strong> mantenere lo stato globale <strong>di</strong> avanzamento del processo.<br />
5.2.2. Distribuzione con controllo <strong>di</strong>stribuito<br />
Nella <strong>di</strong>stribuzione con controllo <strong>di</strong> processo <strong>di</strong>stribuito, nessun sotto-sistema coinvolto è sempre<br />
consapevole dello stato completo del processo. In questo caso il peer principale, è quello che inizia<br />
il processo, e tipicamente lo completa anche, ma tale simmetria non è obbligatoria per il controllo<br />
del processo <strong>di</strong>stribuito. Alcuni peer possono compiere uno o più attività, senza il bisogno <strong>di</strong><br />
notificare agli altri peer lo stato <strong>di</strong> avanzamento delle operazioni. Inoltre, ogni peer che esegue una<br />
o più attività può delegare nuove attività agli altri peer.<br />
Questo comporta che i meta-dati <strong>di</strong> processo sono <strong>di</strong>stribuiti sui vari peer, e la traccia <strong>di</strong><br />
avanzamento delle attività (ad esempio, la ricerca dello stato corrente <strong>di</strong> un case) può richiedere la<br />
consultazione <strong>di</strong> tutti i peer coinvolti.<br />
La coor<strong>di</strong>nazione dei peer può seguire dei modelli <strong>di</strong> cui riconosciamo due varianti principali:<br />
coor<strong>di</strong>nazione annidata e generalizzata.<br />
5.2.2.1. Controllo <strong>di</strong>stribuito con coor<strong>di</strong>nazione annidata<br />
La coor<strong>di</strong>nazione annidata consiste nella possibilità per un peer <strong>di</strong> delegare un sotto-processo "benparentesizzato"<br />
ad un altro peer; un sotto-processo "ben-parentesizzato" è un processo col quale<br />
si comunica tramite un solo punto <strong>di</strong> entrata e un solo punto <strong>di</strong> uscita.<br />
Questo scenario rappresenta il caso reale in cui un’azienda desideri delegare ad altre entità, non<br />
operazioni atomiche, ma un’insieme <strong>di</strong> attività tra esse correlate e componenti un sotto-processo. È<br />
facile notare come anche il peer a cui viene delegato tale sotto-processo deve essere in grado <strong>di</strong><br />
mantenere le informazioni necessarie ad una sua corretta gestione.<br />
Fondamentalmente, i sotto-processi che possono essere annidati sono quelli che vengono<br />
considerati come sequenza <strong>di</strong> attività in<strong>di</strong>pendenti strutturate internamente in una gerarchia <strong>di</strong><br />
sotto-attività.<br />
49
Workflow Distribuiti Capitolo 5<br />
Deve però essere rispettata una con<strong>di</strong>zione: un’eventuale <strong>di</strong>ramazione del flusso <strong>di</strong> processo, deve<br />
essere iniziata e completata all’interno dello stesso pool, ovvero il sotto-processo deve essere<br />
portato a compimento dallo stesso utente che lo ha avviato. Nel caso in cui questo sotto-processo<br />
venga delegato ad un altro peer, verranno quin<strong>di</strong> scambiati due soli messaggi fra i peer, uno per<br />
avviare il sotto-processo, e uno per notificarne la terminazione.<br />
Nella figura 14 possiamo osservare tale comportamento: solo dopo l’esecuzione delle attività 4 il<br />
“Main Peer” viene a conoscenza dello svolgimento delle attività 2 e 3 svolte sul peer A e della 4 sul<br />
peer B.<br />
Figura 14 - Controllo <strong>di</strong>stribuito con coor<strong>di</strong>nazione annidata<br />
La figura 15 mostra l’intero flusso <strong>di</strong> processo del caso <strong>di</strong> stu<strong>di</strong>o Click4aLoan nel caso <strong>di</strong> controllo<br />
<strong>di</strong>stribuito con coor<strong>di</strong>nazione annidata, sempre per mezzo della notazione BPMN, e precisamente il<br />
caso in cui vengono delegate ad un peer remoto le stesse attività dello scenario precedente, ma in<br />
questo caso le interazioni fra i due peer avverranno solo all’avvio e al termine dei sotto-processi<br />
delegati.<br />
Possiamo osservare i sotto-processi "ben-parentesizzati" delegati al peer remoto e caratterizzati da<br />
un unico punto <strong>di</strong> ingresso/uscita per quanto riguarda lo scambio dei messaggi. In questa<br />
50
Workflow Distribuiti Capitolo 5<br />
configurazione non è possibile, da parte del peer principale, tener traccia dello stato <strong>di</strong> tutte le<br />
sotto-attività svolte dai peer remoti, ma verrà a conoscenza dei risultati solo alla fine<br />
dell’esecuzione <strong>di</strong> tutte queste sotto-attività.<br />
A <strong>di</strong>fferenza dell’esempio precedente, i meta-dati <strong>di</strong> workflow necessitano <strong>di</strong> essere presenti su<br />
entrambi i peer, in quanto anche il peer remoto deve mantenere lo stato <strong>di</strong> avanzamento delle<br />
attività a lui delegate.<br />
Main Peer<br />
Applicant Manager Employee<br />
Manager<br />
Remote Peer<br />
Employee<br />
Application<br />
Request<br />
Preliminary<br />
Validation<br />
Not Valid<br />
x<br />
x<br />
Loan<br />
Financial<br />
Check<br />
Mortgage<br />
+<br />
Financial<br />
Check<br />
Residence<br />
Check<br />
Job<br />
Check<br />
Residence<br />
Check<br />
+<br />
Final<br />
Check<br />
Cre<strong>di</strong>t<br />
Check<br />
x<br />
Final<br />
Check<br />
Final<br />
Validation<br />
x<br />
Not Valid<br />
Choice<br />
Figura 15 - Controllo <strong>di</strong>stribuito con coor<strong>di</strong>nazione annidata applicato al caso <strong>di</strong> stu<strong>di</strong>o Click4aLoan<br />
51
Workflow Distribuiti Capitolo 5<br />
A <strong>di</strong>fferenza degli altri scenari, questo presenta due nuove attività per quanto riguarda i manager<br />
dei peer remoti, che devono eseguire un controllo finale della attività eseguite dai rispettivi<br />
impiegati, prima <strong>di</strong> poterne inviare i risultati al peer principale.<br />
5.2.2.2. Controllo <strong>di</strong>stribuito con coor<strong>di</strong>nazione generalizzata<br />
Con la coor<strong>di</strong>nazione generalizzata, qualsiasi sottoinsieme delle attività componenti il processo può<br />
essere delegato ad altri peer, senza sottostare a particolari vincoli. In questo caso non è possibile<br />
identificare un singolo punto <strong>di</strong> accesso/uscita dal processo delegato al peer remoto.<br />
Con la coor<strong>di</strong>nazione generalizzata sono richiesti <strong>di</strong>versi messaggi per poter ottenere un corretto<br />
avanzamento in presenza <strong>di</strong> sotto-processi delegati ad altri peer. Per questo motivo, per ogni<br />
interazione fra i <strong>di</strong>versi peer, deve essere scambiato un messaggio, e il loro numero può essere<br />
molto maggiore dei due del caso precedente, in quanto si possono ottenere interazioni molto<br />
complesse.<br />
In figura 16 mostra un esempio semplificato del flusso <strong>di</strong> processo del caso <strong>di</strong> stu<strong>di</strong>o Click4aLoan<br />
nel quale si può notare un processo “non ben-parentesizzato”: le attività Financial Check, Cre<strong>di</strong>t<br />
Check e Residence Check sono delegate al peer remoto, ma a <strong>di</strong>fferenza degli esempi precedenti,<br />
non è possibile identificare un unico punto <strong>di</strong> ingresso e un unico punto <strong>di</strong> uscita per il sottoprocesso<br />
delegato.<br />
Come si può notare dalla figura, il workflow presenta un unico punto <strong>di</strong> collegamento tra peer<br />
principale e remoto subito dopo la validazione iniziale, ma presenta due punti <strong>di</strong> collegamento<br />
imme<strong>di</strong>atamente dopo i due controlli Financial e Residence.<br />
Con la coor<strong>di</strong>nazione generalizzata i meta-dati <strong>di</strong> processo sono ancora <strong>di</strong>stribuiti su entrambi i<br />
peer, ma il mantenimento <strong>di</strong> uno stato consistente dello stato <strong>di</strong> avanzamento delle attività e dei<br />
processi può risultare problematico in quanto, in questo caso, è consentita l’esecuzione parallela su<br />
<strong>di</strong>versi peer.<br />
52
Workflow Distribuiti Capitolo 5<br />
Main Peer<br />
Applicant Manager Employee<br />
Manager<br />
Remote Peer<br />
Employee<br />
Application<br />
Request<br />
Preliminary<br />
Validation<br />
Not Valid<br />
x<br />
+<br />
Financial<br />
Check<br />
Cre<strong>di</strong>t Check<br />
Residence<br />
Check<br />
Job<br />
Check<br />
+<br />
Final<br />
Validation<br />
x<br />
Not Valid<br />
Choice<br />
Figura 16 - Controllo <strong>di</strong>stribuito con coor<strong>di</strong>nazione generalizzata applicato al caso <strong>di</strong> stu<strong>di</strong>o Click4aLoan<br />
53
Workflow Distribuiti Capitolo 5<br />
5.3. Interazione fra processi in<strong>di</strong>pendenti<br />
L’ultimo scenario in<strong>di</strong>viduato si pone su un piano <strong>di</strong>fferente rispetto ai precedenti, in cui vi era un<br />
unico flusso <strong>di</strong> processo sud<strong>di</strong>viso in <strong>di</strong>versi mo<strong>di</strong> fra i peer componenti il sistema.<br />
Infatti questo scenario si occupa dell’interazione tra processi in<strong>di</strong>pendenti, i quali sono a<br />
conoscenza esclusivamente delle attività che li compongono, mentre non hanno alcuna<br />
informazione circa il numero degli altri processi coinvolti e circa la loro struttura in termini <strong>di</strong><br />
attività. L’unico punto <strong>di</strong> contatto fra questi processi è rappresentato dallo scambio <strong>di</strong> messaggi a<br />
fronte <strong>di</strong> notifiche o richieste <strong>di</strong> dati necessari al corretto svolgimento del workflow.<br />
Può rispecchiare il caso reale in cui vi siano <strong>di</strong>verse entità che si occupano dell’esecuzione <strong>di</strong><br />
processi <strong>di</strong>fferenti l’uno dall’altro, e che necessitano <strong>di</strong> entrare in comunicazione fra loro nel<br />
momento in cui desiderano ottenere o rendere <strong>di</strong>sponibili informazioni necessarie al proseguimento<br />
dei <strong>di</strong>versi flussi <strong>di</strong> processo.<br />
Questo scenario non poteva essere applicato al caso <strong>di</strong> stu<strong>di</strong>o Click4aLoan in quanto quest’ultimo<br />
non consente l’esecuzione <strong>di</strong> <strong>di</strong>versi flussi <strong>di</strong> processo comunicanti, essendo stato pensato come<br />
un’unica catena <strong>di</strong> operazioni da svolgere in sequenza. Per questo motivo è stato progettato il caso<br />
<strong>di</strong> stu<strong>di</strong>o Click4aCar, composto da due tipologie <strong>di</strong> flusso <strong>di</strong> processo <strong>di</strong>fferenti, nell’ambito della<br />
compraven<strong>di</strong>ta <strong>di</strong> auto usate, e in cui è presente un’entità “concessionaria” che gestisce il flusso <strong>di</strong><br />
processo relativo al ciclo <strong>di</strong> vita delle auto, e <strong>di</strong>verse entità “utente” che effettuano le operazioni<br />
legate alla loro compraven<strong>di</strong>ta.<br />
Per esprimere al meglio la tipologia <strong>di</strong> interazione che comporta questo scenario, riportiamo un<br />
<strong>di</strong>agramma, sempre in notazione BPMN, che coinvolge un processo riguardante le auto e due<br />
processi per gli utenti:<br />
54
Workflow Distribuiti Capitolo 5<br />
User 1<br />
Car<br />
User 2<br />
Manufacture<br />
Matriculation<br />
Will Sell<br />
For Sale<br />
Will Sell<br />
Search Car<br />
Purchase / Sale<br />
Search Car<br />
x<br />
Usage<br />
Demolition<br />
Usage<br />
Figura 17 - Interazione tra le due tipologie <strong>di</strong> workflow<br />
Nel <strong>di</strong>agramma è rappresentato uno scenario in cui è presente un utente (User 1) che intende<br />
vendere un’auto, interagendo con l’attività “For Sale” del flusso <strong>di</strong> processo delle auto; un secondo<br />
utente (User 2) desidera acquistarla, ed attraverso una fase <strong>di</strong> ricerca delle auto <strong>di</strong>sponibili,<br />
procede all’acquisto; la fase “Purchase / Sale” avvisa entrambi gli utenti dell’avvenuta transazione.<br />
Questo proce<strong>di</strong>mento viene ripetuto ogni qual volta si intende eseguire una compraven<strong>di</strong>ta <strong>di</strong><br />
un’auto, eccetto nel caso in cui la concessionaria intenda ricomprare l’auto e successivamente<br />
demolirla.<br />
Possiamo notare come il processo relativo alle auto proceda in<strong>di</strong>pendentemente dagli altri fino al<br />
momento in cui un utente desidera acquistare o vendere un’auto, entrando in contatto con i<br />
processi degli utenti.<br />
In questa tipologia <strong>di</strong> <strong>di</strong>stribuzione, il numero delle istanze <strong>di</strong> workflow in gioco può variare <strong>di</strong><br />
molto, a <strong>di</strong>fferenza degli scenari visti in precedenza.<br />
55
Workflow Distribuiti Capitolo 5<br />
Ad esempio, nel caso <strong>di</strong> stu<strong>di</strong>o trattato, un’ulteriore interazione possibile riguarda una istanza del<br />
workflow relativo alle auto, e una sola istanza per gli utenti, come raffigurato in figura 18. In<br />
questo esempio, vi è un solo utente che desidera acquistare un’auto fra quelle messe a<br />
<strong>di</strong>sposizione del concessionario, senza quin<strong>di</strong> coinvolgere un’ulteriore utente che metta in ven<strong>di</strong>ta la<br />
propria auto.<br />
Car<br />
User<br />
Manufacture<br />
Matriculation<br />
For Sale<br />
Will Sell<br />
Purchase / Sale<br />
Search Car<br />
x<br />
Demolition<br />
Usage<br />
Figura 18 – Ulteriore interazione tra le due tipologie <strong>di</strong> workflow<br />
Se da un lato, il numero <strong>di</strong> utenti coinvolti non è limitato superiormente, dall’altro questo può<br />
anche essere nullo, come nell’esempio <strong>di</strong> figura 19, in cui viene mostrato il fatto che il flusso <strong>di</strong><br />
processo relativo alle auto può essere portato a conclusione anche senza interagire con un’istanza<br />
del workflow degli utenti. Questo è possibile in quanto l’attività <strong>di</strong> demolizione richiede che il<br />
concessionario acquisti per sé una delle auto che ha provveduto in precedenza ad immatricolare.<br />
56
Workflow Distribuiti Capitolo 5<br />
Figura 19 - Flusso <strong>di</strong> processo senza interazioni<br />
57
Workflow Distribuiti Capitolo 5<br />
5.4. Stili <strong>di</strong> progettazione<br />
L’implementazione <strong>di</strong> workflow <strong>di</strong>stribuiti implica <strong>di</strong>fferenti scelte progettuali, ognuna delle quali<br />
affronta in maniera <strong>di</strong>fferente le <strong>di</strong>fficoltà che insorgono durante la progettazione <strong>di</strong> applicazioni<br />
Web.<br />
Dapprima affronteremo il problema dell’assegnamento delle attività componenti il processo<br />
<strong>di</strong>stribuito. Queste possono essere assegnate da un utente sul peer principale che delega la loro<br />
esecuzione ai peer remoti, oppure automaticamente dal sistema.<br />
Ortogonalmente a questa problematica, si presentano due tipologie <strong>di</strong> attivazione delle attività,<br />
nominate “push” e “pull”. Nella prima è l’utente che gestisce il workflow che decide a chi delegare<br />
le varie attività, nella seconda sono gli utenti remoti che scelgono quale attività svolgere da una<br />
lista <strong>di</strong> attività messa a <strong>di</strong>sposizione dal peer principale. Questi scenari sono riassunti dalla<br />
seguente tabella.<br />
Push<br />
Automatico<br />
Le attività remote vengono assegnate<br />
ai peer remoti in automatico dal<br />
sistema<br />
Manuale<br />
L’assegnamento delle attività remote<br />
è svolto da una particolare tipologia<br />
<strong>di</strong> utente (es: manager) che ha la<br />
visione <strong>di</strong> tutto il processo<br />
Pull<br />
Il sistema remoto interroga in<br />
automatico il peer principale,<br />
richiedendo le attività da svolgere<br />
Gli utenti dei peer remoti gestiscono i<br />
dati delle proprie attività, sotto il<br />
controllo <strong>di</strong> un supervisore<br />
(es: manager)<br />
Analizziamo ora nel dettaglio tutte queste tipologie, identificando i <strong>di</strong>versi stili <strong>di</strong> progettazione che<br />
le affrontano.<br />
5.4.1. Automatico vs. Manuale<br />
Il primo tema da affrontare riguarda l’assegnamento delle attività componenti il processo<br />
<strong>di</strong>stribuito agli utenti che successivamente si ritroveranno a svolgerle; in questo contesto si<br />
possono identificare due approcci:<br />
- Il primo, detto manuale, è quello in cui un utente supervisore controlla costantemente lo stato<br />
<strong>di</strong> completamento delle attività remote e al termine <strong>di</strong> ognuna <strong>di</strong> esse assegna quella<br />
successiva al rispettivo esecutore, delegandone poi l’esecuzione al peer remoto. Lo svantaggio<br />
58
Workflow Distribuiti Capitolo 5<br />
<strong>di</strong> questo approccio è che l’utente incaricato alla gestione del workflow deve regolarmente<br />
controllare l’avanzamento del processo e delegare le attività successive, comportando il blocco<br />
dell’esecuzione del workflow ogni qualvolta viene richiesta la sua interazione.<br />
- Il secondo approccio è quello <strong>di</strong> rendere automatico tutto il processo <strong>di</strong> controllo e <strong>di</strong><br />
assegnamento delle attività remote. In questo caso il sistema al termine <strong>di</strong> un’attività remota<br />
assegna imme<strong>di</strong>atamente quella successiva e ne avvia imme<strong>di</strong>atamente l’esecuzione; l’utente<br />
entra in gioco solo alla fine della sequenza <strong>di</strong> attività remote costituenti il flusso <strong>di</strong> processo. Il<br />
vantaggio <strong>di</strong> questa soluzione è sicuramente quello <strong>di</strong> evitare <strong>di</strong> bloccare il flusso <strong>di</strong> processo<br />
in attesa che l’utente effettui le proprie operazioni, ma d’altro canto implica maggiori <strong>di</strong>fficoltà<br />
nel mantenere uno stato consistente <strong>di</strong> avanzamento del processo, e una minore flessibilità in<br />
caso <strong>di</strong> errore rispetto ad un sistema supervisionato da un essere umano.<br />
5.4.2. Push vs. Pull<br />
La seconda <strong>di</strong>mensione da analizzare riguarda le metodologie <strong>di</strong> trasferimento delle informazioni<br />
dal peer principale ai peer remoti circa le attività da svolgere.<br />
- Il primo caso, denominato “push”, è quello nel quale il peer principale attraverso l’invocazione<br />
<strong>di</strong> un Web Service pubblicato su un peer remoto, invia a quest’ultimo i dati riguardanti le<br />
attività da eseguire, imponendogli perciò l’esecuzione <strong>di</strong> tali attività. Al termine della loro<br />
esecuzione, il peer remoto invoca un Web Service pubblicato dal peer principale passandogli i<br />
risultati della computazione. In questo scenario il controllo delle sottoattività e il passaggio dei<br />
dati deve essere gestito dal peer principale, che governa il flusso delle operazioni da eseguire<br />
ed assume una parte centralizzata in tutto il processo, sia che la prossima attività da svolgere<br />
venga scelta manualmente, sia che avvenga in modo automatizzato.<br />
- Il secondo scenario possibile, detto “pull” è quello in cui è il peer remoto a scegliere le attività<br />
da eseguire fra quelle rese <strong>di</strong>sponibili dal peer principale. Questo avviene tramite un Web<br />
Service sul peer principale che pubblica i dati delle attività da svolgere remotamente. Una<br />
volta che il peer remoto ha terminato l’esecuzione dell’attività richiama un ulteriore Web<br />
Service che aggiorna i dati nel database del main peer. Questa soluzione implica minor<br />
controllo da parte del peer principale, dato che non sceglie più <strong>di</strong>rettamente chi esegue le<br />
attività, ma le rende <strong>di</strong>sponibili per l’eventuale esecuzione, e saranno i peer remoti a scegliere<br />
quale eseguire e in quale momento.<br />
Il vantaggio principale <strong>di</strong> una soluzione <strong>di</strong> questo genere, è il fatto che il peer principale non<br />
deve essere per forza a conoscenza dell’architettura del flusso <strong>di</strong> processo riguardante i peer<br />
remoti, ma si limita a pubblicare le attività che compongono il proprio flusso <strong>di</strong> processo.<br />
59
Workflow Distribuiti Capitolo 5<br />
Le <strong>di</strong>fficoltà che insorgono utilizzando questa metodologia, sono dovute al fatto che il peer<br />
principale non ha il controllo totale sull’esecuzione dei processi, e per fronteggiare questo<br />
svantaggio, una soluzione potrebbe essere quella <strong>di</strong> aggiungere dei campi nel database per<br />
poter tener traccia <strong>di</strong> chi ha prelevato le informazioni necessarie per poter eseguire una data<br />
attività. Inoltre, il fatto <strong>di</strong> dover tener traccia dell’avanzamento della stessa, comporterebbe un<br />
ulteriore scambio <strong>di</strong> messaggi, contribuendo così a complicare ulteriormente lo scenario<br />
<strong>di</strong>stribuito.<br />
5.4.3. Assegnamento delle attività<br />
Un’ulteriore <strong>di</strong>fficoltà che insorge nell’assegnamento delle attività remote è quella relativa alla<br />
scelta della tipologia <strong>di</strong> “assignment”: assegnare l’esecuzione delle attività ad un determinato<br />
utente, o generarne un’istanza senza assegnare la sua esecuzione ad alcun utente.<br />
Assegnando le attività a determinati utenti si ha il vantaggio, per il gestore del workflow, <strong>di</strong> avere<br />
un maggior controllo sul flusso <strong>di</strong> processo, sapendo in ogni istante chi sta eseguendo una<br />
determinata attività. Nel secondo caso invece, non vi è l’obbligo da parte del supervisore <strong>di</strong><br />
selezionare l’esecutore delle attività, perdendo però il controllo sulla loro esecuzione.<br />
5.4.4. Scenari<br />
A conclusione <strong>di</strong> questo <strong>di</strong>scorso vogliamo proporre un modello esemplificativo che possa<br />
riassumere quanto detto in precedenza.<br />
Utente<br />
Attività<br />
Automatico<br />
Manuale<br />
Push<br />
Pull<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Questa tabella a tre <strong>di</strong>mensioni mostra tutte le combinazioni possibili dei vari stili <strong>di</strong> progettazione,<br />
nella quale sono stati segnati con un puntino nero le soluzioni attuabili nella realtà. Come possiamo<br />
notare tutte le combinazioni elencate possono essere realizzate, ognuna delle quali presenta<br />
<strong>di</strong>verse <strong>di</strong>fficoltà <strong>di</strong> implementazione e ha i propri vantaggi e svantaggi.<br />
Passiamo ora ad elencare tutte queste combinazioni:<br />
60
Workflow Distribuiti Capitolo 5<br />
• Manuale / Utente / Push: in questa combinazione il controllo del processo è gestito<br />
manualmente da un utente supervisore, che assegna le attività a determinati utenti<br />
remoti che dovranno svolgerle, e che, al termine della loro esecuzione, assegnerà quelle<br />
successive. Capiamo come, in quest’ottica, il ruolo <strong>di</strong> un supervisore sia fondamentale<br />
sotto il punto <strong>di</strong> vista della gestione del processo, ma comporta anche il fatto che egli<br />
debba conoscere la <strong>di</strong>stribuzione degli utenti sui peer remoti.<br />
• Manuale / Utente / Pull: in questo caso il controllo del processo è sempre gestito<br />
manualmente da un utente supervisore, ma a <strong>di</strong>fferenza <strong>di</strong> quello precedente, è l’utente<br />
remoto che preleva le attività da svolgere fra quelle a lui assegnate. Anche in questo caso<br />
il supervisore sceglie chi eseguirà le operazioni, pubblicando le attività pronte<br />
all’esecuzione.<br />
• Manuale / Attività / Push: in questa combinazione il supervisore assegna le attività al<br />
peer remoto e non ad un determinato utente, e si preoccupa <strong>di</strong> gestire tutto il processo.<br />
Questo caso è molto simile al primo, la <strong>di</strong>fferenza sostanziale è che la scelta degli utenti<br />
che svolgeranno le attività remote è delegata al peer remoto; a <strong>di</strong>fferenza del primo<br />
scenario, il supervisore del peer principale non deve essere a conoscenza degli utenti<br />
degli altri peer.<br />
• Manuale / Attività / Pull: in questo caso è l’utente remoto che sceglie le attività da<br />
svolgere tra quelle proposte dal peer principale, ma solo in seguito verranno assegnate ad<br />
utenti remoti. Il supervisore sul peer principale non sa dunque chi sta eseguendo<br />
l’attività, e nemmeno quale peer la sta eseguendo. Si comprende che in questo caso<br />
ricostruire lo stato attuale <strong>di</strong> avanzamento del processo, comporti maggiori <strong>di</strong>fficoltà<br />
rispetto al primo caso, dato che l’eventuale richiesta deve passare tra <strong>di</strong>versi interlocutori.<br />
• Automatizzato / Utente / Push: in questa combinazione il controllo del processo è<br />
automatizzato, cioè il flusso <strong>di</strong> processo avviene in automatico senza verifiche da parte <strong>di</strong><br />
un utente supervisore: le attività vengono assegnate automaticamente dal sistema ad un<br />
utente remoto, e al termine <strong>di</strong> un’attività componente il workflow, si effettua in<br />
automatico l’assegnamento dell’attività successiva inviandogli poi i dati necessari. Il<br />
supervisore, in questo caso, può limitarsi solo ad effettuare delle letture sui dati presenti<br />
nel database per monitorare lo stato <strong>di</strong> avanzamento del processo, ma non può<br />
controllarlo in prima persona.<br />
• Automatizzato / Utente / Pull: come nel caso precedente, tutto il processo è<br />
automatizzato, ma in questo scenario è l’utente remoto che si preoccupa <strong>di</strong> selezionare le<br />
attività da svolgere tra quelle proposte dal peer principale. Per questo motivo, il livello <strong>di</strong><br />
61
Workflow Distribuiti Capitolo 5<br />
<strong>di</strong>fficoltà nel mantenere uno stato globale dell’avanzamento del processo è più elevato<br />
rispetto al caso precedente.<br />
• Automatizzato / Attività / Push: in questa combinazione il sistema assegna delle<br />
attività ad un determinato peer, senza in<strong>di</strong>care precisamente chi dovrà eseguire le<br />
attività. Anche in questo caso non c’è bisogno <strong>di</strong> un controllo da parte dell’utente<br />
supervisore, dal momento che tutte le operazioni vengono eseguite in automatico<br />
dall’applicazione.<br />
• Automatizzato / Attività / Pull: in questo caso è il sistema remoto che si preoccupa <strong>di</strong><br />
selezionare le attività da svolgere tra quelle <strong>di</strong>sponibili sul peer principale; questo<br />
permette all’utente supervisore <strong>di</strong> effettuare il minor numero possibile <strong>di</strong> operazioni per la<br />
gestione del processo, ma ciò viene pagato in termini <strong>di</strong> controllo dello stato, in quanto si<br />
avrà maggiore <strong>di</strong>fficoltà nel rintracciare lo stato attuale delle operazioni.<br />
5.4.5. Gestione dei meta-dati<br />
Un altro problema da affrontare riguarda la gestione dei meta-dati relativi ai workflow in uno<br />
scenario con controllo <strong>di</strong>stribuito del processo, e più precisamente nei casi in cui i sotto-processi<br />
che lo compongono non hanno inizio e fine sullo stesso peer, comportando dei problemi circa il<br />
mantenimento <strong>di</strong> uno stato consistente del processo da parte dei singoli peer.<br />
In questo contesto possiamo identificare <strong>di</strong>verse soluzioni al problema:<br />
Mantenimento globale dei meta-dati: questa soluzione prevede che tutti i peer coinvolti nella<br />
<strong>di</strong>stribuzione del processo posseggano tutti i meta-dati relativi a tutte le attività componenti il<br />
processo, in modo tale da poter mantenere una visione completa dello svolgimento del processo sui<br />
vari peer. Questa soluzione comporta un sostanzioso scambio <strong>di</strong> messaggi tra i vari peer per poter<br />
sincronizzare le istanze delle varie attività, ma permette <strong>di</strong> conoscere, per ogni attività del<br />
workflow <strong>di</strong>stribuito, l’esecutore della stessa.<br />
Per poter attuare questa soluzione, è necessario progettare le basi <strong>di</strong> dati in modo da relazionare le<br />
istanze <strong>di</strong> attività con i peer che le eseguono, prevedendo un’entità Peer, che permetta <strong>di</strong><br />
identificare i peer a cui sono assegnate determinate istanze <strong>di</strong> attività, e, a sua volta, quali attività<br />
sta svolgendo un determinato peer. Con questa soluzione è possibile effettuare facilmente richieste<br />
sullo stato delle attività risalendo in maniera <strong>di</strong>retta ai peer che ne sono a conoscenza.<br />
62
Workflow Distribuiti Capitolo 5<br />
Figura 20 – Dettaglio del modello dei dati <strong>di</strong> workflow<br />
Le informazioni contenute in questa entità possono anche essere sfruttate per poter invocare<br />
<strong>di</strong>namicamente i Web Services che forniscono le informazioni sullo stato delle attività, per mezzo<br />
del campo Url.<br />
Mantenimento parziale dei meta-dati: questa alternativa cerca <strong>di</strong> migliorare quella precedente,<br />
prevedendo che i peer coinvolti mantengano i meta-dati <strong>di</strong> workflow solo delle “attività <strong>di</strong> confine”,<br />
cioè quelle attività imme<strong>di</strong>atamente prima o imme<strong>di</strong>atamente dopo la sud<strong>di</strong>visione del processo su<br />
due peer. Questa soluzione permette <strong>di</strong> ottenere una <strong>di</strong>minuzione dello scambio <strong>di</strong> dati, dato che le<br />
attività “interne” (non <strong>di</strong> confine) vengono registrate solamente sul database locale <strong>di</strong> un peer.<br />
D’altro canto non è possibile mantenere uno stato consistente <strong>di</strong> avanzamento delle operazioni: è<br />
possibile risalire al peer che sta eseguendo le operazioni, ma la ricerca dello stato effettivo <strong>di</strong><br />
avanzamento delle stesse richiede una certa <strong>di</strong>fficoltà, dovendo effettuare richieste <strong>di</strong>stribuite sui<br />
peer coinvolti.<br />
Il problema fondamentale <strong>di</strong> questi approcci è la necessità <strong>di</strong> dover verificare se le applicazioni <strong>di</strong><br />
tutti i peer coinvolti necessitano <strong>di</strong> essere mo<strong>di</strong>ficati a fronte dell’aggiunta o dell’eliminazione <strong>di</strong><br />
un’attività. Infatti, ad esempio, l’aggiunta <strong>di</strong> una nuova attività <strong>di</strong> confine comporta il cambiamento<br />
del flusso <strong>di</strong> processo, e degli ipertesti coinvolti in questo cambiamento.<br />
Si presenta inoltre il problema <strong>di</strong> reperire le informazioni circa lo stato <strong>di</strong> un’attività, soprattutto nel<br />
momento in cui questa non sia <strong>di</strong> confine col peer che effettua la richiesta.<br />
La figura sottostante mostra un esempio <strong>di</strong> processo <strong>di</strong>stribuito, in cui il peer 1 è interessato allo<br />
stato della attività 5, che è un’attività <strong>di</strong> confine dei peer 2 e 4 e non del peer 1, quin<strong>di</strong> i suoi metadati<br />
<strong>di</strong> workflow sono residenti su questi peer. Il peer 1, in questo caso, non è nemmeno a<br />
conoscenza del peer al quale è stata assegnata questa attività, in quanto non è una sua attività <strong>di</strong><br />
confine. Si potrebbe quin<strong>di</strong> adottare un algoritmo per la ricerca <strong>di</strong>stribuita delle informazioni sulle<br />
attività, la cui realizzazione esula dagli obiettivi <strong>di</strong> questo lavoro <strong>di</strong> tesi.<br />
63
Workflow Distribuiti Capitolo 5<br />
Figura 21 - Esempio <strong>di</strong> processo <strong>di</strong>stribuito su vari peer<br />
64
Progettazione delle applicazioni Capitolo 6<br />
6. Progettazione delle applicazioni<br />
65
Progettazione delle applicazioni Capitolo 6<br />
Dopo aver presentato i vari scenari in<strong>di</strong>viduati nell’ambito della <strong>di</strong>stribuzione dei processi, in questo<br />
capitolo analizzeremo i <strong>di</strong>versi passi della progettazione [22] dei due casi <strong>di</strong> stu<strong>di</strong>o e la loro<br />
implementazione sotto forma <strong>di</strong> <strong>di</strong>versi progetti realizzati con il CASE (Computer Aided Software<br />
Engineering) tool WebRatio ® [25], che consente la realizzazione <strong>di</strong> applicazioni Web fortemente<br />
basate sui dati utilizzando il linguaggio WebML, e permette la generazione automatica del co<strong>di</strong>ce<br />
delle pagine che le compongono. La versione utilizzata in questo lavoro <strong>di</strong> tesi è la 3.3.7 Accademic<br />
Pro ed il relativo Addendum per poter gestire i Workflow e i Web Services.<br />
Per ognuno dei due casi <strong>di</strong> stu<strong>di</strong>o verranno presentati i requisiti dalle applicazioni, il modello dei<br />
dati, e frammenti <strong>di</strong> ipertesto caratterizzanti i rispettivi scenari <strong>di</strong> <strong>di</strong>stribuzione.<br />
6.1. Click4aLoan<br />
Come già introdotto nel capitolo 2.3, Click4aLoan rappresenta un’applicazione per la gestione <strong>di</strong><br />
prestiti bancari via Web, ed è stato utilizzato per coprire i seguenti scenari <strong>di</strong> <strong>di</strong>stribuzione dei<br />
processi:<br />
- Nessuna <strong>di</strong>stribuzione, implementato in un unico progetto denominato 1.Main.<br />
- Distribuzione <strong>di</strong> un singolo servizio, implementato me<strong>di</strong>ante due progetti separati: 2.Main,<br />
che rappresenta l’applicazione residente sul peer principale e 2.wsProposals, che<br />
rappresenta il servizio esportato sul peer remoto.<br />
- Distribuzione dei sotto-processi con controllo centralizzato, costituito da tre progetti,<br />
3.1.Main, 3.1.wsProposals, e 3.1.Remote, che rappresenta l’applicazione residente sul<br />
peer remoto che esegue parte delle operazioni del workflow.<br />
- Distribuzione dei sotto-processi con controllo <strong>di</strong>stribuito annidato, costituito dai progetti:<br />
3.2a.Main, 3.2a.wsProposals, e 3.2a.Remote.<br />
- Distribuzione dei sotto-processi con controllo <strong>di</strong>stribuito generalizzato, costituito dai<br />
progetti: 3.2b.Main, 3.2b.wsProposals, e 3.2b.Remote.<br />
Analizzeremo ora in dettaglio i requisiti delle <strong>di</strong>verse applicazioni e i rispettivi modelli dei dati. In<br />
seguito verranno approfon<strong>di</strong>te delle peculiarità <strong>di</strong> ogni scenario coperto dal caso <strong>di</strong> stu<strong>di</strong>o per<br />
quanto riguarda la progettazione dell’ipertesto.<br />
66
Progettazione delle applicazioni Capitolo 6<br />
6.1.1. Requisiti<br />
Introdurremo ora i requisiti fondamentali che deve rispettare la nostra applicazione <strong>di</strong>visi per<br />
tipologia <strong>di</strong> utente. I requisiti presentati sono gli stessi per tutti e quattro gli scenari coperti dal<br />
caso <strong>di</strong> stu<strong>di</strong>o, perciò verranno esposti congiuntamente.<br />
Innanzitutto, possiamo identificare tre tipologie <strong>di</strong> attori che prendono parte al processo:<br />
- Applicant: rappresenta l’utente che richiede il prestito attraverso il sito Web.<br />
- Manager: rappresenta l’utente che ha il compito <strong>di</strong> supervisionare il processo <strong>di</strong><br />
approvazione del prestito, e che ha il compito <strong>di</strong> effettuare una validazione iniziale e una<br />
finale.<br />
- Employee: rappresenta l’utente che svolge i controlli <strong>di</strong> base per poter garantire il prestito<br />
richiesto.<br />
Per quanto riguarda l’Applicant, possiamo in<strong>di</strong>viduare i seguenti requisiti funzionali: la possibilità <strong>di</strong><br />
effettuare una ricerca delle proposte <strong>di</strong> prestito o mutuo offerte dai vari enti bancari; la possibilità<br />
<strong>di</strong> avanzare una richiesta per un prestito o per un mutuo; poter visualizzare le richieste in corso <strong>di</strong><br />
approvazione, quelle approvate e quelle rifiutate; la possibilità <strong>di</strong> accettare o rifiutare il prestito o<br />
mutuo al termine della relativa fase <strong>di</strong> approvazione.<br />
Nel <strong>di</strong>agramma UML [8] riportato in figura 22, possiamo notare le attività che permettono <strong>di</strong><br />
sod<strong>di</strong>sfare i requisiti emersi, e in cui si può osservare che la maggior parte delle attività eseguibili<br />
dall’utente richiedono il riconoscimento dello stesso me<strong>di</strong>ante una Login, ad eccezione della ricerca<br />
<strong>di</strong> proposte <strong>di</strong> prestito, la quale può essere eseguita anche a titolo informativo. Per poter effettuare<br />
la Login al sistema, l’utente deve necessariamente essere registrato. Per quanto riguarda la<br />
richiesta <strong>di</strong> un prestito, è necessario, oltre al riconoscimento dell’utente, anche aver svolto l’attività<br />
<strong>di</strong> ricerca <strong>di</strong> una proposta <strong>di</strong> prestito.<br />
67
Progettazione delle applicazioni Capitolo 6<br />
Figura 22 - Use Case Diagram per l'attore "Applicant"<br />
Per la seconda tipologia <strong>di</strong> utente del sistema, il Manager, possiamo in<strong>di</strong>viduare i seguenti requisiti<br />
funzionali: la possibilità <strong>di</strong> effettuare una validazione preliminare e una validazione finale della<br />
richiesta avanzata dall’Applicant, e la possibilità <strong>di</strong> visualizzare i prestiti attivati.<br />
Le attività che permettono <strong>di</strong> sod<strong>di</strong>sfare questi requisiti sono riportate nel <strong>di</strong>agramma UML in<br />
figura, dove si può notare che per eseguire le tre attività principali è necessario riconoscere l’utente<br />
attraverso una fase <strong>di</strong> Login.<br />
Figura 23 - Use Case Diagram per l'attore "Manager"<br />
Per quanto riguarda l’ultima tipologia <strong>di</strong> utente, l’Employee, si possono specificare i seguenti<br />
requisiti funzionali: la possibilità <strong>di</strong> effettuare un controllo finanziario dell’utente, un controllo della<br />
sua occupazione, della sua residenza e della sua reputazione.<br />
68
Progettazione delle applicazioni Capitolo 6<br />
Nel <strong>di</strong>agramma UML riportato in figura 24, possiamo notare le attività che permettono <strong>di</strong> sod<strong>di</strong>sfare<br />
i requisiti citati, e il fatto che tutte e quattro le attività che rappresentano i controlli da effettuare<br />
sulle richieste <strong>di</strong> prestito in corso, richiedono una preventiva fase <strong>di</strong> Login dell’impiegato.<br />
Figura 24 - Use Case Diagram per l'attore "Employee"<br />
6.1.2. Modello dei dati<br />
La progettazione dei dati è un mezzo essenziale per chiarire i requisiti applicativi e produce<br />
suggerimenti utili per la progettazione dell’ipertesto. A tal proposito, un supporto rilevante per la<br />
definizione dello schema dei dati deriva dalla caratterizzazione delle entità che lo compongono. In<br />
particolare possiamo identificare quattro <strong>di</strong>verse strutture nello schema Entità-Relazione:<br />
- Oggetti Core, che costituiscono gli oggetti più importanti che l’applicazione deve gestire.<br />
- Oggetti <strong>di</strong> interconnessione, che rappresentano le associazioni semantiche tra oggetti Core.<br />
- Oggetti <strong>di</strong> accesso, che sono usati per classificare o specializzare gli oggetti Core.<br />
- Oggetti <strong>di</strong> personalizzazione, utilizzati per incorporare nel modello dei dati le proprietà<br />
rilevanti dell’utente.<br />
Per mezzo <strong>di</strong> queste strutture, lo schema dei dati si presenta organizzato in strati ben definiti e<br />
centrati sulle entità Core, che permette <strong>di</strong> facilitare la costruzione, la comprensione, e il<br />
mantenimento dello stesso:<br />
- Sotto-schema Core, che include le entità e le relazioni che denotano i concetti Core.<br />
- Sotto-schema <strong>di</strong> accesso, che comprende le entità e le relazioni aventi il ruolo <strong>di</strong> facilitatori<br />
<strong>di</strong> accesso.<br />
- Sotto-schema <strong>di</strong> interconnessione, che include le relazioni che connettono le entità Core.<br />
69
Progettazione delle applicazioni Capitolo 6<br />
- Sotto-schema <strong>di</strong> personalizzazione, che incorpora le entità Utente e Gruppo, e le loro<br />
associazioni con le entità Core.<br />
Contrariamente a quanto visto per i requisiti, per il modello dei dati abbiamo <strong>di</strong>verse strutture dati<br />
a seconda dello scenario <strong>di</strong> <strong>di</strong>stribuzione implementato dal rispettivo progetto.<br />
Per quanto riguarda le applicazioni residenti sul peer principale (in<strong>di</strong>cate dal suffisso Main), ogni<br />
progetto presenta la medesima struttura dati, che ci accingiamo ad analizzare.<br />
Innanzitutto abbiamo in<strong>di</strong>viduato i seguenti oggetti Core: “Application”, “Loan Proposal” e<br />
“Installments Plan”, i quali permettono <strong>di</strong> gestire rispettivamente i dati riguardanti le richieste <strong>di</strong><br />
prestito, le proposte <strong>di</strong> prestiti o mutui offerti da banche convenzionate e i relativi piani <strong>di</strong><br />
<strong>di</strong>lazionamento dei pagamenti.<br />
Il passo successivo è quello <strong>di</strong> introdurre le connessioni tra i concetti Core, come, ad esempio, la<br />
relazione che lega “Loan Proposal” con “Installments Plan”, in cui ogni proposta <strong>di</strong> prestito può<br />
avere da zero a N piani <strong>di</strong> pagamento, mentre un singolo piano è relativo ad una sola proposta <strong>di</strong><br />
prestito. La seconda relazione è quella che lega “Application” con “Loan Proposal”, dove le proposte<br />
<strong>di</strong> prestito e le relative richieste effettuate sono legate da una relazione molti-a-molti.<br />
Il passo seguente consiste nell’aggiunta del sotto-schema <strong>di</strong> personalizzazione, che comprende le<br />
entità che consentono <strong>di</strong> gestire i dati relativi agli utenti (registrati) del sistema, le loro relazioni<br />
con gli oggetti Core e le regole che associano gli utenti alle site-view dell’applicazione. Le entità<br />
coinvolte sono: “User”, che specifica i dati relativi agli utenti, “Group” che specifica le informazioni<br />
che caratterizzano le classi <strong>di</strong> utenti con requisiti omogenei, “Site View” che permette <strong>di</strong> identificare<br />
la site-view <strong>di</strong> riferimento per un determinato gruppo <strong>di</strong> utenti. Le relazioni che legano tali entità<br />
sono: la relazione molti-a-molti <strong>di</strong> appartenenza <strong>di</strong> un utente a un gruppo, la relazione una-a-molti<br />
che associa un utente ad un gruppo <strong>di</strong> default, la relazione uno-a-molti che lega le entità “Group” e<br />
“Site View” e la relazione che lega l’entità Core “Application” con l’utente; quest’ultima relazione<br />
associa una richiesta <strong>di</strong> prestito ad un unico utente, il quale, a sua volta, può effettuare da zero a N<br />
richieste.<br />
I passi descritti hanno portato alla stesura della base <strong>di</strong> dati riportata in figura 25, in cui sono stati<br />
evidenziati i <strong>di</strong>versi sotto-schemi e la parte riguardante il meta-modello dei dati <strong>di</strong> workflow,<br />
necessario per poter utilizzare l’estensione per i workflow <strong>di</strong> WebML.<br />
70
Progettazione delle applicazioni Capitolo 6<br />
Loan Proposal<br />
OID<br />
Amount<br />
Company<br />
Delay Penalty<br />
Erogation Deadline<br />
Erogation Method<br />
Expenses<br />
ID_L<br />
Insurance Covers<br />
Loan Type<br />
Recess<br />
Requirements<br />
Xyurl<br />
User<br />
OID<br />
UserName<br />
Password<br />
First Name<br />
Last Name<br />
Job Title<br />
Email<br />
0:N<br />
SiteView<br />
OID<br />
SiteViewID<br />
1:N<br />
1:1<br />
1:1 0:N Group<br />
1:N 1:N OID<br />
GroupName<br />
0:N<br />
0:N<br />
0:N<br />
Installments Plan<br />
OID<br />
Expiration<br />
Gross Rate<br />
ID_I<br />
0:N<br />
1:1<br />
Installment Amount<br />
Installment Number<br />
Net Rate<br />
Rates Details<br />
0:N<br />
1:1<br />
Application<br />
Assigned To<br />
Executed By<br />
OID<br />
First Name<br />
Last Name<br />
Bank Account<br />
Work<br />
Submission Date<br />
Cre<strong>di</strong>t Check<br />
Cre<strong>di</strong>t Comments<br />
Financial Check<br />
Financial Comments<br />
Job Check<br />
Job Comments<br />
Residence Check<br />
Residence Comments<br />
Ad<strong>di</strong>tional Info<br />
Ad<strong>di</strong>tional Data<br />
Approved<br />
0:N<br />
Activity Instance Status<br />
OID<br />
Name<br />
0:N<br />
0:N<br />
1:1<br />
Activity Instance<br />
OID<br />
0:N<br />
Started<br />
Ended<br />
0:1<br />
1:1<br />
0:N<br />
Activity<br />
OID<br />
Name<br />
Description<br />
ID<br />
1:1<br />
1:1<br />
Sotto-schema “Core”<br />
Case Status<br />
OID<br />
Name<br />
0:N<br />
1:1<br />
Case<br />
0:N OID<br />
Name<br />
Started<br />
Ended<br />
1:1<br />
0:N<br />
Process<br />
0:N OID<br />
Name<br />
Description<br />
ID<br />
Sotto-schema <strong>di</strong> personalizzazione<br />
Meta-modello dei dati <strong>di</strong> workflow<br />
Figura 25 - Modello dei dati per le applicazioni residenti sul peer principale<br />
A <strong>di</strong>fferenza del primo progetto, quello in cui è implementato lo scenario “nessuna <strong>di</strong>stribuzione”,<br />
quello successivo, riguardante la <strong>di</strong>stribuzione <strong>di</strong> un singolo servizio, necessita <strong>di</strong> una <strong>di</strong>versa base<br />
<strong>di</strong> dati per l’applicazione 2.wsProposals. Essa infatti rappresenta il servizio messo a <strong>di</strong>sposizione da<br />
un peer remoto che si limita ad offrire le proposte <strong>di</strong> prestito e i relativi meto<strong>di</strong> <strong>di</strong> pagamento.<br />
Per questo motivo tale applicazione non necessita del modello dei dati presentato in precedenza<br />
nella sua interezza, ma si limita ad utilizzarne una parte, e più precisamente le entità “Loan<br />
Proposal” e “Installments Plan” e la relativa relazione che le associa, mentre non necessita dei<br />
meta-dati <strong>di</strong> workflow o del sotto-schema <strong>di</strong> personalizzazione comprendente le entità riguardanti<br />
gli utenti, i gruppi e le site-view.<br />
Alla luce <strong>di</strong> tutto ciò, il modello dei dati per l’applicazione 2.wsProposals è quello mostrato in figura<br />
26:<br />
71
Progettazione delle applicazioni Capitolo 6<br />
Figura 26 - Modello dei dati per il servizio <strong>di</strong>stribuito<br />
La <strong>di</strong>stribuzione <strong>di</strong> questo semplice servizio su un peer remoto è stata mantenuta anche negli<br />
scenari <strong>di</strong> <strong>di</strong>stribuzione successivi, che quin<strong>di</strong> presentano anch’essi un’applicazione separata<br />
denominata wsProposals.<br />
I <strong>di</strong>versi scenari <strong>di</strong> <strong>di</strong>stribuzione affrontati negli scenari successivi, introducono delle esigenze<br />
particolari che vengono rispecchiate da <strong>di</strong>fferenze nel modello dei dati dell’applicazione residente<br />
sul peer-remoto, e più in particolare per quanto riguarda gli scenari <strong>di</strong> <strong>di</strong>stribuzione dei sottoprocessi<br />
con controllo centralizzato, <strong>di</strong>stribuito annidato e <strong>di</strong>stribuito generalizzato. Per quanto<br />
concerne lo scenario “<strong>di</strong>stribuzione dei sotto-processi con controllo centralizzato”, non vi è la<br />
necessità per l’applicazione residente sul peer remoto (3.1.Remote) <strong>di</strong> mantenere i meta-dati <strong>di</strong><br />
workflow e <strong>di</strong> tenere traccia dello stato <strong>di</strong> esecuzione delle attività svolte su quel peer, essendo<br />
esse atomiche; per questo il suo modello dei dati non presenta le relative entità, ma comprende<br />
solamente il sotto-schema <strong>di</strong> personalizzazione e l’entità relativa alle richieste <strong>di</strong> prestito in corso,<br />
come possiamo notare dalla figura 27:<br />
Figura 27 - Modello dei dati per l'applicazione 3.1.Remote<br />
72
Progettazione delle applicazioni Capitolo 6<br />
Per quanto riguarda invece gli ultimi due scenari, “Distribuzione dei sotto-processi con controllo<br />
<strong>di</strong>stribuito annidato” e “Distribuzione dei sotto-processi con controllo <strong>di</strong>stribuito generalizzato”,<br />
l’applicazione residente sul peer remoto ha la necessità <strong>di</strong> mantenere i meta-dati <strong>di</strong> workflow, per<br />
questo il modello dei dati estende quello precedente con le entità e le relazioni appropriate:<br />
Figura 28 - Modello dei dati per i progetti 3.2aRemote e 3.2bRemote<br />
73
Progettazione delle applicazioni Capitolo 6<br />
6.1.3. Ipertesto<br />
La progettazione dell’ipertesto ha origine da tre sorgenti <strong>di</strong> input: lo schema concettuale dei dati,<br />
che esprime la struttura dei dati, i requisisti funzionali, che in<strong>di</strong>cano le funzionalità che devono<br />
essere fornite dall’applicazione, e le mappe delle site-view, che delineano l’organizzazione degli<br />
ipertesti che devono essere offerti agli utenti.<br />
Presenteremo ora un riepilogo essenziale per quanto riguarda le site-view che compongono i <strong>di</strong>versi<br />
progetti, per poter fornire un quadro generale della struttura delle applicazioni. Non ci<br />
soffermeremo dettagliatamente su tutti i passi della loro progettazione, ma tratteremo nel<br />
particolare le porzioni <strong>di</strong> ipertesto che consentono la realizzazione dei <strong>di</strong>versi scenari <strong>di</strong><br />
<strong>di</strong>stribuzione precedentemente analizzati, corredandoli con esempi <strong>di</strong> implementazione nel CASE<br />
tool WebRatio ® .<br />
6.1.3.1. Organizzazione delle site-view<br />
L’organizzazione delle site-view, e il loro contenuto navigazionale, cambia in base alla tipologia <strong>di</strong><br />
applicazione (Main, Remote o wsProposals) e in base allo scenario <strong>di</strong> <strong>di</strong>stribuzione implementato,<br />
per questo motivo provvederemo a fornire una visione generale delle site-view componenti i vari<br />
progetti ed una descrizione del loro contenuto:<br />
Scenario 1: Nessuna <strong>di</strong>stribuzione<br />
o 1.Main: composto dalle site-view: “Public Site View”, che permette ad un utente <strong>di</strong><br />
effettuare una ricerca delle proposte <strong>di</strong> prestito, registrarsi al sistema, ed effettuare la<br />
login; “Manager Site View”, che consente al manager <strong>di</strong> effettuare le attività “Preliminary<br />
Validation” e “Final Validation”; “Employee Site View”, che permette all’impiegato <strong>di</strong><br />
eseguire i quattro controlli relativi alla richiesta <strong>di</strong> prestito (Financial, Residence, Cre<strong>di</strong>t e<br />
Job Check); “Applicant Site View”, che consente all’utente registrato <strong>di</strong> effettuare una<br />
richiesta <strong>di</strong> prestito, <strong>di</strong> accettare o rifiutare il prestito al termine della fase <strong>di</strong> validazione, e<br />
<strong>di</strong> visualizzare lo stato delle proprie richieste.<br />
Scenario 2: Distribuzione <strong>di</strong> un singolo servizio<br />
o 2.Main: composto dalle medesime site-view dello scenario precedente, ma nella “Public<br />
Site View” l’ipertesto permette <strong>di</strong> ottenere i dati relativi alle proposte <strong>di</strong> prestito da un Web<br />
Service remoto.<br />
74
Progettazione delle applicazioni Capitolo 6<br />
o<br />
2.wsProposals: che rappresenta il servizio remoto ed è composto dalla site-view “Remote<br />
Loan Proposals”, in cui il layout <strong>di</strong> pagina è impostato su “SOAP Envelope” per permettere<br />
all’applicazione <strong>di</strong> generare file <strong>di</strong> configurazione SOAP al posto <strong>di</strong> pagine JSP, ed è<br />
selezionato lo stylesheet “Web services” per poter generare documenti XML al posto <strong>di</strong><br />
pagine HTML.<br />
Scenario 3.1: Distribuzione dei sotto-processi con controllo centralizzato<br />
o 3.1.Main: composto dalle stesse site-view dei progetti “Main” precedenti, le uniche<br />
<strong>di</strong>fferenze si riscontrano nelle site-view: “Manager Site View”, in cui il manager, oltre alle<br />
validazioni iniziale e finale, deve occuparsi della gestione della comunicazione col peer<br />
remoto e assegnare le attività agli utenti remoti, in quanto è stato implementato lo<br />
scenario “Manuale / Attività / Push”, come descritto nel capitolo 5.4.4; “Employee Site<br />
View”, in cui l’impiegato svolge solo l’attività “Job Check”, essendo le altre attività delegato<br />
al peer remoto. Per questo motivo, questo progetto presenta un’ulteriore site-view<br />
denominata “Web Service” che contiene le unit che permettono lo scambio <strong>di</strong> dati dal peer<br />
remoto verso il peer principale.<br />
o 3.1.wsProposals: che presenta le medesime caratteristiche del progetto 2.wsProposals.<br />
o 3.1.Remote: che rappresenta l’applicazione residente sul peer remoto, ed è composta<br />
dalle site-view: “Public Site View”, che permette agli impiegati remoti <strong>di</strong> effettuare la login<br />
al sistema; “Employee Site View”, che consente loro <strong>di</strong> effettuare i tre controlli (Financial,<br />
Residence e Cre<strong>di</strong>t Check) sulle richieste <strong>di</strong> prestito; “Web Service”, con layout <strong>di</strong> pagina<br />
“SOAP Envelope” e stylesheet “Web services”, che permette la ricezione delle attività da<br />
svolgere da parte del peer principale.<br />
Scenario 3.2a: Distribuzione dei sotto-processi con controllo <strong>di</strong>stribuito annidato<br />
o 3.2a.Main: composto dalle stesse site-view del progetto 3.1.Main, varia però l’ipertesto<br />
per la gestione del flusso <strong>di</strong> processo.<br />
o 3.2a.wsProposals: che presenta le medesime caratteristiche del progetto 2.wsProposals.<br />
o 3.2a.Remote: composto medesime site-view del progetto 3.1.Remote, a cui viene<br />
aggiunta la site-view “Manager Site View”, che consente al manager del peer remoto <strong>di</strong><br />
assegnare agli impiegati le attività delegate dal peer principale e <strong>di</strong> restituire le<br />
informazioni elaborate al termine delle attività degli impiegati stessi.<br />
75
Progettazione delle applicazioni Capitolo 6<br />
Scenario 3.2b: Distribuzione dei sotto-processi con controllo <strong>di</strong>stribuito generalizzato<br />
o 3.2b.Main: composto dalle stesse site-view del progetto 3.1.Main, varia però l’ipertesto<br />
per la gestione del flusso <strong>di</strong> processo, ed in particolare nella “Employee Site View”, in cui<br />
l’impiegato, oltre ad effettuare l’attività “Job Check”, deve anche gestire le informazioni<br />
ricevute dal peer remoto.<br />
o 3.2b.wsProposals: che presenta le medesime caratteristiche del progetto 2.wsProposals.<br />
o<br />
3.2b.Remote: composto dalle site-view viste nel 3.2b.Remote, la <strong>di</strong>fferenza principale<br />
rispetto allo scenario precedente riguarda l’ipertesto che invia le informazioni elaborate al<br />
termine delle attività, che è posizionato nella “Employee Site View”, in quanto la<br />
comunicazione col peer principale non è gestita unicamente dal manager.<br />
6.1.3.2. Implementazione degli scenari <strong>di</strong> <strong>di</strong>stribuzione<br />
La progettazione dell’ipertesto è influenzata notevolmente dalla <strong>di</strong>stribuzione del processo, in<br />
quanto le applicazioni Web sono sud<strong>di</strong>vise fra i vari peer coinvolti, seguendo i modelli <strong>di</strong> interazione<br />
presentati in precedenza.<br />
Riporteremo ora dei frammenti <strong>di</strong> ipertesto che ci permettono <strong>di</strong> far comprendere come è possibile<br />
integrare la <strong>di</strong>stribuzione dei processi nel design dell’ipertesto <strong>di</strong> un’applicazione Web attraverso il<br />
linguaggio WebML e le sue estensioni per i Workflow e per i Web Service.<br />
I vari scenari saranno integrati con delle catture del CASE tool WebRatio ® , con il quale sono state<br />
realizzate le applicazioni, e le relative pagine Web generate, che verranno poi navigate dagli utenti.<br />
76
Progettazione delle applicazioni Capitolo 6<br />
Distribuzione <strong>di</strong> un singolo servizio<br />
Il caso più semplice <strong>di</strong> <strong>di</strong>stribuzione è l’invocazione <strong>di</strong> un servizio semplice pubblicato da un peer<br />
remoto. Questo scenario è quello implementato dai progetti 2.Main e 2.wsProposals. Per quanto<br />
riguarda la loro interazione, vengono utilizzate esclusivamente le primitive per la pubblicazione e<br />
l’invocazione <strong>di</strong> Web Service fornite da WebML.<br />
In figura 29 possiamo osservare il frammento <strong>di</strong> ipertesto necessario per la pubblicazione del<br />
servizio remoto, incluso nella site-view “Remote Loan Proposals” del progetto 2.wsProposals;<br />
mentre in figura 30 è riportato l’ipertesto necessario alla sua invocazione, incluso nella site-view<br />
“Public Site View” del progetto 2.Main:<br />
Figura 29 - Pubblicazione del servizio remoto “getAllLoansAndInstallments”<br />
Attraverso una Hierarchical Index Unit (Loans Index), è possibile recuperare dalla base <strong>di</strong> dati<br />
remota tutte le proposte <strong>di</strong> prestito e i relativi meto<strong>di</strong> <strong>di</strong> pagamento, e pubblicarli per mezzo della<br />
Solicit-Response Unit (getAllLoansAndInstallments). Il nome del servizio pubblicato sarà quin<strong>di</strong><br />
“getAllLoansAndInstallments”.<br />
Figura 30 - Invocazione del servizio remoto “getAllLoansAndInstallments”<br />
Per poter invocare il servizio pubblicato, sul peer principale viene utilizzata una Request-Response<br />
Unit (Read Loans). I passi che la seguono permettono <strong>di</strong> inserire i dati letti in un database virtuale<br />
attraverso una trasformazione XSL iniziale, realizzata me<strong>di</strong>ante un’Adapter Unit (Adapter Loan) e il<br />
77
Progettazione delle applicazioni Capitolo 6<br />
relativo file XSL adapt_LOAN-INSTALLMENTS.xsl, ed una successiva conversione in un formato<br />
relazionale tramite una unit XML In. È così possibile, tramite delle Index e delle Data Unit,<br />
recuperare i dati contenuti nella base <strong>di</strong> dati virtuale, e proseguire nella navigazione dell’ipertesto.<br />
La figura 31 mostra l’implementazione nel CASE tool WebRatio ® dell’area “Proposal” appartenente<br />
alla site-view “Public Site View”, nella quale possiamo notare le unit necessarie all’invocazione del<br />
servizio remoto che fornisce le proposte <strong>di</strong> prestito e i piani <strong>di</strong> pagamento. Dalla pagina “Loan<br />
Index”, il richiedente può selezionare quella desiderata e procedere con la richiesta tramite il link<br />
“Choose This Installment". La figura 32 mostra invece la pagina come viene visualizzata all’utente.<br />
Figura 31 - Schermata del tool WebRatio ® relativa all'area "Proposals"<br />
78
Progettazione delle applicazioni Capitolo 6<br />
Figura 32 - Pagina "Loan Index"<br />
Possiamo notare in figura 31, che alcune Data Unit dell’ipertesto hanno come entità <strong>di</strong> riferimento<br />
“TextChunk”; questa entità è stata introdotta per poter memorizzare nella base <strong>di</strong> dati delle<br />
informazioni da presentare all’utente a livello <strong>di</strong> presentazione per migliorare la sua interazione col<br />
sistema, fornendo suggerimenti testuali relativi alle operazioni da effettuare; la loro presenza non<br />
ha alcuna influenza sul flusso <strong>di</strong> processo.<br />
79
Progettazione delle applicazioni Capitolo 6<br />
Push vs. Pull<br />
Come presentato nel capitolo 5.4.2, si possono in<strong>di</strong>viduare due metodologie <strong>di</strong> trasferimento delle<br />
informazioni dal peer principale ai peer remoti, comuni a tutti gli scenari <strong>di</strong> <strong>di</strong>stribuzione.<br />
Per quanto riguarda la modalità “Push”, il peer principale invoca un Web Service pubblicato dal<br />
peer remoto inviandogli i dati riguardanti le attività da eseguire, imponendo perciò al peer remoto<br />
l’esecuzione <strong>di</strong> tali attività; al termine dell’esecuzione, quest’ultimo invoca un Web Service<br />
pubblicato dal peer principale passandogli i risultati della computazione. In questo scenario il<br />
controllo delle sottoattività e il passaggio dei dati viene gestito dal peer principale, che governa il<br />
flusso delle operazioni ed assume una parte centralizzata in tutto il processo.<br />
Figura 33 - Modello concettuale del trasferimento <strong>di</strong> informazioni in modalità "Push"<br />
L’ipertesto necessario alla pubblicazione dei Web Services atti a ricevere le informazioni riguardanti<br />
le attività da svolgere e i dati <strong>di</strong> ritorno dal peer remoto è quello presentato in figura 34; per<br />
quanto riguarda la loro invocazione, il frammento <strong>di</strong> ipertesto è rappresentato unicamente da una<br />
Unit Request-Response, la quale me<strong>di</strong>ante la trasformazione XSL adatta, permette <strong>di</strong> inviare i dati<br />
necessari e associarli correttamente ai parametri <strong>di</strong> ingresso delle rispettive unit Solicit-Response:<br />
Figura 34 - Ipertesto per la pubblicazione <strong>di</strong> un servizio per la ricezione <strong>di</strong> dati<br />
80
Progettazione delle applicazioni Capitolo 6<br />
La seconda modalità, detta “Pull”, è quella in cui è il peer remoto a richiedere al peer principale le<br />
attività da eseguire. Questo è possibile grazie ad un Web Service pubblicato dal peer principale che<br />
rende <strong>di</strong>sponibili i dati delle attività da svolgere remotamente. Una volta che il peer remoto ha<br />
terminato l’esecuzione dell’attività scelta, richiama un ulteriore Web Service attraverso il quale è<br />
possibile aggiornare i dati nel database del peer principale. Questa soluzione implica minor<br />
controllo da parte del peer principale, dato che non è a conoscenza degli esecutori delle attività, ma<br />
le rende <strong>di</strong>sponibili per la loro esecuzione; saranno quin<strong>di</strong> i peer remoti a scegliere le attività da<br />
eseguire e il momento in cui eseguirle.<br />
Per comprendere al meglio questo scenario, riportiamo ora uno schema concettuale dello<br />
svolgimento delle operazioni, ed in seguito la porzione <strong>di</strong> ipertesto che sul peer principale si occupa<br />
della pubblicazione delle attività da eseguire, e quella che aggiorna i dati al termine delle attività<br />
eseguite sul peer remoto.<br />
Figura 35 - Modello concettuale del trasferimento <strong>di</strong> informazioni in modalità "Pull"<br />
L’ipertesto in figura 36 mostra la pubblicazione delle attività da eseguire remotamente, lo stesso<br />
ipertesto viene utilizzato per pubblicare i risultati dell’esecuzione delle attività.<br />
Figura 36 - Frammento <strong>di</strong> ipertesto per la pubblicazione delle attività da svolgere remotamente<br />
81
Progettazione delle applicazioni Capitolo 6<br />
In figura 37 è riportato il frammento <strong>di</strong> ipertesto necessario per l’invocazione dei Web Service<br />
pubblicati, che permette <strong>di</strong> inserire nel database del peer remoto i dati sulle attività da svolgere, e<br />
al peer principale <strong>di</strong> scrivere nella propria base <strong>di</strong> dati i risultati dell’esecuzione <strong>di</strong> tali attività.<br />
Figura 37 - Ipertesto per l'aggiornamento dei dati a fronte dell'invocazione <strong>di</strong> un Web Service<br />
In figura possiamo notare la unit Request-Response, la quale attraverso un’appropriata<br />
trasformazione XSL, fornisce i dati letti dal Web Service ad una XML In Unit, che provvederà ad<br />
aggiornare il database reale del peer coinvolto.<br />
Le <strong>di</strong>fficoltà che insorgono utilizzando questa metodologia, sono dovute al fatto che il peer<br />
principale non ha il controllo totale dell’esecuzione delle attività; per questo motivo sarebbe<br />
opportuna l’aggiunta <strong>di</strong> particolari accorgimenti nella base <strong>di</strong> dati per poter tener traccia <strong>di</strong> colui<br />
che ha prelevato i dati per l’esecuzione <strong>di</strong> una data attività. Inoltre per tener traccia<br />
dell’avanzamento delle attività, e per evitare che essa venga eseguita più volte, sarebbe necessario<br />
un ulteriore scambio <strong>di</strong> messaggi, con relativa pubblicazione e invocazione <strong>di</strong> Web Services,<br />
contribuendo cosi a complicare ulteriormente lo scenario <strong>di</strong>stribuito.<br />
Entrambe le metodologie <strong>di</strong> trasferimento delle informazioni, non sono legate ad un particolare<br />
scenario <strong>di</strong> <strong>di</strong>stribuzione, ma possono essere adottate in tutti i casi in cui occorre scambiare<br />
informazioni fra <strong>di</strong>versi peer; infatti per quanto riguarda i casi <strong>di</strong> stu<strong>di</strong>o implementati, è stata<br />
adottata per tutti i progetti relativi a Click4aLoan la modalità Push per l’invio dei dati sulle attività<br />
da eseguire sui peer remoti, mentre per l’applicazione Click4aCar, è stata utilizzata la modalità Pull<br />
per quanto riguarda la ricerca <strong>di</strong> auto in ven<strong>di</strong>ta da parte <strong>di</strong> un utente, e la modalità Push per la<br />
conferma <strong>di</strong> acquisto e la messa in ven<strong>di</strong>ta <strong>di</strong> un’auto.<br />
Distribuzione dei sotto-processi con controllo centralizzato<br />
Come descritto nei capitoli precedenti, il flusso <strong>di</strong> processo <strong>di</strong> questo scenario, prevede la delega<br />
dell’esecuzione <strong>di</strong> alcune attività a peer remoti, i quali eseguono solamente queste attività<br />
atomiche. Il peer principale, l’unico a gestire i meta-dati <strong>di</strong> workflow, dovrà governare anche quelli<br />
riferiti a queste attività, anche se poi verranno eseguite su un altro peer. La soluzione adottata è<br />
quella <strong>di</strong> avviare l’attività sul peer principale prima <strong>di</strong> inviare i dati al peer remoto, e terminarla al<br />
82
Progettazione delle applicazioni Capitolo 6<br />
ricevimento dei dati risultanti da quest’ultimo. In figura 38 è riportato uno schema concettuale che<br />
mostra la soluzione adottata.<br />
Figura 38 - Schema concettuale della gestione delle attività remote<br />
Il problema che insorge consiste nell’assegnamento <strong>di</strong> tali attività, in quanto, non mantenendo i<br />
peer remoti i meta-dati <strong>di</strong> workflow, non sarà loro possibile sfruttare le potenzialità offerte dalle<br />
unit per i workflow <strong>di</strong> WebML per quanto riguarda l’esecuzione delle attività. Una soluzione è quella<br />
<strong>di</strong> assegnare queste attività all’utente che gestisce il flusso <strong>di</strong> processo sul peer principale, e più in<br />
particolare al manager, ed avviare e terminare le attività sul peer principale, mentre la loro<br />
effettiva esecuzione avviene sui peer remoti.<br />
Partendo da questa premessa, affrontiamo ora il problema della <strong>di</strong>stinzione tra controllo automatico<br />
e manuale del flusso <strong>di</strong> processo, che comporta <strong>di</strong>fferenze sostanziali per quanto riguarda<br />
l’ipertesto dell’applicazione del peer principale; analizzeremo ora le due soluzioni.<br />
Per quanto riguarda lo scenario del controllo manuale del flusso <strong>di</strong> processo, il manager ha il<br />
compito <strong>di</strong> intervenire attivamente ad ogni interazione col peer remoto, controllando se l’attività<br />
remota ha avuto termine e <strong>di</strong> conseguenza avviare l’attività successiva.<br />
In particolare mostreremo la porzione del processo che va dall’avvio della prima attività “Financial<br />
Check” fino al termine della seconda attività “Residence Check”, la quale ci permetterà <strong>di</strong><br />
comprendere le scelte progettuali adottate, e che abbiamo evidenziato nel seguente <strong>di</strong>agramma del<br />
flusso <strong>di</strong> processo, descritto attraverso la notazione BPMN.<br />
83
Progettazione delle applicazioni Capitolo 6<br />
Figura 39 - Porzione del processo analizzata<br />
Riportiamo ora i frammenti <strong>di</strong> ipertesto relativi alla porzione <strong>di</strong> flusso <strong>di</strong> processo in esame, che ci<br />
consentiranno <strong>di</strong> comprendere come è possibile implementare uno scenario <strong>di</strong> <strong>di</strong>stribuzione <strong>di</strong><br />
questo tipo.<br />
La figura 40 mostra l’ipertesto della site-view “Manager Site View” dell’applicazione residente sul<br />
peer principale. Esso inizia con la pagina Remote Financial Check, da cui il manager può selezionare<br />
una delle attività “Financial Check” a lui stesso assegnate in seguito ad una validazione iniziale, per<br />
mezzo <strong>di</strong> una Workflow Index Unit, avviando così l’attività scelta attraverso una Start Unit. Il passo<br />
successivo, invisibile all’utente, consiste nell’invocare un Web Service pubblicato dal peer remoto,<br />
inviandogli i dati relativi all’attività da svolgere. L’implementazione <strong>di</strong> questo servizio sul peer<br />
remoto è mostrato in figura 41, dove si può notare una Solicit-Response Unit che riceve i dati dal<br />
peer principale, ed inserisce nella base <strong>di</strong> dati remota una nuova istanza con i dati ricevuti.<br />
84
Progettazione delle applicazioni Capitolo 6<br />
Figura 40 - Frammento <strong>di</strong> ipertesto della site-view “Manager Site View” del peer principale<br />
Figura 41 - Web Service per la ricezione dei dati dal peer principale<br />
A questo punto, come mostrato nella figura 42, gli impiegati del peer remoto, attraverso una Index<br />
Unit, possono visionare le attività da eseguire e svolgere le operazioni necessarie, dopo<strong>di</strong>chè<br />
invieranno i risultati del loro lavoro al peer principale attraverso una One Way Unit (Return Data),<br />
che invocherà un Web Service pubblicato da quest’ultimo, che provvederà ad aggiornare i dati<br />
relativi alla richiesta <strong>di</strong> prestito per la quale è stata eseguita l’attività <strong>di</strong> controllo finanziario.<br />
L’ipertesto per la realizzazione del Web Service in questione è riportato in figura 43, in cui vengono<br />
mo<strong>di</strong>ficati i dati della richiesta <strong>di</strong> prestito in esame con i dati provenienti dal peer remoto.<br />
85
Progettazione delle applicazioni Capitolo 6<br />
Figura 42 - Frammento <strong>di</strong> ipertesto della site-view "Employee Site View" sul peer remoto<br />
Figura 43 - Web Service per la ricezione dei dati dal peer remoto<br />
Una volta aggiornate le informazioni nella base <strong>di</strong> dati del peer principale, esse verranno mostrate<br />
al manager tramite una Index Unit, il quale potrà così confermarne la ricezione e far proseguire il<br />
flusso <strong>di</strong> processo, assegnando nuovamente a se stesso l’attività successiva “Residence Check”, e<br />
terminando così l’attività “Financial Check”. Il manager, a questo punto, potrà selezionare la<br />
successiva attività “Residence Check” e ripetere l’interazione descritta in precedenza per l’attività<br />
“Financial Check”. Lo stesso proce<strong>di</strong>mento avverrà anche per l’attività “Cre<strong>di</strong>t Check”, eseguita a<br />
valle dei controlli precedenti. Al termine dell’ultimo controllo, verrà assegnata al manager l’attività<br />
“Final Validation”, tramite la quale il manager verificherà i risultati <strong>di</strong> tutti i controlli effettuati dagli<br />
impiegati e deciderà se concedere o meno il prestito.<br />
Dal momento che WebML non prevede la notifica all’utente dell’arrivo <strong>di</strong> dati da parte <strong>di</strong> un altro<br />
peer, è stato necessario adottare la seguente strategia: il manager per verificare la ricezione dei<br />
dati da parte del peer che ha eseguito l’attività, deve effettuare <strong>di</strong>versi refresh della pagina<br />
“Financial Check Status”, me<strong>di</strong>ante il relativo link, in modo da permettere la visualizzazione delle<br />
informazioni mo<strong>di</strong>ficate nella base <strong>di</strong> dati dal Web Service “Return Data”. Solo a questo punto<br />
apparirà il link per consentire la prosecuzione del flusso <strong>di</strong> processo con l’attività successiva.<br />
La figura seguente riporta una schermata del tool WebRatio ®<br />
che mostra l’area “Remote Loan<br />
Checks Area” appartenente alla site-view “Manager Site View” dell’applicazione sul peer principale,<br />
la quale gestisce le interazioni con i peer remoti per quanto riguarda le richieste <strong>di</strong> prestiti, e dove<br />
si può notare la strategia precedentemente descritta.<br />
86
Progettazione delle applicazioni Capitolo 6<br />
Figura 44 - Schermata del tool WebRatio ® relativa all'area " Remote Loan Checks Area "<br />
87
Progettazione delle applicazioni Capitolo 6<br />
In quest’area sono presenti <strong>di</strong>verse pagine “landmark”, che rappresentano le pagine <strong>di</strong> “refresh”<br />
(Remote Financial Check Status, Remote Residence Check Status, Remote Cre<strong>di</strong>t Check Status), le<br />
quali permettono al manager <strong>di</strong> controllare l’arrivo delle informazioni riguardanti il controllo<br />
corrispondente effettuato sui peer remoti, e <strong>di</strong> proseguire così nel flusso <strong>di</strong> processo. Queste pagine<br />
sono “landmark” per poter essere raggiunte in qualsiasi momento da parte del manager che,<br />
mentre attende i dati dai peer remoti, può de<strong>di</strong>carsi ad altre attività.<br />
La parte finale delle operazioni mostrate in figura 42 consiste nell’effettuare <strong>di</strong>versi test per poter<br />
controllare la terminazione delle attività precedenti ed assegnare la successiva attività “Final<br />
Validation”.<br />
Nella figura 45 è riportata la pagina “Remote Financial Check Status” visualizzata dal manager,<br />
nella quale è possibile notare il link <strong>di</strong> refresh “Check Remote Status”, con il quale è possibile<br />
controllare l’arrivo dei dati per il controllo finanziario; una volta che questi saranno <strong>di</strong>sponibili,<br />
verrà visualizzata la richiesta <strong>di</strong> prestito corrispondente nell’area “Loan Requests”; una volta<br />
selezionata porterà il manager nella pagina in cui convalidare la ricezione dei dati, e portare avanti<br />
così il flusso <strong>di</strong> processo.<br />
Figura 45 - Pagina "Remote Financial Check Status" dell’applicazione 3.1.Main<br />
Per quanto riguarda invece lo scenario del controllo automatico del flusso <strong>di</strong> processo, il manager<br />
non deve intervenire attivamente ad ogni interazione col peer remoto, ma sarà il sistema che<br />
assegnerà, avvierà e terminerà in maniera automatica le attività remote.<br />
88
Progettazione delle applicazioni Capitolo 6<br />
Questo proce<strong>di</strong>mento composto dall’assegnamento della prossima attività da eseguire<br />
remotamente, dalla terminazione dell’attività precedente, dall’avvio <strong>di</strong> quella successiva e dall’invio<br />
dei dati al peer remoto, ha concettualmente la struttura riportata in figura 46.<br />
Web Service (Main Peer)<br />
Return Data<br />
Mo<strong>di</strong>fy<br />
Assign Unit End Unit Start Unit<br />
OK OK OK OK<br />
Request Remote<br />
Check<br />
Application<br />
Residence Check<br />
Financial Check<br />
Residence Check<br />
Figura 46 - Frammento <strong>di</strong> ipertesto per il controllo automatico del flusso <strong>di</strong> processo<br />
Questa soluzione, anche se può sembrare più semplice rispetto al proce<strong>di</strong>mento descritto in<br />
precedenza, dal punto <strong>di</strong> vista implementativo presenta delle <strong>di</strong>fficoltà dovute al CASE tool<br />
WebRatio ® ; essendo la sequenza <strong>di</strong> ipertesto da implementare situata nella siteview “Web Service”<br />
che prevede l’utilizzo <strong>di</strong> un layout <strong>di</strong> pagina e <strong>di</strong> uno stylesheet particolari, non vi è la possibilità<br />
per le unit coinvolte <strong>di</strong> accedere ai dati necessari alla loro corretta esecuzione.<br />
89
Progettazione delle applicazioni Capitolo 6<br />
Distribuzione dei sotto-processi con controllo <strong>di</strong>stribuito annidato<br />
Questo scenario prevede la delega ai peer remoti da parte del peer principale <strong>di</strong> sotto-processi benparentesizzati,<br />
composti da una serie <strong>di</strong> attività, e non più <strong>di</strong> attività atomiche come nel caso<br />
precedente.<br />
Il peer principale non deve gestire la serie <strong>di</strong> attività che compongono il flusso del sotto-processo<br />
delegato al peer remoto, vedendolo come una “black-box”, <strong>di</strong> cui conosce solamente l’unico punto<br />
<strong>di</strong> uscita e l’unico punto <strong>di</strong> ingresso.<br />
La soluzione implementativa da noi introdotta riguarda il fatto <strong>di</strong> rappresentare, sul peer principale,<br />
tale sotto-processo come un’unica attività; questa sarà dapprima assegnata al manager del peer<br />
principale, avviata prima dell’invio dei dati al peer remoto, e terminata al momento della ricezione<br />
dei risultati della computazione.<br />
Nella figura successiva verrà riportato un esempio della soluzione introdotta.<br />
Figura 47 - Schema concettuale della gestione del sotto-processo delegato ai peer remoti<br />
90
Progettazione delle applicazioni Capitolo 6<br />
Ad esempio, per quanto riguarda il sotto-processo evidenziato in figura 48, esso sarà identificato<br />
dal peer principale come un’unica attività “Remote Check”.<br />
Figura 48 – Sotto-processo “ben-parentesizzato”<br />
In figura 49 è riportato un frammento dell’ipertesto della site-view del manager del peer principale,<br />
che consente la realizzazione dello scenario in esame. Esso inizia con il click da parte del manager<br />
del link “Start Remote Process” al termine della validazione iniziale, che porterà all’assegnamento<br />
dell’attività “Remote Check” al manager stesso, e alla successiva terminazione dell’attività <strong>di</strong><br />
validazione iniziale. A questo punto verranno presentate al manager le richieste <strong>di</strong> prestito che<br />
hanno superato la validazione iniziale; selezionandone una si darà avvio all’attività “Remote Check”<br />
e all’invio dei dati necessari al peer remoto.<br />
Il flusso navigazionale del manager continua nella pagina “Remote Check Status”, la quale presenta<br />
un link <strong>di</strong> refresh, come per il caso precedente, che permette, una volta ricevuti i risultati della<br />
91
Progettazione delle applicazioni Capitolo 6<br />
computazione dal peer remoto, <strong>di</strong> procedere con l’assegnamento della successiva attività <strong>di</strong> “Final<br />
Validation” e <strong>di</strong> terminare l’attività “Remote Check”.<br />
Manager Site View (Main Peer)<br />
Preliminary Validation<br />
Page<br />
Remote Validation<br />
Start Remote Process<br />
Assign Unit<br />
OK<br />
End Unit<br />
OK<br />
Remote Check<br />
Start Unit<br />
OK<br />
Request Remote<br />
Check<br />
Remote Check<br />
Preliminary Validation<br />
Application<br />
Remote Check<br />
End Unit<br />
Assign Unit<br />
Remote Check Status<br />
Index unit<br />
OK<br />
Remote Check<br />
Final Validation<br />
Application<br />
[Ad<strong>di</strong>tional Info =<br />
RemChk_ok]<br />
Figura 49 - Frammento <strong>di</strong> ipertesto della site-view "Manager Site View" sul peer principale<br />
Per quanto riguarda il peer remoto, esso pubblica un Web Service per ricevere i dati dal peer<br />
principale, e richiede al manager <strong>di</strong> assegnare le attività componenti il sotto-processo agli impiegati<br />
che poi le eseguiranno. Al termine della loro esecuzione, il manager controllerà i dati risultanti e li<br />
invierà al peer principale attraverso l’invocazione <strong>di</strong> un Web Service pubblicato da quest’ultimo.<br />
A <strong>di</strong>fferenza dello scenario con controllo centralizzato, il peer principale non è in grado <strong>di</strong> conoscere<br />
l’effettivo stato <strong>di</strong> avanzamento del sotto-processo delegato ai peer remoti, in quanto non conosce<br />
le attività che lo compongono; ne verrà a conoscenza solo nel momento in cui verrà notificato della<br />
fine della computazione da parte del peer remoto.<br />
In figura 50 possiamo notare come è stato implementato nel tool WebRatio ®<br />
l’ipertesto appena<br />
descritto, e più precisamente una porzione dell’area “Manager Area” nella quale è presente il<br />
frammento <strong>di</strong> ipertesto che delega i sotto-processi al peer remoto, e l’area “Remote Loan Check<br />
Area” nella quale il manager può controllare lo stato <strong>di</strong> ricezione dei dati al termine dell’esecuzione<br />
del sotto-processo delegato per quanto riguarda le richieste <strong>di</strong> prestiti semplici e proseguire poi nel<br />
flusso <strong>di</strong> processo. Quest’ultima area è definita come “landmark” per poter essere raggiunta da<br />
qualsiasi punto della navigazione, lasciando il manager libero <strong>di</strong> eseguire altre operazioni in attesa<br />
dei dati dai peer remoti.<br />
In figura 51 è riportata la pagina che si presenterà al manager e dalla quale può selezionare la<br />
richiesta <strong>di</strong> prestito desiderata ed inviare i relativi dati al peer remoto.<br />
92
Progettazione delle applicazioni Capitolo 6<br />
Figura 50 - Schermata del tool WebRatio ® relativa alle aree "Manager Area" e “Remote Loan Check Area”<br />
Figura 51 - Pagina "Remote Validation" dell’applicazione 3.2a.Main<br />
93
Progettazione delle applicazioni Capitolo 6<br />
Distribuzione dei sotto-processi con controllo <strong>di</strong>stribuito generalizzato<br />
A <strong>di</strong>fferenza dello scenario precedente, non è possibile identificare un unico punto <strong>di</strong> ingresso e<br />
uscita per quanto riguarda il sotto-processo delegato ai peer remoti, e per questo motivo il sottoprocesso<br />
viene detto “non ben-parentesizzato”. L’ipertesto viene influenzato pesantemente da<br />
questa situazione, <strong>di</strong> seguito presenteremo le <strong>di</strong>fferenze rispetto allo scenario precedente,<br />
esaminando il sotto-processo evidenziato in figura 52.<br />
Main Peer<br />
Applicant Manager Employee<br />
Manager<br />
Remote Peer<br />
Employee<br />
Application<br />
Request<br />
Preliminary<br />
Validation<br />
Not Valid<br />
x<br />
+<br />
Financial<br />
Check<br />
Cre<strong>di</strong>t Check<br />
Residence<br />
Check<br />
Job<br />
Check<br />
+<br />
...<br />
Figura 52 - Sotto-processo non “ben-parentesizzato”<br />
Innanzitutto non è più possibile per il peer principale riassumere le attività remote come un’unica<br />
attività generica, in quanto non essendoci un unico punto <strong>di</strong> ritorno, non è possibile gestire<br />
correttamente la terminazione della suddetta attività, e <strong>di</strong> conseguenza proseguire con il flusso <strong>di</strong><br />
processo.<br />
94
Progettazione delle applicazioni Capitolo 6<br />
La soluzione adottata nella progettazione dell’ipertesto consiste nell’introduzione nel flusso <strong>di</strong><br />
processo del peer principale <strong>di</strong> attività corrispondenti alle attività <strong>di</strong> confine del peer remoto, le<br />
quali rappresentano quelle attività che si posizionano esattamente dopo ed esattamente prima la<br />
ricezione e l’invio dei dati al peer principale, come mostrato nello schema concettuale riportato<br />
nella figura seguente:<br />
Figura 53 - Schema concettuale per il controllo del sotto-processo "non ben-parentesizzato"<br />
Tale soluzione permette <strong>di</strong> tener traccia nella base <strong>di</strong> dati, grazie ai meta-dati <strong>di</strong> workflow <strong>di</strong><br />
WebML, dell’avanzamento del flusso <strong>di</strong> processo, e più in particolare del fatto <strong>di</strong> aver delegato<br />
l’esecuzione <strong>di</strong> una sua parte ad un altro peer. Il vantaggio sostanziale, però, si verifica al<br />
momento della ricezione dei dati <strong>di</strong> ritorno dai peer remoti; per esempio, come nel caso trattato,<br />
95
Progettazione delle applicazioni Capitolo 6<br />
essendoci due messaggi in ingresso al peer principale, non sempre è possibile identificare quale<br />
attività è stata terminata.<br />
Dal punto <strong>di</strong> vista implementativo, la gestione da parte del peer principale <strong>di</strong> queste nuove attività,<br />
si <strong>di</strong>fferenzia nel caso in cui esse vengano attivate al momento dell’invio <strong>di</strong> un messaggio o al<br />
momento della sua ricezione. Per quanto riguarda l’invio dei dati al peer remoto, l’ipertesto<br />
utilizzato sarà quello in figura 54:<br />
Figura 54 - Ipertesto per il caso <strong>di</strong> invio <strong>di</strong> un messaggio al peer remoto<br />
Il peer principale, con tale struttura ipertestuale ha la possibilità <strong>di</strong> avviare l’attività corrispondente<br />
all’attività <strong>di</strong> confine appartenente al peer remoto prima dell’invio dei dati e terminarla subito dopo,<br />
in quanto non è prevista l’esecuzione <strong>di</strong> altre operazioni all’interno <strong>di</strong> essa. Questo ci permette <strong>di</strong><br />
avere nella base <strong>di</strong> dati una traccia della delega <strong>di</strong> un sotto-processo ad un altro peer, in quanto,<br />
senza la sua introduzione, non sarebbe possibile riconoscere lo stato <strong>di</strong> avanzamento dell’intero<br />
processo.<br />
Per quanto riguarda l’esempio implementato, non è presente sul peer remoto una vera e propria<br />
attività <strong>di</strong> confine imme<strong>di</strong>atamente dopo la ricezione del messaggio inviato dal peer principale, in<br />
quanto il sotto-processo inizia <strong>di</strong>rettamente con una <strong>di</strong>ramazione; per questo motivo l’attività<br />
corrispondete sul peer principale è stata chiamata “Remote Check”.<br />
Figura 55 - Ipertesto per il caso <strong>di</strong> ricezione <strong>di</strong> un messaggio dal peer remoto<br />
Per quanto riguarda la ricezione dei dati da parte del peer principale, l’ipertesto suggerito è quello<br />
riportato in figura 55, in cui a fronte della ricezione dei dati, viene avviata un’attività<br />
corrispondente all’ultima attività (<strong>di</strong> confine) svolta dal peer remoto prima dell’invio del messaggio;<br />
96
Progettazione delle applicazioni Capitolo 6<br />
in seguito verranno apportate le mo<strong>di</strong>fiche necessarie alla base <strong>di</strong> dati, assegnata l’attività<br />
successiva e infine eseguita la End Unit.<br />
Il vantaggio ottenibile da una soluzione <strong>di</strong> questo genere, oltre al fatto <strong>di</strong> tener traccia dello stato <strong>di</strong><br />
avanzamento del processo, è quello <strong>di</strong> poter controllare l’effettivo completamento delle attività<br />
remote, per poter proseguire nel flusso <strong>di</strong> processo, me<strong>di</strong>ante l’utilizzo <strong>di</strong> una semplice “Get<br />
Activity Status Unit”. Per quanto riguarda l’esempio implementato, questa soluzione ci permette <strong>di</strong><br />
verificare la ricezione <strong>di</strong> entrambi i messaggi <strong>di</strong> ritorno dal peer remoto e <strong>di</strong> conseguenza<br />
proseguire col flusso <strong>di</strong> processo.<br />
In figura 56 è riportato l’ipertesto utilizzato nel progetto 3.2b.Main per eseguire il controllo<br />
dell’effettiva ricezione <strong>di</strong> entrambi i messaggi <strong>di</strong> ritorno, con gli accorgimenti necessari per poter<br />
sopperire al fatto che non è possibile, al momento, posizionare le unit mostrate in figura 55 in una<br />
site-view pre<strong>di</strong>sposta per la pubblicazione <strong>di</strong> Web Service.<br />
Figura 56 - Frammento <strong>di</strong> ipertesto della site-view "Employee SIte View" sul peer principale<br />
Possiamo notare che tramite una Workflow Index Unit, l’impiegato sul peer principale può visionare<br />
le richieste <strong>di</strong> prestito <strong>di</strong> cui sono stati ricevuti i dati inviati dal peer remoto al termine dell’attività<br />
“Residence Check” da lui eseguita. Dopo aver selezionato la richiesta desiderata viene avviata<br />
l’attività “Remote Residence Check”, corrispondente all’attività <strong>di</strong> confine “Residence Check”; in<br />
seguito verrà eseguito il controllo dello stato dell’attività “Job Check”, eseguita subito dopo la<br />
ricezione dei dati riguardanti l’attività remota “Financial Check” e implementata in un altro<br />
frammento <strong>di</strong> ipertesto; se lo stato <strong>di</strong> questa attività è “Completed” è possibile eseguire<br />
l’assegnamento della successiva attività “Final Validation” che sarà eseguita dal manager. La<br />
terminazione dell’attività “Remote Residence” può avvenire o dopo l’assegnamento dell’attività<br />
successiva, oppure a valle della Test Unit, nel caso in cui non sia stata ancora completata l’attività<br />
97
Progettazione delle applicazioni Capitolo 6<br />
“Job Check”; sarà quin<strong>di</strong> l’ipertesto riguardante questa fase che controllerà l’effettiva terminazione<br />
dell’attività “Remote Residence Check” e assegnerà al manager l’attività “Final Validation”.<br />
La soluzione proposta può essere adattata per sod<strong>di</strong>sfare tipologie <strong>di</strong> <strong>di</strong>visione del flusso <strong>di</strong><br />
processo <strong>di</strong>fferenti rispetto a quella da noi implementata, con, ad esempio, un numero variabile <strong>di</strong><br />
punti <strong>di</strong> uscita e ingresso del sotto-processo.<br />
Un ulteriore approccio sarebbe stato quello <strong>di</strong> mantenere sul peer principale delle attività “fittizie”<br />
corrispondenti a tutte le attività delegate al peer remoto, questo permetterebbe <strong>di</strong> mantenere<br />
costantemente sotto controllo l’effettivo stato <strong>di</strong> avanzamento del processo, ma d’altro canto<br />
comporterebbe uno scambio massiccio <strong>di</strong> messaggi fra i due peer.<br />
Per quanto riguarda l’implementazione nel tool WebRatio ® , in figura 57 è riportato il frammento <strong>di</strong><br />
ipertesto mostrato schematicamente in figura 54, e più in particolare l’area “Manager Area” della<br />
site-view “Manager Site View”; in questa area il manager residente sul peer principale, dopo aver<br />
selezionato una richiesta <strong>di</strong> prestito nella pagina “Start Remote Check”, avvia l’attività “Remote<br />
Check” e invia i dati necessari al sotto-processo delegato al peer remoto. Successivamente<br />
assegnerà a degli impiegati l’attività “Job Check”, che verrà svolta sul peer principale, e le due<br />
attività “Remote Residence Check” e “Remote Financial Check” che rappresentano le due attività <strong>di</strong><br />
confine svolte sul peer remoto.<br />
98
Progettazione delle applicazioni Capitolo 6<br />
Figura 57 - Schermata del tool WebRatio ® relativa all’area "Manager Area"<br />
La figura 58 mostra l’area “Employee Area” della site-view “Employee Site View” dell’applicazione<br />
residente sul peer principale, che permette all’impiegato <strong>di</strong> poter controllare l’arrivo dei dati dal<br />
peer remoto e procedere con le operazioni successive. Più nello specifico, attraverso la pagina<br />
“Remote Residence Check” può selezionare la richiesta <strong>di</strong> prestito della quale sono stati ricevuti i<br />
dati dal peer remoto dopo l’avvenuta esecuzione dell’attività “Residence Check”, e tramite l’avvio e<br />
la terminazione dell’attività “Remote Residence Check” registrerà nella base <strong>di</strong> dati locale i metadati<br />
relativi all’attività svolta sul peer remoto. Allo stesso modo, dalla pagina “Remote Financial<br />
Check”, può controllare l’avvenuta ricezione dei dati dopo l’attività “Financial Check” svolta<br />
anch’essa sul peer remoto. In questo caso, l’impiegato dovrà svolgere l’attività “Job Check”, come<br />
previsto dal flusso <strong>di</strong> processo che stiamo trattando. Le operazioni che precedono l’assegnamento<br />
della successiva attività “Final Validation” rispecchiano quelle descritte precedentemente.<br />
99
Progettazione delle applicazioni Capitolo 6<br />
Figura 58 - Schermata del tool WebRatio ® relativa all’area "Employee Area"<br />
100
Progettazione delle applicazioni Capitolo 6<br />
6.2. Click4aCar<br />
Click4aCar, come già introdotto nel capitolo 2.3, rappresenta uno scenario <strong>di</strong> compraven<strong>di</strong>ta <strong>di</strong><br />
macchine usate, che è stato utilizzato per coprire l’ultimo caso <strong>di</strong> <strong>di</strong>stribuzione dei processi:<br />
- Interazione fra processi in<strong>di</strong>pendenti, costituito da tre progetti separati: 4.MainCar, che<br />
rappresenta l’applicazione relativa ad una concessionaria, 4.MainUser, l’applicazione<br />
utilizzata dagli utenti che desiderano interagire col sistema, e 4.wsFactory, il servizio che<br />
espone le auto <strong>di</strong>sponibili all’immatricolazione.<br />
Analizzeremo ora in dettaglio i requisiti dell’applicazione, i modelli dei dati e i passi della<br />
progettazione dell’ipertesto.<br />
6.2.1. Requisiti<br />
Innanzitutto identifichiamo le due tipologie <strong>di</strong> attori che prendono parte al processo:<br />
- User: rappresenta l’utente che può comprare o vendere la propria auto.<br />
- Employee: rappresenta l’impiegato <strong>di</strong> un concessionario che segue le varie fasi <strong>di</strong> vita <strong>di</strong><br />
un’auto, dalla sua immatricolazione alla sua demolizione.<br />
Per quanto riguarda il primo attore, possiamo in<strong>di</strong>viduare i seguenti requisiti funzionali: la<br />
possibilità <strong>di</strong> effettuare una ricerca delle auto in ven<strong>di</strong>ta da parte del concessionario o <strong>di</strong> altri<br />
utenti; la possibilità <strong>di</strong> acquistare un’auto; la possibilità <strong>di</strong> mettere in ven<strong>di</strong>ta la propria auto; e la<br />
possibilità <strong>di</strong> visualizzare la cronologia delle auto possedute.<br />
La figura 59 riporta un <strong>di</strong>agramma UML in cui possiamo notare le attività che permettono <strong>di</strong><br />
sod<strong>di</strong>sfare i requisiti emersi, e in cui si può osservare che la totalità delle attività eseguibili<br />
dall’utente richiedono il riconoscimento dello stesso me<strong>di</strong>ante una fase <strong>di</strong> Login, la quale andrà a<br />
buon fine solamente se l’utente ha in precedenza effettuato una registrazione al sistema.<br />
101
Progettazione delle applicazioni Capitolo 6<br />
Figura 59 - Use Case Diagram per l'attore "User"<br />
Per la seconda tipologia <strong>di</strong> utente del sistema, l’Employee, possiamo in<strong>di</strong>viduare i seguenti requisiti<br />
funzionali: la possibilità <strong>di</strong> visualizzare le auto prodotte dalle case costruttrici, <strong>di</strong> immatricolarle,<br />
venderle, acquistarle e poterle demolire.<br />
Le attività che permettono <strong>di</strong> sod<strong>di</strong>sfare questi requisiti sono riportate nel <strong>di</strong>agramma UML in figura<br />
60, dove possiamo notare che tutte le attività richiedono una fase <strong>di</strong> Login al sistema, e che<br />
l’attività <strong>di</strong> immatricolazione <strong>di</strong> un’auto necessita <strong>di</strong> una fase <strong>di</strong> visualizzazione delle auto <strong>di</strong>sponibili<br />
all’immatricolazione.<br />
Visualizzare auto<br />
da immatricolare<br />
<br />
<br />
Immatricolare<br />
un'auto<br />
<br />
Login<br />
<br />
Employee<br />
Acquistare un'auto<br />
<br />
Vendere un'auto<br />
Figura 60 - Use Case Diagram per l'attore "Employee"<br />
102
Progettazione delle applicazioni Capitolo 6<br />
6.2.2. Modello dei dati<br />
Per quanto riguarda le due applicazioni principali, per gli utenti e per la concessionaria, esse<br />
presentano il medesimo modello dei dati, in cui abbiamo in<strong>di</strong>viduato l’ oggetto Core “Car”, il quale<br />
permette <strong>di</strong> gestire le informazioni riguardanti una determinata auto.<br />
In figura 61 sono stati evidenziati i <strong>di</strong>versi sotto-schemi e la parte riguardante il meta-modello dei<br />
dati <strong>di</strong> workflow, necessario per poter utilizzare l’estensione per i workflow <strong>di</strong> WebML.<br />
Figura 61 - Modello dei dati per le applicazioni "4.MainCar" e "4.MainUser"<br />
Il terzo progetto è costituito da un servizio semplice che esporta le auto <strong>di</strong>sponibili<br />
all’immatricolazione, e per questo il suo modello dei dati è composto dalla sola entità “Car”; sono<br />
assenti i meta-dati <strong>di</strong> workflow e il sotto-schema <strong>di</strong> personalizzazione:<br />
Figura 62 - Modello dei dati per il progetto "4.wsFactory"<br />
103
Progettazione delle applicazioni Capitolo 6<br />
6.2.3. Ipertesto<br />
Come abbiamo visto per Click4aLoan, presentiamo innanzitutto l’organizzazione delle site-view e<br />
successivamente le porzioni <strong>di</strong> ipertesto che consentono la realizzazione dello scenario <strong>di</strong><br />
<strong>di</strong>stribuzione implementato.<br />
6.2.3.1. Organizzazione delle site-view<br />
L’organizzazione delle site-view varia a seconda dell’applicazione:<br />
o 4.MainCar: composto dalle site-view: “Public Site View”, che permette all’utente che<br />
gestisce il concessionario <strong>di</strong> effettuare la login al sistema; “Employee Site View”, che<br />
permette <strong>di</strong> immatricolare, comprare e demolire delle auto, e <strong>di</strong> gestirne la<br />
compraven<strong>di</strong>ta; “Web Service”, con layout <strong>di</strong> pagina “SOAP Envelope” e stylesheet “Web<br />
services”, che permette <strong>di</strong> esportare i servizi per la pubblicazione delle auto <strong>di</strong>sponibili, e<br />
per le fasi <strong>di</strong> acquisto e ven<strong>di</strong>ta.<br />
o<br />
4.MainUser: composto dalle site-view: “Public Site View”, che permette all’utente <strong>di</strong><br />
effettuare la login al sistema o <strong>di</strong> registrarsi; “User Site View”, che permette <strong>di</strong> comprare e<br />
vendere le auto, e <strong>di</strong> inviare i relativi dati all’applicazione del concessionario; “Web<br />
Service”, che permette <strong>di</strong> esportare un servizio che permette <strong>di</strong> ricevere i dati dal<br />
concessionario relativi alle auto in ven<strong>di</strong>ta e alle auto acquistate da parte dell’utente<br />
corrente.<br />
o 4.wsFactory: che rappresenta il servizio remoto che offre le auto <strong>di</strong>sponibili<br />
all’immatricolazione, ed è composto dalla site-view “New Cars”, la quale presenta i servizi<br />
per esportare le auto e per notificarne la loro immatricolazione.<br />
6.2.3.2. Implementazione degli scenari <strong>di</strong> <strong>di</strong>stribuzione<br />
A <strong>di</strong>fferenza del caso <strong>di</strong> stu<strong>di</strong>o precedente, in Click4aCar, non è presente un unico flusso <strong>di</strong><br />
processo sud<strong>di</strong>viso su <strong>di</strong>versi peer, ma presenta due workflow <strong>di</strong>stinti che interagiscono tra loro<br />
secondo modalità non definite a priori. Infatti per tutti gli scenari analizzati per Click4aLoan,<br />
vengono delegate ai peer remoti delle attività componenti il flusso <strong>di</strong> processo, o ad<strong>di</strong>rittura sottoprocessi,<br />
mantenendo però inalterata la struttura del workflow; questo significa che il flusso <strong>di</strong><br />
processo aveva un avanzamento definito e non mutevole. In Click4aCar, i due flussi <strong>di</strong> processo,<br />
invece, seguono comportamenti in<strong>di</strong>pendenti l’uno dall’altro, ed entrano in comunicazione quando è<br />
104
Progettazione delle applicazioni Capitolo 6<br />
necessario scambiarsi dati essenziali per il proseguimento del loro corso. L’or<strong>di</strong>ne delle operazioni<br />
non è predeterminato, ma varia a seconda del comportamento tenuto dagli utenti.<br />
Riporteremo ora dei frammenti <strong>di</strong> ipertesto che ci permettono <strong>di</strong> far comprendere come è stata<br />
realizzata l’interazione fra i due flussi <strong>di</strong> processo in<strong>di</strong>pendenti; più precisamente descriveremo le<br />
interazioni evidenziate nel <strong>di</strong>agramma in notazione BPMN riportato in figura 63:<br />
User 1<br />
Car<br />
User 2<br />
Manufacture<br />
Matriculation<br />
Will Sell<br />
For Sale<br />
Will Sell<br />
Search Car<br />
Purchase / Sale<br />
Search Car<br />
x<br />
Usage<br />
Demolition<br />
Usage<br />
Figura 63 - Interazione da analizzare<br />
La figura mostra un esempio <strong>di</strong> interazione fra i due flussi <strong>di</strong> processo, e più precisamente fra una<br />
istanza del workflow del concessionario e due istanze del workflow degli utenti. L’esempio riporta il<br />
caso in cui un primo utente desidera mettere in ven<strong>di</strong>ta la propria auto e un secondo che voglia<br />
acquistarla, attraverso l’utilizzo <strong>di</strong> un interme<strong>di</strong>ario, in questo caso il concessionario.<br />
Il primo utente, quin<strong>di</strong>, invia i dati dell’auto da vendere al concessionario, il quale li pubblicherà<br />
insieme a tutti quelli riguardanti le altre auto in ven<strong>di</strong>ta attraverso la pubblicazione <strong>di</strong> un servizio<br />
Web. Il secondo utente, che intende acquistare un’auto, invoca il Web Service in questione e<br />
sceglierà l’auto del primo utente fra quelle proposte, inviando la sua richiesta al concessionario. A<br />
105
Progettazione delle applicazioni Capitolo 6<br />
questo punto il concessionario provvederà a convalidare la transazione inviando una conferma <strong>di</strong><br />
ven<strong>di</strong>ta e <strong>di</strong> acquisto rispettivamente al primo e al secondo utente. Infine, quest’ultimo potrà<br />
utilizzare l’auto appena acquistata, proseguendo nel suo flusso <strong>di</strong> processo.<br />
Riportiamo ora i frammenti <strong>di</strong> ipertesto che modellano le interazioni fra le applicazioni, a cominciare<br />
dai servizi web pubblicati nel progetto 4.wsFactory, che offrono all’applicazione del concessionario<br />
la lista delle auto pronte all’immatricolazione, rappresentando così una sorta <strong>di</strong> casa costruttrice<br />
automobilistica. L’applicazione del concessionario invocherà il Web Service “Available Cars” per<br />
recuperare la lista delle auto <strong>di</strong>sponibili, ed utilizzerà il secondo Web Service “Matriculated Car” per<br />
informare il costruttore dell’avvenuta immatricolazione e permettere l’eliminazione dell’auto dalla<br />
sua base <strong>di</strong> dati; i due Web Service sono rappresentati in figura 64:<br />
Figura 64 - Frammento <strong>di</strong> ipertesto della site-view "New Cars" del progetto wsFactory<br />
In figura 65, invece, sono riportati i servizi pubblicati dall’applicazione del concessionario<br />
(4.MainCar), attraverso i quali l’utente può: recuperare la lista delle auto attualmente in ven<strong>di</strong>ta da<br />
parte del concessionario stesso o da parte <strong>di</strong> altri utenti invocando “SaleableCar”, informare il<br />
concessionario dell’acquisto <strong>di</strong> un’auto fra quelle <strong>di</strong>sponibili invocando “BoughtCar”, e informarlo<br />
dell’intenzione <strong>di</strong> vendere un’auto invocando “SellCar”.<br />
Figura 65 - Frammento <strong>di</strong> ipertesto della site-view "Web Service" dell’applicazione del concessionario<br />
106
Progettazione delle applicazioni Capitolo 6<br />
L’applicazione dell’utente, d’altro canto, pubblica anch’essa dei Web Service per poter ricevere dal<br />
concessionario delle notifiche a fronte dell’avvenuta ven<strong>di</strong>ta dell’auto o a fronte della conferma <strong>di</strong><br />
acquisto, rispettivamente attraverso i servizi “CarSold” e “CarPurchased” rispettivamente.<br />
Figura 66 - Frammento <strong>di</strong> ipertesto della site-view "Web Service" dell’applicazione dell’utente<br />
Per quanto riguarda gli ipertesti che utilizzano questi Web Services, riportiamo un frammento<br />
dell’ipertesto della site-view “Employee Site View” dell’applicazione del concessionario:<br />
Employee Site View (MainCar)<br />
Matriculation Page<br />
Params<br />
Available Cars<br />
Available Cars<br />
Search for New<br />
Cars<br />
OK<br />
Adapter Unit<br />
OK<br />
XML In Unit<br />
OK<br />
Available Cars<br />
Selected Car<br />
D<br />
Params<br />
Params<br />
Car<br />
Car<br />
End Unit<br />
Params<br />
OK<br />
Assign Unit<br />
Params<br />
OK<br />
Assign Unit<br />
Send Data to<br />
wsFactory<br />
Params<br />
OK<br />
Create Car<br />
Params<br />
OK<br />
Start Unit<br />
Matriculation<br />
Demolition<br />
Buy<br />
Car<br />
Matriculation<br />
[Start Case]<br />
Transactions Page<br />
Pen<strong>di</strong>ng<br />
Transactions<br />
Selected Car<br />
Send Data to<br />
Buyer<br />
Send Data to<br />
Seller<br />
Mo<strong>di</strong>fy Unit<br />
Car<br />
[Will Sell = 0]<br />
[Owned = 0]<br />
Car<br />
L<br />
OK<br />
Car<br />
Figura 67 - Frammento <strong>di</strong> ipertesto della site-view "Employee Site View" dell’applicazione del concessionario<br />
Dalla pagina “Matriculation Page”, l’impiegato del concessionario, cliccando sul link “Available<br />
Cars”, avvia l’invocazione del Web Service “Available Cars”, il cui risultato sarà memorizzato in un<br />
database virtuale, dal quale è possibile selezionare l’auto da immatricolare e <strong>di</strong> conseguenza<br />
107
Progettazione delle applicazioni Capitolo 6<br />
avviare l’attività “Matriculation”, che comporta l’avvio del “Case” relativo a quella determinata<br />
auto; ad essa segue una Create Unit, che permette <strong>di</strong> inserire la nuova auto nella base <strong>di</strong> dati<br />
reale. Il passo successivo è quello <strong>di</strong> avvisare il costruttore dell’avvenuta immatricolazione dell’auto<br />
scelta, attraverso l’invocazione del Web Service “Matriculated Car”; a questo punto vengono<br />
assegnate all’utente corrente le successive attività <strong>di</strong> acquisto e <strong>di</strong> demolizione riferite all’auto<br />
scelta. Questo assegnamento è necessario, in quanto queste due attività dovranno, in futuro,<br />
essere eseguite obbligatoriamente dal concessionario per poter terminare il flusso <strong>di</strong> processo.<br />
L’ultimo passo prevede la terminazione dell’attività “Matriculation” attraverso una End Unit.<br />
Dalla pagina “Transactions Page”, l’impiegato può visionare le transazioni <strong>di</strong> acquisto-ven<strong>di</strong>ta in<br />
corso, dalle quali può selezionare quella desiderata e dare la propria approvazione. A questo punto<br />
verranno invocati i due Web Service degli utenti, per avvisare l’acquirente dell’avvenuto acquisto<br />
dell’auto e il ven<strong>di</strong>tore dell’avvenuta ven<strong>di</strong>ta; successivamente verranno apportate le mo<strong>di</strong>fiche<br />
necessarie alla base <strong>di</strong> dati.<br />
La fase <strong>di</strong> approvazione <strong>di</strong> una transazione <strong>di</strong> acquisto-ven<strong>di</strong>ta da parte del concessionario è stata<br />
introdotta in quanto, sempre per i motivi descritti per gli altri progetti, non è attualmente possibile<br />
eseguire un’invocazione <strong>di</strong> un servizio Web in una site-view che presenta layout <strong>di</strong> pagina e<br />
stylesheet adatti alla pubblicazione <strong>di</strong> servizi Web, come la site-view “Web Service”.<br />
Riportiamo ora degli snapshot del tool WebRatio ®<br />
della site-view in esame riferiti agli esempi<br />
appena descritti.<br />
La figura 68 mostra l’area “Matriculation” che contiene le pagine “Matriculation Page” e “Available<br />
Cars” descritte precedentemente; tale area è contrassegnata come “landmark” per poter essere<br />
raggiunta da ogni punto della navigazione all’interno della site-view dell’impiegato, e la sua pagina<br />
<strong>di</strong> default è “Matriculation Page”. La pagina “Available Cars” è raggiungibile solamente dopo<br />
l’invocazione del Web Service che fornisce la lista delle auto <strong>di</strong>sponibili. Le operazioni successive<br />
sono invisibili all’utente, al quale sarà mostrata solamente una pagina, “Matriculation OK”, <strong>di</strong><br />
conferma dell’avvenuta immatricolazione, nel caso queste andassero a buon fine, e una pagina <strong>di</strong><br />
errore nel caso contrario.<br />
In figura 69 è riportata la pagina che mostra le auto <strong>di</strong>sponibili all’immatricolazione che si presenta<br />
all’impiegato, e dalla quale è possibile selezionare l’auto desiderata e procedere alla sua<br />
immatricolazione attraverso il link “Matriculate”.<br />
108
Progettazione delle applicazioni Capitolo 6<br />
Figura 68 - Schermata del tool WebRatio ® relativa all'area "Matriculation"<br />
Figura 69 - Pagina "Available Cars" dell’applicazione 4.MainCar<br />
La figura 70 mostra l’area landmark “Approve Tansactions”, in cui è presente la pagina <strong>di</strong> default<br />
“Transaction Page”, che è stata descritta precedentemente, e dalla quale l’impiegato può<br />
109
Progettazione delle applicazioni Capitolo 6<br />
selezionare una delle transazioni da approvare. Le operazioni che seguono sono quelle descritte in<br />
figura 67, e sono invisibili all’utente, il quale è portato alla pagina “Transaction Approved” se esse<br />
sono andate a buon fine, o ad una pagina <strong>di</strong> errore in caso contrario.<br />
Si possono notare le due invocazioni dei Web Services dell’applicazione relativa agli utenti, per<br />
notificare l’avvenuta approvazione all’acquirente e al ven<strong>di</strong>tore.<br />
Figura 70 - Schermata del tool WebRatio ® relativa all'area "Approve Transactions"<br />
Figura 71 - Pagina "Approve Transactions" dell’applicazione 4.MainCar<br />
110
Progettazione delle applicazioni Capitolo 6<br />
In figura 71 è riportata la pagina che viene mostrata all’impiegato, la quale mostra le transazioni in<br />
attesa <strong>di</strong> approvazione, dalla quale è possibile selezionare quella desiderata e procedere alla sua<br />
approvazione attraverso il link “Approve”.<br />
Per quanto riguarda l’applicazione relativa agli utenti, riportiamo due frammenti dell’ipertesto della<br />
site-view “User Site View”; il primo, riportato in figura 72, mostra la sequenza delle operazioni<br />
svolte quando un utente desidera mettere in ven<strong>di</strong>ta la propria auto. Dalla pagina “Sell your Car”,<br />
l’utente può scegliere l’auto da mettere in ven<strong>di</strong>ta, terminando così l’attività “Usage”; la pagina<br />
successiva permette <strong>di</strong> inserire il prezzo <strong>di</strong> ven<strong>di</strong>ta dell’auto e porterà ad avviare l’attività <strong>di</strong><br />
ven<strong>di</strong>ta “Sell”, durante la quale verranno inviati i dati dell’auto all’applicazione del concessionario,<br />
me<strong>di</strong>ante l’invocazione del Web Service “Sell Car”, e apportate le mo<strong>di</strong>fiche opportune sulla base <strong>di</strong><br />
dati locale.<br />
Figura 72 - Frammento <strong>di</strong> ipertesto della site-view "User Site View" dell’applicazione relativa agli utenti<br />
L’utente sarà portato in una pagina <strong>di</strong> refresh per controllare se l’auto è stata venduta e la<br />
transazione approvata dal concessionario; in caso affermativo, sarà terminata l’attività <strong>di</strong> ven<strong>di</strong>ta,<br />
comportando così la terminazione del “Case” relativo a quella determinata auto.<br />
La figura 73 mostra il secondo frammento <strong>di</strong> ipertesto, nel quale possiamo notare le fasi<br />
dell’acquisto <strong>di</strong> un’auto da parte <strong>di</strong> un utente. Attraverso la pagina “Buy a Car” e il link “Check for<br />
Available Cars”, verrà invocato il servizio Web “Saleable Car” pubblicato dall’applicazione del<br />
concessionario, attraverso il quale è possibile recuperare le informazioni relative alle auto in<br />
ven<strong>di</strong>ta. Queste informazioni sono memorizzate in un database virtuale, e solo dopo che l’utente<br />
avrà scelto l’auto desiderata e dopo che sarà stata avviata l’attività “Purchase”, saranno<br />
111
Progettazione delle applicazioni Capitolo 6<br />
memorizzate nel database reale, ma solo per quanto riguarda l’auto selezionata; l’attività<br />
“Purchase” segna anche l’inizio del “Case” relativo a tale auto. I dati così memorizzati saranno<br />
connessi all’utente corrente attraverso una “Connect Unit”, ed inviati all’applicazione del<br />
concessionario attraverso l’invocazione del Web Service “Bought Car”, per informarlo della scelta<br />
dell’utente; il concessionario provvederà in seguito ad approvare la transazione acquisto-ven<strong>di</strong>ta.<br />
La pagina “Check Concessionarie Approvals” consente quin<strong>di</strong> all’utente <strong>di</strong> verificare l’effettiva<br />
approvazione della transazione acquisto-ven<strong>di</strong>ta da parte del concessionario, e <strong>di</strong> proseguire con la<br />
terminazione dell’attività <strong>di</strong> acquisto. La pagina successiva permette all’utente <strong>di</strong> iniziare l’attività <strong>di</strong><br />
“Usage” dell’auto e <strong>di</strong> assegnare la futura attività <strong>di</strong> ven<strong>di</strong>ta.<br />
User Site View (MainUser)<br />
Buy a Car<br />
Params<br />
Available Cars<br />
Check for Available Cars<br />
Search for<br />
Available Cars<br />
OK<br />
Adapter Unit<br />
OK<br />
XML In Unit<br />
OK<br />
Available Cars<br />
Selected Car<br />
L<br />
Params<br />
Params<br />
Car<br />
Car<br />
Assign Unit<br />
Buy Car<br />
Params<br />
Connect Unit<br />
Params<br />
Create Car<br />
Params<br />
Start Unit<br />
OK<br />
OK<br />
OK<br />
OK<br />
Usage<br />
User_2_Car<br />
Car<br />
Purchase<br />
[Start Case]<br />
Params<br />
Check Concessionaire Approvals<br />
Transaction Approved<br />
Car Summary<br />
End Unit<br />
Car Summary<br />
Start Unit<br />
Params<br />
Assign Unit<br />
OK<br />
OK<br />
Car<br />
[Owned = 1]<br />
L<br />
Purchase<br />
Car<br />
[Owned = 1]<br />
Usage<br />
Sell<br />
Figura 73 - Frammento <strong>di</strong> ipertesto della site-view "User Site View" dell’applicazione relativa agli utenti<br />
L’implementazione <strong>di</strong> questo frammento <strong>di</strong> ipertesto nel tool WebRatio ® è stata riportata in figura<br />
74, in cui viene mostrata l’area “Buy Car”, contenente le pagine descritte in precedenza, e la<br />
pagina “Car Bought”, nella quale viene portato l’utente se tutte le operazioni sono andate a buon<br />
fine.<br />
Un’ultima precisazione su questo ipertesto riguarda il fatto che le informazioni relative all’auto che<br />
l’utente ha intenzione <strong>di</strong> acquistare vengono inserite nella base <strong>di</strong> dati al momento della scelta<br />
dell’auto, e che vengono successivamente mo<strong>di</strong>ficate al momento dell’approvazione della<br />
112
Progettazione delle applicazioni Capitolo 6<br />
transazione acquisto-ven<strong>di</strong>ta da parte del concessionario, per rendere così <strong>di</strong>sponibile all’uso l’auto<br />
acquistata, attraverso la mo<strong>di</strong>fica del campo “Owned”.<br />
Figura 74 - Schermata del tool WebRatio ® relativa all'area "Buy Car"<br />
113
Related Work Capitolo 7<br />
7. Related Work<br />
114
Related Work Capitolo 7<br />
I sistemi che gestiscono flussi <strong>di</strong> processo sono ampiamente utilizzati dalle organizzazioni per<br />
automatizzare i loro processi <strong>di</strong> business. Tuttavia i sistemi <strong>di</strong> workflow attualmente <strong>di</strong>sponibili<br />
tendono ad assumere una struttura monolitica e non orientata al Web. Per questo motivo la ricerca<br />
si sta focalizzando sulla realizzazione <strong>di</strong> architetture decentralizzate per la gestione dei workflow.<br />
D’altro canto molti ricercatori hanno colto le potenzialità degli ipertesti come formalismo per la<br />
rappresentazione <strong>di</strong> computazione in generale, e <strong>di</strong> processi organizzativi in particolare.<br />
Il nostro lavoro non cerca <strong>di</strong> realizzare un’architettura per gestire la <strong>di</strong>stribuzione dei flussi <strong>di</strong><br />
processo, ma <strong>di</strong> sfruttare l’integrazione fra il design degli ipertesti e i processi <strong>di</strong> business per poter<br />
realizzare applicazioni web che permettano <strong>di</strong> <strong>di</strong>stribuire i flussi <strong>di</strong> processo su <strong>di</strong>versi server,<br />
evitando la realizzazione <strong>di</strong> un motore ad hoc per la loro gestione, come avviene per <strong>di</strong>versi tool<br />
presenti sul mercato.<br />
Molte piattaforme e linguaggi esistenti consentono l’integrazione fra il design delle applicazioni web<br />
e i processi <strong>di</strong> business; alcuni <strong>di</strong> essi verranno ora descritti, in<strong>di</strong>candone analogie e <strong>di</strong>fferenze con<br />
il nostro lavoro.<br />
PML (Process Modeling Language) [12] è una semplice formalizzazione per la descrizione <strong>di</strong><br />
processi, che consente <strong>di</strong> descrivere semplici concetti <strong>di</strong> workflow. La specifica PML può essere<br />
inoltre compilata in una semplice piattaforma Web. L’ipertesto orientato ai processi generato è<br />
concettualmente simile a quello proposto da WebML, la <strong>di</strong>fferenza sostanziale consiste nell’utilizzo<br />
<strong>di</strong> modelli <strong>di</strong> alto livello: noi basiamo il nostro approccio sul modello <strong>di</strong> applicazione Web <strong>di</strong> WebML,<br />
dotata <strong>di</strong> una notazione grafica; mentre PML è semplicemente un modello <strong>di</strong> processo semplificato,<br />
rappresentato da un’essenziale sintassi. Una seconda <strong>di</strong>fferenza consiste nel meccanismo usato per<br />
controllare lo stato del processo. Il nostro lavoro si basa sul controllo dei workflow attraverso la<br />
presenza <strong>di</strong> un insieme speciale <strong>di</strong> entità, che creano i meta-dati <strong>di</strong> workflow, in armonia con la<br />
filosofia <strong>di</strong> WebML, che basa il modello <strong>di</strong> ipertesto su un modello dei dati. Al contrario PML non si<br />
focalizza sulla modellazione dei dati coinvolti nel processo, e delega il controllo del workflow ad un<br />
processo ad hoc detto "lightweight process runtime". Infine PML non permette la personalizzazione<br />
dell’interfaccia Web <strong>di</strong> una data attività, in quanto per ogni attività viene generata solamente una<br />
pagina, a <strong>di</strong>spetto della sua complessità. Al contrario il nostro lavoro è basato su WebML, che ha un<br />
importante potere espressivo sia per i modelli <strong>di</strong> ipertesto <strong>di</strong> alto livello che per quelli dettagliati.<br />
OO-H [13] è un approccio parzialmente object-oriented per modellare applicazioni Web integrate<br />
con i processi <strong>di</strong> business. I passi della metodologia, chiaramente separati, sono definiti per il<br />
115
Related Work Capitolo 7<br />
design dei modelli concettuali <strong>di</strong> navigazione, <strong>di</strong> presentazione e <strong>di</strong> processo. Per la modellazione<br />
dei processi, viene offerto un insieme <strong>di</strong> regole che trasformano la definizione del processo <strong>di</strong> base<br />
in un modello <strong>di</strong> navigazione per l’utente. Per questo motivo, la struttura <strong>di</strong> navigazione è<br />
determinata da un modello <strong>di</strong> workflow. La navigazione con i link dell’utente corrisponde ad un<br />
flusso <strong>di</strong> processo.<br />
Analogamente in UWE [14], il design del processo è definito da modelli separati. Come in OO-H, il<br />
modello <strong>di</strong> navigazione è esteso con primitive <strong>di</strong> processo che trasferiscono l’utente dentro e fuori i<br />
confini del flusso <strong>di</strong> processo. In entrambi i meto<strong>di</strong>, il data model è implementato con l’utilizzo dei<br />
<strong>di</strong>agrammi delle classi forniti da UML ed è integrato con gli elementi del processo. Non vi sono i<br />
meta-dati <strong>di</strong> processo: i tasks sono <strong>di</strong>rettamente modellati come meto<strong>di</strong> <strong>di</strong> classe e le attività del<br />
processo sono eseguite invocando questi meto<strong>di</strong>. Di conseguenza la gestione e il monitoraggio del<br />
processo è abbastanza complessa. Nel nostro lavoro il modello dei dati è basato sullo schema<br />
Entità-Relazione ed è esteso con i meta-dati <strong>di</strong> workflow, in modo tale da offrire esplicitamente<br />
informazioni circa la struttura e il flusso <strong>di</strong> processo.<br />
In OOHDM [15], i modelli <strong>di</strong> contenuto e <strong>di</strong> navigazione sono estesi con activity entities e activity<br />
nodes rispettivamente, rappresentate da primitive UML. Inoltre, l’esecuzione del processo avviene<br />
all’interno <strong>di</strong> un contesto navigazionale che specifica le regole <strong>di</strong> accesso per i processi<br />
corrispondenti.<br />
In WSDM [16], la progettazione del processo è guidata dai requisiti dell’utente ed è basata sulla<br />
notazione ConcurTaskTrees. Il modello <strong>di</strong> processo è specificato nel design concettuale. In<br />
particolare, durante la prima fase che è il Task Modelling, viene definita una gerarchia delle<br />
operazioni, vengono espresse le con<strong>di</strong>zioni temporali fra i task da operatori e le informazioni e/o<br />
funzionalità definite da ciascun task vengono modellate da porzioni <strong>di</strong> oggetti. Durante la seconda<br />
fase della progettazione concettuale, il Navigational Design, la struttura della navigazione utente è<br />
generata per mezzo <strong>di</strong> componenti e link per realizzare i task modellati. L’approccio proposto è<br />
simile al nostro, per il fatto che la struttura viene generata al <strong>di</strong> fuori della descrizione concettuale<br />
dei processi, ma gli autori usano una notazione per la descrizione del processo non standard.<br />
Anche Araneus [17] permette la generazione <strong>di</strong> applicazioni web partendo dal design dell’ipertesto<br />
ad alto livello, ed è stato esteso con un modello concettuale per la progettazione <strong>di</strong> workflow, ma<br />
<strong>di</strong>fferentemente da quanto ci prefiggiamo noi, quest’ultimo integra un Workflow Management<br />
System per la gestione dei flussi <strong>di</strong> processo, non consentendo la loro <strong>di</strong>stribuzione; il nostro lavoro<br />
invece si basa sull’integrazione dei workflow all’interno della progettazione dell’ipertesto per<br />
116
Related Work Capitolo 7<br />
permetterci <strong>di</strong> <strong>di</strong>stribuirne il flusso <strong>di</strong> processo, senza la necessità <strong>di</strong> realizzare un Workflow<br />
Management System ad hoc, ma utilizzando tecnologie già esistenti e affermate (Web Service).<br />
Un approccio parallelo al nostro è quello introdotto da BPEL4WS e da altri linguaggi <strong>di</strong><br />
orchestrazione <strong>di</strong> Web Service, che, come visto nel capitolo 3, forniscono linguaggi per la specifica<br />
formale <strong>di</strong> processi <strong>di</strong> business e protocolli <strong>di</strong> interazione, per mezzo dell’estensione del modello <strong>di</strong><br />
interazione dei Web Service, permettendo <strong>di</strong> supportare le transazioni <strong>di</strong> business. Ad esempio, il<br />
linguaggio fornito da BPEL4WS permette <strong>di</strong> definire un nuovo Web Service attraverso la<br />
composizione <strong>di</strong> un insieme <strong>di</strong> Web Service esistenti seguendo il flusso <strong>di</strong> operazioni dettato da un<br />
workflow. Il nostro scopo, come già accennato in precedenza, è invece quello <strong>di</strong> utilizzare la<br />
tecnologia dei Web Service come strumento per implementare flussi <strong>di</strong> processo, permettendo <strong>di</strong><br />
<strong>di</strong>stribuirne la loro computazione.<br />
117
Conclusioni Capitolo 8<br />
8. Conclusioni<br />
118
Conclusioni Capitolo 8<br />
Al termine del nostro lavoro <strong>di</strong> tesi, volto allo stu<strong>di</strong>o dei <strong>di</strong>versi scenari <strong>di</strong> <strong>di</strong>stribuzione applicabili a<br />
processi aziendali, abbiamo potuto riscontrare come tutti gli obiettivi da noi prefissati siano stati<br />
raggiunti. Lo sviluppo <strong>di</strong> questo lavoro ci ha consentito <strong>di</strong> acquisire nozioni teoriche e notazioni<br />
circa il mondo dei workflow, conoscenze sugli standard, il meta-linguaggio XML e le trasformazioni<br />
XSL proprie del mondo dei Web Service, e capacità <strong>di</strong> modellazione ad alto livello <strong>di</strong> applicazioni<br />
Web data-intensive.<br />
La fase iniziale del nostro lavoro, ci ha permesso <strong>di</strong> esprimere ogni schema e ogni politica <strong>di</strong><br />
<strong>di</strong>stribuzione in maniera concettuale, attraverso uno stu<strong>di</strong>o teorico dei <strong>di</strong>versi scenari riscontrabili<br />
nell’ambito dei workflow <strong>di</strong>stribuiti, punto <strong>di</strong> partenza per una successiva modellazione delle<br />
relative applicazioni, non legato ad una particolare piattaforma implementativa.<br />
La seconda fase si è concentrata sull’implementazione degli scenari in<strong>di</strong>viduati, e la realizzazione<br />
dei relativi prototipi me<strong>di</strong>ante il linguaggio <strong>di</strong> modellazione WebML, le sue estensioni per la gestione<br />
dei workflow e dei Web Service, e il CASE tool WebRatio ® , che ci ha portato a comprendere come<br />
gli ipertesti che implementano processi <strong>di</strong>stribuiti vengono progettati con la stessa metodologia <strong>di</strong><br />
quelli centralizzati, tenendo conto <strong>di</strong> particolari accorgimenti:<br />
In<strong>di</strong>viduare lo scenario <strong>di</strong> <strong>di</strong>stribuzione adatto alla tipologia <strong>di</strong> applicazione da<br />
implementare.<br />
<br />
<br />
Organizzare l’applicazione in <strong>di</strong>versi progetti da sud<strong>di</strong>videre sui vari peer.<br />
Progettare le basi <strong>di</strong> dati tenendo conto della presenza o meno dei meta-dati <strong>di</strong> workflow<br />
sui vari peer.<br />
<br />
Scegliere il modello appropriato per lo scambio dei messaggi: Push/Pull; e pubblicare i Web<br />
Service necessari.<br />
WebML, e le relative estensioni per i Workflow e i Web Service, si presta bene alla modellazione<br />
della <strong>di</strong>stribuzione dei processi, anche se, oltre a certi pregi, presenta anche dei <strong>di</strong>fetti.<br />
La limitazione più pesante che abbiamo riscontrato durante l’implementazione dei <strong>di</strong>versi scenari <strong>di</strong><br />
<strong>di</strong>stribuzione, è dovuta al CASE tool WebRatio ® , e più in particolare riguarda le caratteristiche delle<br />
site-view atte alla pubblicazione <strong>di</strong> Web Service, in cui viene impostato il layout <strong>di</strong> pagina sul valore<br />
“SOAP Envelope” e lo stylesheet su “Web services”; infatti, queste site-view presentano dei<br />
problemi per quanto riguarda il corretto funzionamento <strong>di</strong> determinate unit necessarie, ad esempio,<br />
ad implementare uno scenario automatico per il controllo del flusso <strong>di</strong> processo, come le unit Start,<br />
End, Assign Activity, dell’estensione per i Workflow <strong>di</strong> WebML.<br />
119
Conclusioni Capitolo 8<br />
Queste unit richiedono, ad esempio, determinati parametri in ingresso non <strong>di</strong>sponibili in queste<br />
determinate site-view, oppure richiedono <strong>di</strong> essere attivate da un link cliccabile dall’utente, cosa<br />
non possibile in site-view <strong>di</strong> questo tipo, dato che non vengono generate pagine jsp, ma documenti<br />
XML.<br />
È facile intuire come queste limitazioni influenzano l’ipertesto risultante, che può <strong>di</strong>fferire <strong>di</strong> molto<br />
da quello previsto; questa però è una conseguenza minima in confronto al fatto che viene stravolto<br />
anche il percorso navigazionale dell’utente che andrà ad utilizzare l’applicazione, il quale dovrà<br />
partecipare attivamente a determinate fasi del processo che erano state pensate come<br />
automatiche.<br />
In questo ambito, si intravede un possibile sviluppo futuro della piattaforma, consistente nel fatto<br />
<strong>di</strong> estendere il linguaggio per poter gestire la notifica all’utente <strong>di</strong> mo<strong>di</strong>fiche alla base <strong>di</strong> dati, che<br />
permetterebbe un migliore approccio al problema, che in questo lavoro si è cercato <strong>di</strong> risolvere<br />
attraverso pagine <strong>di</strong> “refresh” per controllare lo stato <strong>di</strong> determinati attributi nella base <strong>di</strong> dati.<br />
Inoltre, per poter gestire al meglio la <strong>di</strong>stribuzione dei processi, si intravede la possibilità <strong>di</strong><br />
aggiungere ai meta-dati <strong>di</strong> workflow introdotti dalla relativa estensione del linguaggio WebML,<br />
un’ulteriore entità per poter assegnare un’istanza <strong>di</strong> attività non solo ad un utente o ad un gruppo<br />
<strong>di</strong> utenti, ma anche ad un determinato peer della rete in cui si sviluppa lo scenario <strong>di</strong>stribuito.<br />
Questa entità “Peer” andrebbe a relazionarsi con l’entità già esistente “Activity Instance”, la quale<br />
contiene le istanze <strong>di</strong> attività. Questa variante però introdurrebbe delle mo<strong>di</strong>fiche alla unit Assign,<br />
nonché l’introduzione <strong>di</strong> ulteriori meccanismi per il rilevamento dei peer connessi alla rete e per la<br />
gestione delle nuove tipologie <strong>di</strong> eccezioni che scaturirebbero.<br />
A proposito <strong>di</strong> eccezioni, gli scenari da noi implementati in questo lavoro <strong>di</strong> tesi, risentono in<br />
maniera rilevante <strong>di</strong> un problema risolvibile attraverso una nuova gestione delle eccezioni, e più<br />
precisamente la possibilità dell’utente <strong>di</strong> utilizzare il pulsante “Back” del browser durante la<br />
navigazione nell’applicazione Web, e in maniera più rilevante quando questo viene fatto in punti<br />
della navigazione che riguardano l’interazione fra <strong>di</strong>versi peer. Senza una nuova gestione delle<br />
eccezioni, sarebbe possibile, ad esempio, inviare più volte dei dati ad un determinato peer.<br />
Se da un lato sono stati in<strong>di</strong>viduati dei <strong>di</strong>fetti, WebML e le sue estensioni hanno anche molti pregi.<br />
Nonostante il fatto che le unit messe a <strong>di</strong>sposizione dal linguaggio e dalla sua estensione per i<br />
workflow siano state ideate per modellare flussi <strong>di</strong> processo residenti su <strong>di</strong> un unico peer, esse si<br />
prestano bene anche alla modellazione <strong>di</strong> scenari <strong>di</strong>stribuiti. Inoltre permettono una facile e veloce<br />
120
Conclusioni Capitolo 8<br />
pubblicazione-invocazione dei Web Service necessari allo scambio dei messaggi fra i vari peer<br />
coinvolti nel processo, dovuta anche a degli accorgimenti del tool WebRatio ® , come ad esempio, il<br />
wizard per la creazione <strong>di</strong> trasformazioni XSL integrato in esso.<br />
Il nostro lavoro, con lo stu<strong>di</strong>o dei <strong>di</strong>versi scenari <strong>di</strong> <strong>di</strong>stribuzione in<strong>di</strong>viduabili nel mondo dei<br />
workflow, ha posto le basi per un futura espansione <strong>di</strong> un tool già esistente, che permette <strong>di</strong><br />
effettuare una verifica formale e opera trasformazioni semi-automatiche <strong>di</strong> <strong>di</strong>agrammi BPMN per la<br />
generazione <strong>di</strong> modelli <strong>di</strong> ipertesto basati sullo standard WebML, per consentire il supporto alla<br />
<strong>di</strong>stribuzione dei flussi <strong>di</strong> processo.<br />
Il lavoro <strong>di</strong> progettazione svolto con WebRatio ® consente <strong>di</strong> affermare che la piattaforma attuale è<br />
in grado <strong>di</strong> offrire un ambiente capace <strong>di</strong> supportare la modellazione <strong>di</strong> ogni scenario <strong>di</strong><br />
<strong>di</strong>stribuzione relativo a processi aziendali me<strong>di</strong>ante un’architettura basata su Web Services, a<br />
fronte della risoluzione delle problematiche in<strong>di</strong>viduate.<br />
121
Bibliografia<br />
[1] Introduction to Workflow. Charles Plesums, Computer Sciences Corporation, Financial<br />
Services Group.<br />
[2] Towards Distributed Workflow Process Management. Johann Eder, Euthimios Panagos<br />
AT&T Labs – Research.<br />
[3] The Workflow Reference Model. http://www.wfmc.org/standards/docs/tc003v11.pdf<br />
[4] Introduction to BPMN. Stephen A.White IBM Corporation.<br />
[5] Designing Data-Intensive Web Applications. S. Ceri, P. Fraternali, A. Bongio, M. Brambilla,<br />
S. Comai, M. Matera. Morgan-Kaufmann, 2002.<br />
[6] Design and Maintenance of Data-Intensive Web Sites. Atzeni, Mecca, Merialdo.<br />
[7] Web Modeling Language (WebML): a modeling language for designing Web sites. S.<br />
Ceri, P. Fraternali, A. Bongio, 2000.<br />
[8] Buil<strong>di</strong>ng Web Applications with UML. J. Conallen. Ad<strong>di</strong>son-Wesley, 2002.<br />
[9] Web services orchestration. A review of emerging technologies, tools, and standards,<br />
Chris Peltz, HP Co., 2003.<br />
http://devresource.hp.com/drc/technical_white_papers/WSOrch/WSOrchestration.pdf<br />
[10] WebRatio extensions for Workflows – User Manual. WebSI Project IST-2001-35458.<br />
<strong>Politecnico</strong> Di <strong>Milano</strong>.<br />
[11] WebRatio extensions for Web Services - User Manual. WebSI Project IST-2001-35458.<br />
<strong>Politecnico</strong> Di <strong>Milano</strong>.<br />
[12] Specifying process-oriented hyper<strong>text</strong> for organizational computing. Journal of<br />
Network and Computer Applications, Vol. 24, J. Noll, W. Scacchi, 2001.<br />
[13] Advanced Conceptual Modeling of Web Applications: Embed<strong>di</strong>ng Operation Interfaces<br />
in Navigation Design. C. Cachero, J. Gòmez, 2002.<br />
122
[14] The Expressive Power of UML-based Engineering. N. Koch, A. Kraus, 2002.<br />
[15] Engineering Business Processes in Web Applications: Modeling and Navigation Issues.<br />
L. Rossi, H. Schmid, F. Lyardet, 2003.<br />
[16] Modeling Complex Processes for Web Applications using WSDM. O. Troyer, S. Casteleyn,<br />
2003.<br />
[17] Design and development of data-intensive Websites: the Araneus approach. P.<br />
Merialdo, P. Atzeni, G. Mecca, 2003.<br />
[18] “Exten<strong>di</strong>ng hyper<strong>text</strong> conceptual models with process-oriented primitives”. M.<br />
Brambilla. <strong>Politecnico</strong> <strong>di</strong> <strong>Milano</strong>.<br />
[19] “Model-driven Specification of Web Services Composition and Integration with Dataintensive<br />
Web Applications”. M. Brambilla, S. Ceri, S. Comai, P. Fraternali, I. Manolescu.<br />
<strong>Politecnico</strong> <strong>di</strong> <strong>Milano</strong>.<br />
[20] “Model-driven development of Web Services and hyper<strong>text</strong> applications”. M. Brambilla,<br />
S. Ceri, S. Comai, P. Fraternali. <strong>Politecnico</strong> <strong>di</strong> <strong>Milano</strong>.<br />
[21] “Process Modeling in Web Applications” M. Brambilla, S. Ceri, P. Fraternali. I. Manolescu.<br />
<strong>Politecnico</strong> <strong>di</strong> <strong>Milano</strong>.<br />
[22] “Methodology For the Design of WebSI Applications”. WebSI <strong>Politecnico</strong> <strong>di</strong> <strong>Milano</strong>.<br />
[23] “XSL Transformations (XSLT) Version 1.0” W3C.<br />
http://www.w3.org/TR/1999/REC-xslt-19991116<br />
[24] WebML Project Website. http://www.webml.org<br />
[25] WebRatio ® Website. http://www.webratio.com<br />
[26] UML Website: http://www.uml.org<br />
[27] Workflow Management Coalition Website. http://www.wfmc.org<br />
123