Processi Distribuiti

annuncio pubblicitario
Processi Distribuiti
Di
Brusadelli Alessio 666663
Brivio Marco 666662
Indice
Indice .................................................................................................................................................. 1
Introduzione ..................................................................................................................................... 2
Processi Distribuiti.......................................................................................................................... 3
Il modello dei dati ............................................................................................................................ 4
Modellazione di interazioni basate su messaggi ....................................................................... 6
“Click4ALoan” .................................................................................................................................... 7
Distribuzione dei workflow in “Click4ALoan” ............................................................................ 9
Scenario 1: Distribuzione semplice .......................................................................................... 9
Scenario 2: Distribuzione di un singolo servizio ................................................................. 10
Scenario 3: Distribuzione dei sotto-processi ..................................................................... 11
Distribuzione con controllo centralizzato........................................................................ 14
Distribuzione con controllo distribuito ............................................................................ 16
Progettazione dell’ipertesto ........................................................................................................ 20
1
Introduzione
Tutti i modelli web (e le relative rappresentazioni tramite site view) che abbiamo
finora studiato, si basavano implicitamente sull’assunzione che i vari attori del sistema
interagissero con un unico database centrale, unico repository dei meta-dati del
processo, il quale codificava in modo indipendente dall’applicazione le interazioni con il
sistema e i relativi flussi di navigazione.
Ora verrà rimossa tale assunzione e si discuterà di processi distribuiti, processi le cui
attività possono essere eseguite su server (peer) differenti, i quali perciò non
condividono alcuno spazio di memoria (repository di meta-dati).
Introduciamo ora diversi termini che saranno ricorrenti in questo contesto e con i
quali sarà importante familiarizzare:
1. Processo: rappresenta l’insieme delle azioni che intendiamo svolgere per
raggiungere un dato obiettivo. Una istanza di processo, nota come case, è una
singola attivazione del processo. Un processo può avere diversi stati: attivo,
completo, sospeso, terminato, archiviato.
2. Attività: è un passo elementare all’interno di un processo. Un’istanza di attività
è una singola invocazione di una attività, in un dato case. Un’ attività può avere
diversi stati: attiva, inattiva, completa, sospesa, terminata, archiviata.
2
Processi Distribuiti
La Distribuzione dei Processi è quel processo di design dell’applicazione mediante il
quale vengono assegnate le diverse attività, che compongono l’intero processo da
modellizzare, a vari server che possono eseguirle.
Le Attività sono unità atomiche di distribuzione, cioè dato un compito che può essere
suddiviso in varie sotto attività, esso deve essere scisso in attività più piccole da far
eseguire ciascuna a server differenti. La composizione di tutte queste sotto attività
(e del loro flusso di esecuzione), le quali lavorano su differenti host di diverse
organizzazioni, rappresenta l’intero Processo che si è voluto modellizzare.
Da un punto di vista tecnologico, il fatto di coinvolgere diverse organizzazioni, pone il
problema della diversità dei dati tra di esse, e il problema di poter effettuare queries
e update trasparenti sui vari database di organizzazioni diverse.
Per questo motivo, ogni organizzazione fornisce dei servizi web (meglio noti come Web
Services) mediante i quali l’utente remoto può accedere ai dati locali di una
organizzazione, e poterli modificare secondo una logica definita, per evitare errori
generici nel flusso delle operazioni da eseguire e per fornire sicurezza all’accesso ai
dati. Inoltre, essendo i nodi coinvolti nel processo interagenti tra di essi via http,
nasce la necessità di poter comunicare tramite questo protocollo, e di pubblicare
ipertesti e Web Services accessibili via http, nonché di utilizzare i database locali o
trasparentemente distribuiti per poter memorizzare i dati dell’applicazione e del
processo in atto.
Sotto queste ipotesi, per poter governare correttamente i processi distribuiti,
bisogna estendere l’approccio visto finora con:
1. Un modello che ci permetta di esprimere i requisiti di distribuzione, e per far
ciò utilizzeremo la notazione BPMN, che ci permetterà di assegnare
esplicitamente varie attività a diversi nodi coinvolti nel processo.
2. Integrare la distribuzione nel modello ipertestuale. Per far ciò verranno
introdotte alcune nuove primitive (unit) che ci consentiranno di pubblicare e
invocare servizi remoti, nonché di gestire il relativo flusso di lavoro tra i vari
peer.
Per poter descrivere meglio questo approccio utilizzeremo un caso di studio, che ci
fornisce un esempio semplice ma espressivo dell’utilizzo di queste tecnologie e ci
permetterà di comprendere con più chiarezza i vari contenuti.
3
Il modello dei dati
Per poter gestire processi distribuiti tramite workflow, bisogna utilizzare un
particolare modello dei dati che ci permetta di poter utilizzare al meglio le nozioni di
Attività e Processo e di poter mappare al meglio le relative relazioni. La figura 1 ci
mostra il modello E-R che viene utilizzato per utilizzare efficientemente un workflow.
[Figura 1: Meta-modello dei dati per il Workflow]
Come possiamo notare il database è diviso in 3 aree principali: l’area evidenziata in blu
rappresenta il modello dei dati che permette di rappresentare l’accesso degli utenti a
site view protette e la loro appartenenza a gruppi. L’area evidenziata in verde
corrisponde alla porzione del database che viene utilizzata per modellizzare i dati
della nostra applicazione, mentre l’area evidenziata in rosso è il modello dei dati che si
utilizza durante un workflow. Esso è composto da varie entità che ci garantiscono un
corretto funzionamento di tutto il processo:
PROCESS: Contiene la descrizione del processo utilizzato dall’applicazione, ed è
caratterizzato da: Nome, Descrizione, ID.
4
CASE: Memorizza le istanze di processi attivati durante l‘esecuzione dell’applicazione,
ed è caratterizzato da: Nome, Started, Ended.
CASE STATUS: Memorizza lo stato delle istanze del processo attivato durante
l‘esecuzione dell’applicazione, ed è caratterizzato da: Nome che può essere:Active,
Complete, Suspended, Terminated, Archived.
ACTIVITY: Memorizza la descrizione dei tipi di attività che compongono un processo,
ed è caratterizzato da: Nome, Descrizione, ID.
ACTIVITY ISTANCE: Memorizza le istanze delle attività attivate durante
l‘esecuzione dell’applicazione, ed è caratterizzato da: Started, Ended.
ACTIVITY ISTANCE STATUS: Memorizza lo stato delle istanze delle attività
attivate durante l‘esecuzione dell’applicazione, ed è caratterizzato da: Nome che può
essere: Active, Inactive, Complete, Suspended, Terminated, Archived.
Come possiamo notare i dati relativi alla nostra applicazione sono relazionati con la
parte di database relativa al workflow tramite le istanze dell’attività con cardinalità
0:N. Infatti una applicazione può avere da 0 a N istanze di attività, mentre le istanze
di attività sono relazionate con 0:N applicazioni.
5
Modellazione di interazioni basate su messaggi
Anche a livello di ipertesto si è sentita la necessità di poter modellare le interazioni
tra i vari server permettendo una comunicazione semplice tra di essi, tramite la
creazione e l’utilizzo di messaggi in uscita, la ricezione e il relativo processare dei
messaggi in ingresso. A questo scopo WebML ha introdotto varie units che
permettono di modellare i principali scenari di interazione tra Web Services esistenti.
I concetti base sono stati incapsulati in operation units dedicate, chiamate Web
Service units, che rappresentano i principali tipi di messaggi scambiati nelle
comunicazioni intra-server.
Queste units, come mostrato in figura 2, corrispondono alle primitive offerte da
WSDL: request-respons, solicit-response, one-way e notification.
[Figura 2: WebML Web Service units]
Si adotta una convenzione grafica per poter spiegare le varie tipologie di interazione:
le interazioni che coinvolgono due messaggi (request-respons e solicit-response) sono
rappresentati con una freccia curva, mentre frecce da sinistra a destra implicano
l’utilizzo di messaggi di input dalla prospettiva del servizio (es. messaggi inviati
dall’applicazione Web al service provider).
Inoltre, a seconda del protocollo di comunicazione utilizzato, le operazioni di requestrespons e solicit-response possono essere definite come operazioni sincrone o
asincrone. Nel caso asincrono il processo lato richiedente non è sospeso in attesa della
risposta e può proseguire nell’interazione con l’applicazione Web, e il messaggio sarà
recapitato in un secondo momento. Queste unit vengono rappresentate secondo la
notazione WebML divise in due metà, come mostrato in figura 2. Questa divisione
rappresenta il fatto che i due messaggi non sono direttamente correlati: il link
uscente dalla metà superiore rappresenta la sequenza di operazioni eseguite
dall’applicazione dopo che è stato ricevuto il messaggio asincrono.
Nel caso sincrono, invece, il processo richiedente si blocca in attesa di una risposta.
6
“Click4ALoan”
L’esempio che volevamo presentare è relativo ad un workflow per la gestione dei
prestiti bancari via web. Innanzitutto possiamo identificare tre diversi attori che
prendono parte al processo di richiesta/gestione del prestito: l’utente che richiede il
prestito, il manager che effettua una validazione preliminare e una valutazione finale,
e gli impiegati, che hanno il compito di verificare che l’utente abbia tutti i requisiti
necessari per poter ricevere il finanziamento desiderato (Job Check e Financial
Check). Il flusso di operazioni che si intende seguire è rappresentato il figura 3.
In azzurro sono rappresentatele operazioni effettuate dall’ utente (APPLICANT), in
arancio quelle svolte dal manager aziendale (MGR) e in rosa quelle svolte dagli
impiegati (EMPL).
Il processo rappresenta i passi necessari per poter effettuare la richiesta di un
prestito bancario. Il processo inizia con la richiesta di un utente. Tale richiesta arriva
al manager aziendale che ne fa una valutazione preliminare e decide se i dati immessi
sono non validi, interrompendo così tutto il processo, oppure se sono validi; in questo
caso il processo procederebbe e il manager passerebbe la richiesta agli impiegati.
A questo punto il processo si divide in due parti che possono essere svolte in
disgiunzione: infatti se l’utente avesse fatto richiesta di un prestito semplice, l’unica
verifica da effettuare da parte degli impiegati è quella finanziaria, mentre nel caso di
un mutuo, essi devono verificare sia lo stato finanziario dell’utente, sia effettuare una
verifica sull’impiego dell’utente. Una volta effettuate tali verifiche, la richiesta
ritorna nelle mani del manager, che effettua una verifica finale e decide se accettare
o meno la richiesta di prestito, proponendo al cliente, in caso positivo, una serie di
offerte/proposte tra le quali scegliere. A questo punto l’utente decide se accettare
una di queste proposte o rifiutare il prestito, terminando così tutto il processo.
7
[Figura 3: Workflow di “Click4ALoan”]
8
Distribuzione dei workflow in “Click4ALoan”
Scenario 1: Distribuzione semplice
Caso base di utilizzo dei workflow.
Non c’è distribuzione: tutti i passi del processo vengono svolti sullo stesso peer, e con
lo stesso database condiviso. In figura 4 possiamo notare il flusso di processo
dell’applicazione “Clkick4ALoan”, che viene svolto tutto sul peer B.
[Figura 4: Visione globale del processo di richiesta di un prestito]
9
Scenario 2: Distribuzione di un singolo servizio
Il flusso di processo viene svolto sostanzialmente sullo stesso peer, ma a differenza
della distribuzione semplice sono presenti contatti con peer diversi tramite l’utilizzo
di web services, invocati per ottenere dati da database remoti.
[Figura 5: Distribuzione semplice di un singolo servizio]
10
Scenario 3: Distribuzione dei sotto-processi
Con la distribuzione dei sotto processi, il processo che finora veniva svolto sullo
stesso peer, viene ora spezzato in sotto attività da dover delegare a diversi peer,
introducendo così diversi overhead di sincronizzazione delle attività, nonché di
coordinazione delle attività tra i diversi peer.
La distribuzione dei sotto processi aggiunge una nuova dimensione all'attività di
design: la scelta di dove perfezionare il controllo del processo distribuito.
Il progettista deve scegliere quale peer si prenderà cura di maneggiare l'evoluzione
delle attivià del processo a runtime. In principio, la gestione del processo può essere
delegata ad alcuni sottoinsiemi dei peer coinvolti. In particolare, identifichiamo due
scelte principali: controllo di processo centralizzato (con utilizzo di web services che
manovrano il processo intero), e controllo di processo distribuito (con utilizzo di web
services diversi che dividono la gestione del processo).
In figura 6 possiamo vedere come sono state suddivise le varie sotto-attività in
diversi peer: il peer principale (peer B) delega infatti al peer A diverse attività, tra le
quali Financial Check, Residence Check e Credit Check, ma si preoccupa di portare a
termine l’intero processo di richiesta del prestito.
11
[Figura 6: Visione globale della distribuzione dei processi]
12
Esistono diverse tipologie di distribuzione dei sotto-processi:
 Distribuzione con controllo centralizzato
 Distribuzione con controllo distribuito
