360 likes | 497 Vues
This session provides an in-depth introduction to Windows Workflow Foundation (WF), a critical component of .NET for building application workflows. We will cover the fundamentals of WF, including activities, hosting, and custom activities, emphasizing practical examples and out-of-the-box activities such as IfElseActivity and CodeActivity. Participants will learn about workflow persistence and tracking, handling faults, and the importance of dependency properties. Join us for demonstrations and insights into creating reusable and testable workflows that integrate smoothly with various Microsoft technologies.
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