Workflow 4.0
Come molti di voi avranno notato, nella CTP di VS2010 uscita il mese scorso manca il template di workflow di tipo State Machine. Con .NET 4.0 il motore di WF4 è stato praticamente riscritto, il prodotto è stato completamente integrato con WCF4 (i due team di prodotto infatti si sono fusi, forse dovremmo parlare di “fusione per incorporazione” di WF :-) …). Ora in WF4 i workflow saranno orientati solo al markup e non dovrebbe più esistere il concetto di code beside di un workflow. Anche il set di activity di base (vedi qui per averne un’idea) e il modello di estendibilità delle activity personalizzate sono cambiati. Ora le activity non sono più classi derivate dalla classe base Activity, ma classi di una delle seguenti tipologie:
- WorkflowElement: classe base astratta per tutte le tipologie di activity
- Activity: definite come markup e frutto della composizione di altre activity, come i workflow stessi
- CodeActivity: classe base per le activity definite come codice, con l’override del metodo di Execute
- NativeActivity: classe base per le activity definite come codice, che devono interfacciarsi con il motore di base di WF4, con il sistema di messaggi a code (ora ribattezzate bookmark), ecc.
In questo contesto sono stati inseriti dei nuovi modelli di workflow. Nello specifico esiste ancora, seppur ridefinito con nuove activity e con un nuovo designer, il modello di Sequential workflow. Esiste un nuovo modello di workflow chiamato Flowchart, che può anche essere una parte di un workflow Sequential. Come citavo all’inizio del post poi non esiste più il modello di tipo State Machine. Mentre inizialmente (lo scorso anno) si ipotizzava che la causa di questa assenza fosse un porting non ancora completato del motore, ora è chiaro che lo State Machine non sarà supportato, almeno inizialmente. Infatti come spiegato in questa serie di documenti sulla migrazione da WF3 a WF4 con un modello di tipo Flowchart è possibile riprodurre il comportamento di uno State Machine.
Ovviamente, per quella che è la natura di .NET Framework, in .NET 4.0 sarà possibile avere comunque il supporto ai workflow definiti con il motore di .NET 3.0 e di WF3, come è spiegato anche qui, quindi non dobbiamo necessariamente buttare tutto il lavoro già svolto in WF3, soprattutto se abbiamo lavorato con le State Machine. Tuttavia è consigliabile iniziare a pensare ad un percorso di migrazione.