Paul Andrew - WF PM
Inizia con una rapida introduzione sui concetti base legati a Rules, RuleSet e Policy per passare subito ad un Demo e poi introdurre e spiegare abbastanza nel dettaglio la possibilità di modificare il Workflow a runtime, Dynamic Update.
CAG - Condirtions Activity Group
Viene presentato come uno dei concetti più complessi di WF, la CAG è una sorta di contenitore di altre Activity controllato, nella sua esecuzione e nel suo ciclo di vita, da una serie di Rules. In effetti è tutto tranne che semplice... le Activity in essa contenute vengono eseguite, in maniera sequenziale, tutte e ognuna viene ripetuta fintanto che il suo stato non sia "true" (when), quindi non si esce dal ciclo (until) della CAG fintanto che tutte le Activity incluse non hanno dato esito positivo. Nella demo che ci propone viene usato come un potente sistema di validazione e gestione dell'input dell'utente.
Breve pausa commerciale presentando BizTalk server e vantandosi che il "Rules Engine" è totalmente basato su WF.... markettaro :-D
Demo sulle Policy: Le policy non sono altro che un contenitore di Rule che possono essere legate tra loro in svariati e potenti modi, producendo nell'insieme un risultato. Nella demo viene usato questo sistema per filtrare secondo un set di criteri (RuleSet) una base dati. E' molto interessante nello specifico viene usato per filtrare i voli aerei disponibili in un ipotetico sistema di prenotazione online, la policy viene valutata e alla fine ogni volo presente (che non è sgtato scartato dalla policy) ha uno score che determina quanto sia attinente con i criteri di ricerca. Non male.
Una considerazione su quello che ho appena visto: nulla ci vieta di fare tutto alla "vecchia" maniera, scrivendo cioè il ns bel codice, magari in un Assembly separato e caricandolo a runtime in modo da poter pluggare a caldo le modifiche, ma... WF diventa veramente tosto se pensiamo che possiamo dare il Designer all'utente finale e permettergli di gestire da solo tutta la logica. Potente! molto potente, si aprono scenari veramente interessanti. Certo gli scogli sono tanti soprattutto perchè WF è ancora molto acerbo, è "solo" un engine e gli strumenti che mette a disposizione oggi sono tutto tranne che end user friendly quindi il lavoro da fare per arrivare all'utente finale è tanto ma IMHO ci sono scenari in cui ne vale veramente la pena.
Dopo la "mazzata" (perchè stamattina sono veramente cotto) passiamo a qualcosa di più tosto... :-D esternalizzazione delle policy, cioè la possibilità di utilizzare il Rules Engine a prescindere da WF. Nella demo che stiamo vedendo c'è un'applicazione Windows Forms che edita un set di rules e le salva in un db e un WF che gira in un Servizio che legge le rules e le esegue e si aggiorna dinemanicamente secondo le modifiche apportate al RuleSet...
Molto ma molto bella la possibilità di persistere le "rules" ad esempio in un db...
.m