27.12.2014 Views

Thesis full text PDF - Politecnico di Milano

Thesis full text PDF - Politecnico di Milano

Thesis full text PDF - Politecnico di Milano

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!