Avvio del workflow e transizioni di stato
Ora è arrivato il momento di far partire il nostro workflow e scatenare le varie transizioni di stato.
Come per i workflow sequenziali anche per i workflow a stati va prima creata una nuova istanza della classe WorkflowRuntime, che rappresenta il runtime di Workflow Foundation, per qualsiasi tipo di applicazione host che abbiamo deciso di utilizzare (nel nostro caso una console application).
Poi vanno aggiunti i vari tipi di servizi di comunicazione tra host e workflow e, nel caso dei workflow a stati, va aggiunta l'interfaccia di comunicazione al servizio di data exchange.
using(WorkflowRuntime workflowRuntime = new WorkflowRuntime()) {
//settaggio proprietà del runtime
ExternalDataExchangeService dataExchange = new ExternalDataExchangeService();
workflowRuntime.AddService(dataExchange);
ShoppingCartService shoppingService = new ShoppingCartService();
dataExchange.AddService(shoppingService);
workflowRuntime.StartRuntime();
//creazione della nuova istanza del workflow
}Una volta che il runtime è stato creato e fatto partire, possiamo creare una nuova istanza del nostro workflow, avviarla e scatenare un primo evento. Gli eventi vengono scatenati dalla nostra classe di servizio, posta nel livello tra l'applicazione e il workflow e sarà il workflow stesso a rispondere a tale evento e modificare il suo stato corrente.
Type t = typeof(ShoppingCartWorkflow.Workflow);
WorkflowInstance instance = workflowRuntime.CreateWorkflow(t);
instance.Start();
ShoppingCartItem maionese = new ShoppingCartItem(Guid.NewGuid());
maionese.Name = "Maionese";
maionese.Price = 1.30;
maionese.Quantity = 1;
shoppingService.InsertItem(instance.InstanceId, maionese);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!
