Windows Workflow - An introduction

Preview:

DESCRIPTION

Mahesh Krishnan Senior Consultant , Readify. Windows Workflow - An introduction. 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. - PowerPoint PPT Presentation

Citation preview

WINDOWS WORKFLOW

- AN INTRODUCTION

Mahesh Krishnan Senior Consultant, Readify

Slide 1

Agenda

Introduction to Windows WorkflowWhat is it? What are activities?Hosting

Out of the box Activities Custom Activities and Dependency Properties Handling faults WF Persistence and Tracking

Introduction to WF

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:SequentialState machine

Visual Studio provides us the tooling support to create Workflows easily

Slide 5

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:

SequenceActivityCodeActivityIfElseActivityWhileActivity

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 –

SharePointBizTalkWCF

Slide 9

Simple Workflow Example (using Code

Activity)

Demonstration

Slide 10

Things to cover IDE

Design surfaceProperties windowDocument Outline

Sample Workflow using Code activity Debugging experience

Slide 11

Out of the box Activities

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 servicesTransaction handlingCompensationFault handlingSynchronizationCalling other workflowsetc

Slide 16

Out of the box Activities

Demonstration

Slide 17

Custom ActivitiesCreating 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 BindingAttached propertiesMeta properties

Slide 20

Dependency Property declaration

Slide 21

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); }

}

Custom ActivityDemonstration

Slide 22

Handling Faults

Slide 23

Faults Faults can occur at any time in a WF:

Exceptions thrownActivity failuresThrow statements in code activitiesThrow Activity in WF

If a fault occurs and is not handled, then the WF terminates

Slide 24

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

Handling FaultsDemonstration

Slide 26

Workflow Persistence

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

Tracking Workflows

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

Summary

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 ready-

to-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

Questions?

Slide 35

Recommended