Un workflow a stati è una delle due possibili tipologie di workflow che possono essere sviluppate in applicazioni basate su Windows Workflow Foundation. Questa particolare tipologia rappresenta un flusso di operazioni basate sui concetti di stati, transizioni ed eventi.
Al contrario di un workflow sequenziale, che viene costruito in modo tale da far eseguire una serie predefinita di azioni una successiva all'altra (come in un approccio procedurale), un workflow a stati permette di modificare il flusso delle operazioni allo scatenarsi di particolari eventi, dando la possibilità di ritornare ai passi precedenti o saltare da un punto all'altro del flusso.
Questo tipo di workflow è composto di due o più stati. Ogni stato rappresenta una particolare situazione del flusso di operazioni che può essere attivata in qualsiasi momento dell'esecuzione, attraverso l'esecuzione di una transizione dallo stato precedente; tale passaggio viene detto "transizione di stato" e può essere eseguita solamente in risposta ad un particolare evento.
E' importante notare che una transizione non deve per forza spostare il flusso da uno stato all'altro, ma può riportare l'esecuzione anche sullo stesso stato, in modo da poter creare una situazione circolare all'interno del workflow.
In Windows Workflow Foundation, un workflow a stati è rappresentato dalla classe StateMachineWorkflowActivity. Questa ha bisogno di uno stato d'inizio (proprietà InitialStateName) ed eventualmente di un stato di fine (proprietà CompletedStateName), mentre ogni singolo stato è rappresentato dalla classe StateActivity. Nell'istante in cui viene scatenato un evento dall'applicazione host, il workflow sposta l'esecuzione tra le varie attività di questo tipo presenti nel flusso.
Ogni attività, ad esclusione dello stato di fine del workflow, può avere al proprio interno una o più EventDrivenActivity. Questo tipo di activity rappresenta l'event handler per un particolare evento che può scatenarsi ed è proprio da questi oggetti che partono le varie transizioni che portano l'esecuzione da uno stato all'altro del workflow. Oltre a queste sotto-attività, il cui ordine può essere deciso a priori, ogni stato può avere un'attività di inizializzazione ed una di finalizzazione, che permettono di eseguire delle azioni personalizzate, rispettivamente all'inizio e alla fine dell'esecuzione delle operazioni presenti in ogni singolo stato.
Attenzione: Questo articolo contiene un allegato.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Taggare la output cache in base al routing in ASP.NET Core
Catturare la telemetria degli eventi di output cache in ASP.NET Core
Gestire dati sensibili nella configurazione in ASP.NET Core
Raggruppare i parametri di una minimal API in un singolo oggetto in ASP.NET Core
Definire le impostazioni di cache a livello di controller in ASP.NET Core 7
Cache policy su route groups di Minimal API in ASP.NET Core 7
Gestire la query string nell'output cache di ASP.NET Core
Utilizzare parametri a livello di controller nel routing di ASP.NET Core
Gestire tipi complessi in query string grazie a IParsable in ASP.NET Core 7.0
Definire la durata dell'output cache in ASP.NET Core 7
Utilizzare .NET Framework con le Azure Function in modalità isolata
Migliorare la scalabilità di ASP.NET Core 7 grazie all'output cache