o Controllo distribuito annidato
o Controllo distribuito generale
13
Distribuzione con controllo centralizzato
Nella prima tipologia il processo principale (centralizzato, peer B) ha il controllo totale
dell’ avanzamento dello stato delle operazioni e dei processi dopo che è stata svolta
ogni attività del workflow.
In figura 7 possiamo osservare un sequence diagram che rappresenta l’interazione tra
tre peer differenti in un contesto di processo distribuito con controllo centralizzato.
Le linee verticali denotano l’evoluzione temporale delle attività ed ogni numero
corrisponde all’esecuzione di una attività. Nell’esempio possiamo vedere come il
coordinatore (Peer B) esegue l’attività 1 e delega la 2 al peer A, che appena ha
terminato la sua esecuzione contatta il coordinatore con un messaggio di
completamento. Questa procedura avviene per tutte le attività svolte da ogni peer.
[Figura 7: Controllo di Processo centralizzato]
La figura 8 mostra invece l’intero flusso di processo nel caso di controllo
centralizzato: per ogni attività svolta nel peer A, vengono pubblicate in un web service
tutte le informazioni relative a tale attività e vengono utilizzate dal processo
principale per mantenere uno stato consistente di tutto il processo. Inoltre, durante
queste fasi, il processo centralizzato governa tutte le sotto-attività tramite l’utilizzo
di start/end activity e di assign unit, sempre con l’obiettivo di mantenere lo stato
globale di avanzamento del processo.
14
[Figura 8: Processo distribuito con controllo centralizzato]
15
Distribuzione con controllo distribuito
Nella distribuzione con controllo di processo distribuito, nessun sotto sistema
coinvolto è sempre consapevole dello stato completo del processo. In questo caso il
peer principale, è distinto come quello che inizia il processo. Tipicamente, il peer che
inizia il processo lo completa anche, ma tale simmetria non è obbligatoria per il
controllo del processo distribuito. Alcuni peer possono compiere uno o più attività,
senza il bisogno di notificare agli altri peer sullo stato di avanzamento delle
operazioni. Inoltre, ogni peer che esegue uno o più attività può delegare nuove attività
agli altri peer.
Questo comporta che i meta-dati di processo sono distribuiti sui vari peer, ed la
traccia di avanzamento delle attività (ad esempio, la ricerca dello status corrente di
un caso) può richiedere la consultazione di tutti i peer coinvolti.
Il Controllo del processo distribuito richiede la coordinazione dei vari peer, i quali
governano l'evoluzione delle sotto-attività.
La Coordinazione dei peer consiste nella comunicazione delle attività distribuite, così
da garantire che l’avanzamento del processo proceda secondo i vincoli di esecuzione
specificati nel modello di processo. La Coordinazione di peer può seguire dei modelli di
cui riconosciamo due varianti principali: coordinazione annidata e generalizzata.
Coordinazione annidata
La Coordinazione annidata consiste della possibilità per un peer di delegare un sottoprocesso "ben-parentesizzato"
ad un altro peer; un sotto-processo " benparentesizzato " è un processo in cui, nella rappresentazione BPMN, si mette in
mostra un solo punto di entrata e un solo punto di uscita.
Fondamentalmente, i sotto-processi che possono essere annidati sono quelli che
possono essere considerati come sequenza di attività indipendenti strutturate
internamente in una gerarchia di sotto-attività.
Nella figura 9 possiamo osservare tale comportamento: solo dopo l’esecuzione delle
attività 2, 3 e 4 il Peer B viene a conoscenza dello svolgimento di tutte le sotto
attività svolte sul peer A.
16
Main Peer
Peer A
Peer B
1
2
3
4
5
6
[Figura 9: Coordinazione annidata]
In figura 10 possiamo osservare un processo distribuito con coordinazione annidata,
nel quale possiamo notare i sotto-processi "ben-parentesizzati", caratterizzati da un
unico punto di ingresso/uscita tra i vari peer. In questa configurazione non è possibile,
da parte del peer B, tener traccia dello stato di tutte le sotto-attività svolte al peer
A, ma verrà a conoscenza dei risultati solo alla fine dell’esecuzione di tutte queste
sotto-attività.
17
[Figura 10: Processo distribuito con coordinazione annidata]
18
Inoltre, tener traccia dello stato di un processo in una coordinazione annidata è come
tener traccia dello stato in un processo gerarchico: ogni peer può mantenere le
informazioni sulle attività locali che lo coinvolgono, e può tenere traccia localmente di
tutte le informazioni del sotto-processo. Queste informazioni sono viste come un
black box, in quanto il peer conosce lo stato (inactive/active/completed) del sottoprocesso, ma ignora i dettagli di tale sotto-processo. Nel caso in cui si voglia accedere
a tali informazioni è necessaria effettuare una query “gerarchica”, che deve essere
passata tra i peer che formano la gerarchia.
Coordinazione generalizzata
Con la coordinazione generalizzata, qualsiasi sottoinsieme delle attività componenti il
processo possono essere delegate ad altri peer, senza tener conto di particolari
vincoli. In questo caso non è possibile identificare un singolo punto di accesso/uscita
dal processo delegato al peer remoto.
Con la coordinazione generalizzata sono richiesti diversi messaggi per poter ottenere
un corretto avanzamento in presenza di sotto-processi delegati ad altri peer. Per
questo motivo, per ogni freccia di flusso tra diversi peer, deve essere scambiato un
messaggio, e il numero di queste frecce può essere molto maggiore di due, in quanto
non c’è necessità di una buona parentesizzazione.
19
Progettazione dell’ipertesto
La progettazione dell’ipertesto è influenzata notevolmente dalla distribuzione del
processo, perché le applicazioni Web devono essere suddivise fra i vari peer coinvolti,
seguendo il modello di interazione progettato in precedenza.
Dato che i meta-dati di processo non possono essere globalmente disponibili in un
database centrale ed unico, devono essere scambiati vari messaggi per permettere
l’interazione ai vari peer, come abbiamo visto negli scenari precedenti.
In questo contesto, lo scambio di messaggi può essere modellizzato utilizzando le
primitive di Web Service fornite da WebML, le quali si integrano perfettamente a
modelli di ipertesto.
In seguito, riporteremo delle viste di ipertesti che modellano il processo di richiesta
di un prestito dell’applicazione “Click 4a Loan”. Come possiamo notare dalla seguente
figura seguente sul “peer A” avviene la richiesta di prestito, la relativa “Start
Activity” del processo e la compilazione dei dati da parte del richiedente. A questo
punto viene creata una nuova istanza di Applicazione e viene chiamato un Web Service
remoto a cui vengono passati tutti i dati dell’applicazione/attività corrente. Il servizio
richiamato viene svolto sul peer B, dove avviene la validazione preliminare da parte del
manager.
[Figura 11: Frammento di ipertesto per la richiesta di un prestito (peer A)
e per la validazione preliminare (peer B)]
20
Nella figura 12, invece, possiamo notare l’ipertesto che permette la validazione
preliminare da parte del manager, svolta al “peer B”. Essa abilita l’attività di Financial
Check svolta localmente, e comunica il risultato della validazione al peer A. Questo
passaggio è fondamentale nel processo in quanto le due sotto attività di Job e
Financial Check sono svolte su due peer differenti, e perciò al momento della ricezione
al peer A dello stato delle attività, esso effettuerà una update dello stato
dell’applicazione, assegnando ad essa le attività di Job Check. Questo procedimento di
divisione delle attività sui due peer permette di avere entrambe le attività in AND,
non permettendo perciò di proseguire se la seconda attività non è stata completata.
[Figura 12: Frammento di ipertesto per la validazione preliminare (peer B)]
Infine la figura 13 mostra l’ipertesto che ci permette di effettuare il Financial Check
(al peer B) e il Job Check (al peer A). Oltre all’esecuzione delle attività canoniche, il
peer B effettua una chiamata a Web Service per notificare al peer A il
completamento dell’attività. Il peer A, alla ricezione della richiesta, effettua le
valutazione necessarie a implementare il processo, e ritorna una notifica al peer B.
Inoltre la stessa valutazione è effettuata per l’attività di Job Check.
21
[Figura 13: Frammento di ipertesto per il Financial e il Job Check]
A conclusione di tutto questo discorso vogliamo notare come gli ipertesti che
implementano processi distribuiti sono progettati nella stessa maniera di quelli
centralizzati, e le uniche differenze riscontrabili sono:
 La suddivisione delle site view in locali e remote. La parte locale modella
l’interfaccia di ipertesto offerta dal peer per poter effettuare tutte le
interazioni con gli altri peer, la parte remota modella le azioni eseguite dai peer
remoti quali ricezione di notifiche di messaggi e ricezione dello stato di
avanzamento dei processi.
 La presenza di Web Service che modellano le comunicazioni dell’avanzamento
dei processi ai vari peer.
22
La modellazione di processi distribuiti con la notazione BPMN, con il modello di
iperteso esteso, con le unit per i Web Service e i Workflow, permette al progettista
di esprimere ogni schema e ogni politica di distribuzione in un modo concettuale,
accompagnato dalla possibilità di evoluzioni future e dalla generazione automatica del
codice.
23
Scarica