Comprendere Workflow Foundation In Windows e in 2007 Microsoft Office system Paolo Pialorsi Roberto Brunetti
Agenda Perché workflow, perché WF Architettura di WF Runtime Engine Activity Base Activity Library Hosting Engine Persistence e State Management Tipologie di workflow Sequential Workflow State Machine Workflow Designer Q&A
WinFx (pardon.NET 3.0) Piattaforma per lo sviluppo di applicazioni di prossima generazione Windows Communication Foundation Windows Workflow Foundation Windows Presentation Foundation Windows CardSpace (InfoCard)
.NET 3.0 ad oggi è in Beta Quello che vediamo potrebbe cambiare da qui al rilascio Nelle slide e demo ci riferiamo a: Beta2 CTP May 2006 – GoLive!
Workflow in generale
Perché Workflow? Per descrivere in modo umano i processi di business Per sganciare i processi dalla loro particolare implementazione Per dare procedure e regole operative Perché ognuno faccia il suo lavoro Programmatori: codice (attività) Esperti di dominio: design dei flussi Utenti: operatività
System Workflow Processi di business tra sistemi/macchine Unattended e tipicamente brevi nel tempo come durata del singolo flow Regole certe, ma modificabili nel tempo, anche da figure non dev Esempi: Gestione notifiche via Invio fax notturni Ecc.
Human Workflow Richiedono linterazione con lutente/operatore Di solito sono Long Running Se richiedono transazioni saranno Long Running Quindi eventuale Compensation State Management: devono essere Stateful Coinvolgono diversi ambiti applicativi: Task, Office, , ecc. Esempi: Processi di approvazione documentale (firma singola, firma multipla) Order processing
Perché WF? Framework di gestione dei Workflow a 360° Design, hosting, monitoring, extension Pervasivo in tutte le tecnologie Microsoft Windows Office Sharepoint BizTalk Visual Studio 2005 (ISV custom apps) Ecc. Set di funzionalità di base Programmabile e estendibile con codice.NET
Windows Workflow Foundation
Per WF un Workflow è: insieme di Activity eseguite in un Workflow disegnato con un Visual Designer ospitato da unapplicazione di Hosting che esegue il Runtime Engine appoggiandosi ai Runtime Services Host Process Windows Workflow Foundation Runtime Engine A Workflow An Activity Runtime Services Base Activity Library Custom Activity Library Visual Designer
Un semplice Workflow
C#Workflow public sealed partial class MyWorkflow: SequentialWorkflowActivity { public MyWorkflow() { InitializeComponent(); } private void customCodeActivity_ExecuteCode(object sender, EventArgs e) { Console.WriteLine("Hello World!"); } XOML
Workflow Un workflow è una classe.NET Deriva da classi base della Runtime Library (System.Workflow.Activities) SequentialWorkflowActivity StateMachineWorkflowActivity Può essere definito come: Flow (graficamente) Codice.NET Codice XOML => Compilato con WFC.EXE Stesso schema di XAML
Un workflow in pratica
Activity Unità di esecuzione Sono anchesse classi.NET Derivate da System.Workflow.ComponentModel.Activity Ne esistono N già definite da WF Possiamo definire le nostre Activity custom 2007 Microsoft Office system ne prevede diverse custom Possono essere Basic Activity: singoli step di un workflow Composite Activity: gruppi di activity (sequence)
Base Activity Library Code Delay IfElse InvokeWebService InvokeWorkflow Sequence Parallel Replicator While CallExternalMethod ecc.
Base Activity
Activity Development Due possibilità Usare il designer per comporre Activity Aggregandone altre Derivare e personalizzare Activity di base Implementare una classe ex-novo Derivando da: System.Workflow.ComponentModel.Activity Possiamo creare class library di Activity Office Sharepoint Server Microsoft Office system
I Workflow sono Activity SequentialWorkflowActivity StateMachineWorkflowActivity
Visual Designers SharePoint Designer (Web Designer) Activity Riutilizzare OOB/deployed Form Auto-generated Form -ASPX Deployment I Workflow vivono sul server Runtime compilation Development Model Wizard-based workflow designer Visual Studio (Pro-Dev) Activity Riutilizzare OOB/deployed Creazione di nuove Activity Form Designed Form -InfoPath-ASPX Deployment Generazione di package Console Administrator installabile Development Model Visual workflow designer
Tipi di Workflow
Sequential Workflow Sequenze di eventi noti Temporalmente consequenziali Il processo guida il flusso Tipicamente non richiedono human interaction Sono i workflow più semplici A1 A3 A2 A4
Sequential Workflow
State Machine Workflow Guidati da eventi Interni Esterni La sequenza di eventi non è nota a priori I percorsi di esecuzione sono variabili Può assumere un solo stato per volta Può saltare dinamicamente nel flusso Ogni evento scatena una sequenza assimilabile ad un sequential workflow S1 S2 S3 S4
Quando usarli Quando i processi di business sono Molto variabili Molto complessi Difficilmente schematizzabili in sequenze Se le human interaction sono frequenti Quando dobbiamo gestire eventi esterni Comunicazioni dallutente Comunicazioni da applicazioni esterne
State Machine Workflow
Workflow Hosting
Un workflow deve essere ospitato da un processo Windows Application ASP.NET Application SharePoint Office Servizi Windows Lhost si appoggia a WorkflowRuntime Il workflow parla con lhost tramite eventi e interfacce
WorkflowRuntime C# using(WorkflowRuntime workflowRuntime = new WorkflowRuntime()) { AutoResetEvent waitHandle = new AutoResetEvent(false); workflowRuntime.WorkflowCompleted += delegate(object sender, WorkflowCompletedEventArgs e) {waitHandle.Set();}; workflowRuntime.WorkflowTerminated += delegate(object sender, WorkflowTerminatedEventArgs e) { Console.WriteLine(e.Exception.Message); waitHandle.Set(); }; WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(WorkflowConsoleApplication1.MyWorkflow)); instance.Start(); waitHandle.WaitOne(); }
Ma non cera già BizTalk?! Sì ma BizTalk è più orientato ai Business Processes BizTalk è orientato alla gestione dei messaggi/file Molto XML/Service Oriented BizTalk prevede connettori verso ERP vari (JDE, PeopleSoft, SAP, ecc.) Database servers MSMQ Ecc. La prossima versione di BizTalk dovrebbe utilizzare WF per la parte di design
Ma non cera già SSIS?! Si ma SSIS è più orientato al trasferimento di Dati Da una sorgente a una destinazione Con eventuale trasformazione Gira fuori dal contesto di una applicazione.NET WF gira dentro applicazione SSIS richiede SQL Server WF gestisce i workflow (punto)
Ulteriori approfondimenti… Corso DevLeap su.NET 3.0 (WinFx) Personalizzato
Grazie! Domande? Compilate il form di valutazione…
© 2006 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.