Comprendere Workflow
Foundation
In Windows e in 2007 Microsoft Office system
Paolo Pialorsi
[email protected]
DevLeap
http://www.devleap.com/
Roberto Brunetti
[email protected]
DevLeap
http://www.devleap.com/
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 email
Invio fax notturni
Ecc.
Human Workflow
Richiedono l’interazione con l’utente/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, Email, 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
Windows Workflow
Foundation
Visual Designer
Per WF un Workflow è:
insieme di Activity
eseguite in un Workflow
disegnato con un Visual
Designer
ospitato da un’applicazione
di Hosting
che esegue il Runtime
Engine
appoggiandosi ai Runtime
Services
A Workflow
An Activity
Custom Activity Library
Windows
Workflow Foundation
Base Activity Library
Runtime Engine
Runtime Services
Host Process
Un semplice Workflow
Workflow
XOML
<SequentialWorkflowActivity
x:Class="WorkflowConsoleApplication1.MyWorkflow"
C#
public sealed partial class MyWorkflow: SequentialWorkflowActivity
x:Name="MyWorkflow"
{
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
public MyWorkflow()
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/workflow"
{
>
InitializeComponent();
<CodeActivity
x:Name="customCodeActivity"
}
ExecuteCode="customCodeActivity_ExecuteCode" />
private void customCodeActivity_ExecuteCode(object sender, EventArgs e)
</SequentialWorkflowActivity>
{
Console.WriteLine("Hello World!");
}
}
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 anch’esse 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 2007
2007 Microsoft Office system
I Workflow sono Activity
SequentialWorkflowActivity
StateMachineWorkflowActivity
Visual Designers
SharePoint Designer (Web Designer)
Visual Studio (Pro-Dev)
Development Model
Wizard-based workflow designer
Development Model
Visual workflow designer
Activity
Riutilizzare OOB/deployed
Activity
Riutilizzare OOB/deployed
Creazione di nuove Activity
Form
Auto-generated Form
-ASPX
Form
Designed Form
-InfoPath
-ASPX
Deployment
I Workflow vivono sul server
Runtime compilation
Deployment
Generazione di package
Console Administrator installabile
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
S1
S2
S3
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
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 dall’utente
Comunicazioni da applicazioni esterne
State Machine Workflow
Workflow Hosting
Workflow Hosting
Un workflow deve essere ospitato da un
processo
Windows Application
ASP.NET Application
SharePoint
Office
Servizi Windows
L’host si appoggia a WorkflowRuntime
Il workflow “parla” con l’host tramite eventi
e interfacce
WorkflowRuntime
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();
}
C#
Ma non c’era 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 c’era 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…
http://www.microsoft.com/italy/msdn/
http://msdn.microsoft.com/office/future/
http://www.netfx3.com/
http://wf.netfx3.com/
http://www.devleap.it/
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.
Scarica

WorkflowRuntime