Our Accomplishments
Download
Report
Transcript Our Accomplishments
Slide 1
Agenda
Introduction to Windows Workflow
What is it?
What are activities?
Hosting
Out of the box Activities
Custom Activities and Dependency Properties
Handling faults
WF Persistence and Tracking
Slide 3
What is WF?
Stands for Windows Workflow Foundation (not WWF)
One of the 4 pillars of .NET 3.0
WF provides:
A programming model for building Application workflows
A runtime to host them
Windows Workflow Foundation
Two types of workflows:
Sequential
State machine
Slide 5
Visual Studio provides us the tooling
support to create Workflows easily
Activities
Activities are building blocks of a WF
To a workflow, an activity is a re-usable
program statement
An activity that contains other activities
is called a Composite Activity
Examples of out of the box activities:
SequenceActivity
CodeActivity
IfElseActivity
WhileActivity
Slide 6
WF Program
A Workflow program is nothing but a
tree of activities
WF programs typically wait for some
kind of an input and performs a bunch of
activities
Once an activity finishes execution, the
next activity in the WF is executed
Slide 7
Creating workflows
Can be created Declaratively (using
XAML)
Imperatively via code
Slide 8
Hosting
The program is hosted via WorkflowRuntime
class
Can be hosted in any .NET App
WinForms, Console, ASP.NET, WPF...
Integrates with other MS technologies –
SharePoint
BizTalk
WCF
Slide 9
Demonstration
Slide 10
Things to cover
IDE
Design surface
Properties window
Document Outline
Sample Workflow using Code activity
Debugging experience
Slide 11
More on Activities
Slide 12
Activities for Flow Control
IfElseActivity
WhileActivity
ParallelActivity
ConditionedActivityGroup (or CAG)
Replicator
TerminateActivity
SuspendActivity
InvokeWorkflowActivity
Slide 13
Activities for State Management
StateActivity
SetStateActivity
StateInitializationActivity
StateFinalizationActivity
Slide 14
Activites for Event Handling
ListenActivity
EventDrivenActivity
EventHandlersActivity
EventHandlingScopeActivity
Slide 15
Out of the box Activities (contd)
Heaps of others:
Activities for Calling web services
Transaction handling
Compensation
Fault handling
Synchronization
Calling other workflows
etc
Slide 16
Demonstration
Slide 17
Creating your own activities
Slide 18
Custom Activities
Alternative to Code activity
Derived from Activity class (or
something derived from it, like
SequenceActivity)
Need to over ride Execute method
Promotes re-use and is more testable
Used from the designer
Sometimes increases complexity
Slide 19
Dependency Properties
Properties in Custom activities are usually
implemented as Dependency Property
Unlike normal properties, value is not stored
in an instance variable
They are registered with Dependency
Property Framework and supports these
scenarios:
Activity Binding
Attached properties
Meta properties
Slide 20
Dependency Property declaration
public static DependencyProperty CardNumberProperty =
DependencyProperty.Register("CardNumber",
typeof(string),
typeof(ENettActivity));
[DescriptionAttribute(“The Credit Card number of user")]
[CategoryAttribute(“Credit Card Details")]
[BrowsableAttribute(true)]
[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Visible)]
public string CardNumber
{
get
{
return ((string)(base.GetValue(ENettActivity.CardNumberProperty)));
}
set
{
base.SetValue(ENettActivity.CardNumberProperty, value);
}
}
Slide 21
Demonstration
Slide 22
Slide 23
Faults
Faults can occur at any time in a WF:
Exceptions thrown
Activity failures
Throw statements in code activities
Throw Activity in WF
Slide 24
If a fault occurs and is not handled, then the
WF terminates
Fault handling
try/catch blocks within code will work
In custom activities, the HandleFault
method can be overridden to do clean
ups
FaultHandlers and FaultHandler Activity
can be used to handle specific
Exceptions
Throw Activity can be used to throw
Exceptions
Slide 25
Demonstration
Slide 26
Slide 27
Why do you need it?
Typically Workflows are long running
You may want to maintain the state of
workflows between machine shutdowns
You may want to unload workflow
(dehydration) that is idle
Scalability and Resource consumption
Slide 28
Persistence in Windows Workflow
Implemented as an optional core service
A Sql Server persistence service is
available out of the box
The database can be created using
scripts from the directory [...]\Framework\v3.0\Windows Workflow
Foundation\SQL\en
The service can be added easily via
configuration or via code
Slide 29
Slide 30
Why do you need it?
There may be lots of workflows running,
each in a different state
You may want to track these workflows
and activities at runtime
You may also want to find out what path
a certain Workflow instance took
Slide 31
Tracking in Windows Workflow
WF Tracking Framework allows
monitoring of workflows by capturing
events raised during WF execution
SqlTracking service is used to write this
to SQL Server database
Like the persistence service, this can be
added easily via configuration or code
Slide 32
Slide 33
Summary
Windows Workflow provides the runtime
and API to create workflows in .NET
Activities are the building blocks of WF
.NET provides a whole bunch of readyto-use activities, but custom activities
can also be created
Persistence services are needed for
long running workflows
Tracking services can also be added to
track the running of workflows
Slide 34
Slide 35