4 pagine in totale: <<Indietro 1 [2] 3 4 Avanti >>
Un esempio pratico
Vediamo ora, com'è possibile utilizzare un workflow sequenziale per la creazione di un semplice flusso di approvazione. Per prima cosa, creiamo un nuovo progetto in Visual Studio .NET 2005 e scegliamo la tipologia "Sequential Workflow Console Application"; tale template crea un workflow sequenziale e una console application per testarne il funzionamento. La console application è detta "applicazione host" in quanto rappresenta il processo che si occupa di caricare il runtime di WF il quale provvederà poi a permettere l'esecuzione dei vari workflow sviluppati.

Come abbiamo già detto nell'articolo precedente, Workflow Foundation non ha applicato alcun limite riguardo al tipo di applicazione host da cui caricare il runtime. E' possibile infatti eseguire i nostri workflow sequenziali sia da applicazioni windows (come console application o windows form), da servizi windows, che da applicazioni web ASP.NET 2.0. In questo esempio si è deciso di utilizzare una console application per focalizzare l'attenzione sulla tipologia di workflow e non sull'applicazione host.
Il nostro flusso di approvazione vuole un elemento generico che verrà sottoposto ad approvazione. Questo elemento avrà la possibilità di essere approvato, rifiutato oppure se passano un certo numero di giorni, verrà cancellata in quanto scaduta. E' questo un esempio perfetto per l'utilizzo di un workflow sequenziale.
All'inizio e alla fine del flusso di operazioni, abbiamo inserito due attività di tipo CodeActivity, in modo da stampare a video i messaggi di partenza e termine del workflow.
L'attività che compie tutto il lavoro invece, è un'attività di tipo ListenActivity, che permette di dividere il flusso in diversi rami di esecuzione, ognuno dei quali è in ascolto della conclusione di un particolare tipo di evento. Il primo che viene scatenato tra gli eventi posti all'inizio di ogni ramo, permette al flusso dell'intero workflow di continuare per la strada segnata dal ramo stesso. Così facendo, tale attività dirige il flusso di operazioni da una parte all'altra in base allo scatenarsi di particolari eventi.
Ogni evento, viene rappresentato da un'attività di tipo EventDrivenActivity; risultano quindi attività buone al nostro scopo le attività HandleExternalEventActivity e DelayActivity (dirette derivate dall'attività EventDrivenActivity) che rispettivamente attendono lo scatenarsi di un evento esterno al workflow (lanciato dall'applicazione che funge da host) e il passare di un certo periodo di tempo.
Nel nostro caso, i rami di possibile esecuzione sono tre:
- Il primo viene percorso se l'elemento da approvare viene approvato;
- Il secondo viene percorso se l'elemento da approvare viene rifiutato;
- Il terzo viene percorso se, dopo il passare di un po' di tempo (settato per semplicità a 10 secondi), non è stata ancora effettuata l'approvazione sull'elemento, che risulta quindi scaduta.
Altre CodeActivity sono utilizzate all'interno dei vari rami per la semplice stampa a video di messaggi.
private void OnWorkflowStart(object sender, EventArgs e)
{
Console.WriteLine("[WORKFLOW] Approval workflow started !");
}
Così facendo, abbiamo creato un flusso di operazioni, seppur diviso in rami differenti, il cui percorso risulta però definito a priori.
Il workflow sequenziale appena descritto, risulta all'interno del designer di Visual Studio .NET 2005 come in figura.

E' importante notare che tale workflow sequenziale lo possiamo creare sia via codice, che con l'utilizzo di un file xoml.
4 pagine in totale: <<Indietro 1 [2] 3 4 Avanti >>
Attenzione: Questo articolo contiene un allegato
Contenuti dell'articolo
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.





Difficoltà
Stampa
Download


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!
