3 pagine in totale: <<Indietro 1 [2] 3 Avanti >>
Il Runtime Engine si occupa del ciclo di vita dei workflow e si basa su una serie di servizi che implementano la classe astratta WorkflowRuntimeService:
- Persistenza: alcuni workflow durano pochi secondi, ma altri possono richiedere l'interazione umana e durare anche fino ad un mese o essere infiniti. Perciò l'engine non può limitarsi al processo che lo ospita mantenendo tutto in memoria, ma deve persistere le informazioni riguardati lo stato di un workflow, di ogni step che lo costituisce e della coda che deve eseguire.
WF dispone perciò, di una classe SqlWorkflowPersistenceService per persistere queste informazioni su SQL Server, ma è possibile creare dei WorkflowPersistenceService personalizzati;
- Schedulazione: implementando la classe WorkflowSchedulerService si ha il controllo di esecuzione dei workflow, ottenendo così la facoltà di controllare con quanti thread può essere eseguito o semplificando l'esecuzione in modalità sincrona su un singolo thread. A tale scopo WF dispone di due implementazioni: DefaultWorkflowSchedulerService e ManualWorkflowSchedulerService;
- Tracciamento: in molti scenari è importante la consultazione dello stato di un workflow e di cosa ha fatto in passato. La classe TrackingService ha lo scopo di memorizzare e restituire queste informazioni. WF include due classi SqlTrackingService e TerminationTrackingService per salvare rispettivamente su Sql Server ed EventLog;
- Transazioni: ogni passaggio del workflow può dipendere da altri e formare un'operazione atomica che deve avere successo o fallire nel suo insieme. Il motore quindi con un WorkflowTransactionService aggiunge un servizio di transazionalità per evitare problemi d'inconsistenza.
WM contiene una normale implementazione DefaultWorkflowTransactionService che sfrutta System.Transaction creando una CommittableTransaction quando richiesto e SharedConnectionWorkflowTransactionService per condividere la medesima transazione in base alla stringa di connessione al database. - Scambio di dati: tramite la classe ExternalDataExchangeService un workflow può fare riferimento a dati esterni, chiamare metodi o reagire eventi di classi personalizzate.
Il workflow è composto poi da una serie di attività che eseguono un'operazione o reagiscono in funzione di un evento. WF dispone di attività basilari e più comuni, ma è soprattutto orientato a favorire lo sviluppo di attività specifiche per integrarsi alle nostre applicazioni.
Workflow e attività
In WM sono presenti due tipologie di flusso:
- Sequential Workflow: è un modello basato su attività sequenziali tra loro ed è rappresentabile con un percorso predeterminato. E' caratterizzato da un'attività iniziale e una finale e si completa con l'ultima attività. Questo modello è raffigurabile con il seguente schema:

- State Machine Workflow: questo modello non dispone di un percorso determinato ed è basato sull'impostazione di "stati". Questi possono ricevere eventi ed in base ad essi possono a loro volta scatenare altri eventi. Ogni stato contiene al suo interno delle attività da eseguire e può essere processato più volte o ritornare allo stato iniziale prima di raggiungere quello finale ed è raffigurabile con il seguente schema:

Le attività costituiscono il cuore di WF e sono ciò che gli sviluppatori devono creare per fornire funzionalità da poter riutilizzare nei workflow da disegnare.
Sono già presenti più di trenta implementazioni in WinFX della classe Activity, che forniscono funzionalità di controllo del flusso, condizioni per deviarne l'esecuzione, gestione degli eventi interni o esterni, coordinazione dello stato e la possibilità di comunicare con applicazioni esterne, utilizzando per esempio webservice.
Lo sviluppo di un'attività custom è notevolmente semplificato mediante gli attributi ActivityValidator e Designer per fornire funzionalità di disegno e validazione in relazione alle altre attività.
3 pagine in totale: <<Indietro 1 [2] 3 Avanti >>
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!
