4 pagine in totale: <<Indietro 1 2 3 [4]
Il runtime e l'applicazione host
Anche per quanto riguarda l'utilizzo dei workflow sequenziali, non possiamo non parlare di workflow runtime e di applicazione host, due concetti fondamentali per la corretta esecuzione di qualsiasi tipo di workflow in Windows Workflow Foundation.
L'applicazione host come abbiamo detto, è quel processo che ospita il runtime di WF e permette quindi l'esecuzione dei nostri workflow sequenziali.
All'interno di tali applicazioni infatti, attraverso le classi WorkflowRuntime e WorkflowInstance, siamo in grado di creare il runtime e di far partire una nuova istanza del nostro workflow.
namespace HelloSequentialWorkflow
{
class Program
{
static void Main(string[] args)
{
using(WorkflowRuntime workflowRuntime = new WorkflowRuntime())
{
AutoResetEvent waitHandle = new AutoResetEvent(false);
workflowRuntime.WorkflowCompleted +=
delegate(object sender, WorkflowCompletedEventArgs e)
{waitHandle.Set();};
workflowRuntime.WorkflowTerminated +=
delegate(object sender, WorkflowTerminatedEventArgs e)
{
Console.WriteLine(e.Exception.Message);
waitHandle.Set();
};
ExternalDataExchangeService dataExchandeService =
new ExternalDataExchangeService();
workflowRuntime.AddService(dataExchandeService);
ApprovalService approvalService = new ApprovalService();
dataExchandeService.AddService(approvalService);
WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(HelloSequentialWorkflow.Workflow1));
instance.Start();
Item i = new Item();
i.Title = "Pocket C#";
i.Quantity = 400;
Console.WriteLine("Item\n{0}\n\n", i);
Console.WriteLine("Do you want to approve it ? Y/N");
string answer = Console.ReadLine();
if (answer == "Y")
approvalService.Approve(instance.InstanceId, i);
else if(answer == "N")
approvalService.Reject(instance.InstanceId, i);
Console.Read();
}
}
}
}
L'unica cosa cui dobbiamo fare attenzione alla creazione di una nuova istanza del nostro workflow è quella di dichiarare, subito dopo la creazione del runtime, le istanze delle classi di comunicazione, in modo tale da poter poi fornire le informazioni al workflow richiamando i metodi Approve e Reject che scatenano i relativi eventi ItemApproved e ItemRejected, che a loro volta permettono al workflow di scegliere la strada da seguire ed infine di terminare.
Se eseguiamo la console application e scegliamo o di approvare o di rifiutare l'elemento, questo sarà il risultato:

Se invece, decidiamo di non far niente per 10 secondi (tempo per cui l'approvazione scade) il workflow terminerà lasciando l'approvazione scaduta.

Conclusioni
In questo articolo abbiamo dato la definizione di base per un workflow sequenziale e abbiamo sviluppato un esempio per apprenderne le principali proprietà. Abbiamo visto che, rispetto al modello dei workflow a stati, quello dei workflow sequenziali risulta più semplice all'uso e adatto a tutte quelle attività di business dette "Human activities", proprio per la loro natura strettamente sequenziale.
Intrecciando le varie attività messe a disposizione del framework di Windows Workflow Foundation e quelle custom da noi sviluppate, possiamo creare flussi di esecuzione sequenziali veramente complessi e facilmente mantenibili.
4 pagine in totale: <<Indietro 1 2 3 [4]
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!
