360 likes | 484 Views
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.
E N D
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
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
Two types of workflows: Sequential State machine Visual Studio provides us the tooling support to create Workflows easily Windows Workflow Foundation
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
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
Creating workflows • Can be created Declaratively (using XAML) • Imperatively via code
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
Demonstration Simple Workflow Example (using Code Activity)
Things to cover • IDE • Design surface • Properties window • Document Outline • Sample Workflow using Code activity • Debugging experience
More on Activities Out of the box Activities
Activities for Flow Control • IfElseActivity • WhileActivity • ParallelActivity • ConditionedActivityGroup (or CAG) • Replicator • TerminateActivity • SuspendActivity • InvokeWorkflowActivity
Activities for State Management • StateActivity • SetStateActivity • StateInitializationActivity • StateFinalizationActivity
Activites for Event Handling • ListenActivity • EventDrivenActivity • EventHandlersActivity • EventHandlingScopeActivity
Out of the box Activities (contd) • Heaps of others: • Activities for Calling web services • Transaction handling • Compensation • Fault handling • Synchronization • Calling other workflows • etc
Demonstration Out of the box Activities
Creating your own activities Custom Activities
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
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
Dependency Property declaration public static DependencyPropertyCardNumberProperty = 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); } }
Demonstration Custom Activity
Faults • Faults can occur at any time in a WF: • Exceptions thrown • Activity failures • Throw statements in code activities • Throw Activity in WF • 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
Demonstration Handling Faults
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
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
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
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
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