
The Role of WF Activities
Recall that the purpose of WF is to enable you to model a business process in a declarative manner, which is
then executed by the WF runtime engine. In the vernacular of WF, a business process is composed of any
number of activities. Simply put, a WF activity is a minute step in the overall process.
When you create a new WF-enabled application using Visual Studio, you will find a Windows Workflow
toolbox that contains iconic representations of the built-in activities. You will notice two areas on the toolbox,
one for .NET 3.0 activities (shown below) and another for .NET 3.5 activities. The .NET 3.5 area of the WF
Toolbox (not seen below) contains activities for communicating with WCF services. It is also possible to
create your own custom activities, which you will do later in the course.
The Windows Workflow toolbox provides numerous default activities that can be used to model your
business process. Each maps to real types within the System.Workflow.Activities namespace and can
therefore be represented by, and driven from, code.
Notice how the activity icons on the Toolbox (ex: Code) are simple names of the underlying class type
(CodeActivity). As a naming convention, all WF activity classes have an -Activity suffix, for example,
DelayActivity and WhileActivity. When looking up an activity within the .NET Framework SDK
documentation, use the full name of the type, such as CodeActivity or IfElseActivity.
The WF API provides a core set of activities that enable you to represent the following:
• A block of code statements to execute at a given point in the workflow.
• Basic iteration and decision constructs.
• Event-handling constructs.
The WF API also provides a set of activities that enable you to interact with traditional XML web services.
As of .NET 3.5, it provides new types to interact with WCF services.
Other WF activities enable you to do the following:
• Control the timing of a workflow’s runtime execution.
• Manage transaction support.
• Handle exceptions and threads.
Each of the WF activities is highly configurable at design time. For example, like a GUI application, an
activity can be configured using the Properties window of Visual Studio. Depending on which activity you
are configuring, you will find various properties and events to tweak. Here are some options for configuring a
Code activity.
When you drag and drop an activity onto the designer surface, the IDE will declare a member variable of this
type in the designer-maintained file. You can name the underlying member variable using the (Name)
property found within the Properties window. You can then use this member variable within your code base.
Like other designer-maintained files, Visual Studio makes use of partial classes to partition designer-generated
code from your primary code file. Here is some partial code found in the designer file, once you drag a Code
activity onto the designer surface.
// C#
partial class Workflow1
{
...
private CodeActivity codeActivity1;
}
' VB
Partial Class Workflow1
...
Private codeActivity1 As CodeActivity
End Class
The Activity Base Class
All WF activities eventually extend the Activity base class. Activity is defined within the System.Workflow.
ComponentModel namespace of the System.Workflow.ComponentModel.dll assembly. Like any base
class, Activity provides a polymorphic interface to all child types. You can extend Activity to build custom
activities.
Here is an overview of some members of interest. Consult the .NET Framework SDK documentation for full
details. You will see many of these members in action during your lab time, so do not get overwhelmed with
the specifics at this point.
Here is a list of common events defined by the Activity base class. Again, you will see many of these
members in action during your lab time.
WF Activities
Table of Contents
Copyright (c) 2008. Intertech, Inc. All Rights Reserved. This information is to be used exclusively as an
online learning aid. Any attempts to copy, reproduce, or use for training is strictly prohibited.
Courseware
Training Resources
Tutorials
WF Activity
|
Meaning in Life
|
Code
|
This activity represents a unit of custom code to execute within the workflow.
|
CallExternalMethod
|
This allows your workflow to invoke external methods, typically found on a registered ‘local service’.
|
IfElse
While
Policy
|
The first two provide basic looping and decision construct support within a workflow.
The Policy activity performs actions based on a set of associated rules.
|
HandleExternalEvent
EventHandlingScope
Listen
EventDriven
|
These activities enable your workflows to respond to external events, typically sent from the host.
|
|
WF Activity
|
Meaning in Life
|
InvokeWebService
WebServiceInput
WebServiceOutput
WebServiceFault
|
These activities enable your workflow to invoke XML web services, as well as be exposed from an XML web service.
|
Receive
Send
|
These .NET 3.5 activities enable you to interact with WCF services.
|
|
WF Activity
|
Meaning in Life
|
Delay
Suspend
Terminate
|
These enable you to define wait periods, pause, or terminate a course of action within a workflow.
|
Throw
FaultHandler
|
These activities enable you to raise and handle exceptions within a workflow.
|
Parallel
Sequence
|
These enable you to execute a set of activities in parallel or in sequence.
|
CompensatableSequence
CompensatableTransactionScope
Compensate
TransactionScope
|
These activities enable you to incorporate transactions within a workflow.
|
|
Activity Property Name
|
Meaning in Life
|
Description
|
Gets or sets the user-defined description of the Activity.
|
Enabled
|
Gets or sets a value that indicates whether this instance is enabled for execution and validation.
|
ExecutionResult
|
Gets the ActivityExecutionResult of the last attempt to run this instance.
|
ExecutionStatus
|
Gets the current ActivityExecutionStatus of this instance.
|
Name
|
Gets or sets the name of this Activity instance.
|
Parent
|
Gets the CompositeActivity that contains this Activity.
|
|
Activity Event Name
|
Meaning in Life
|
Canceling
|
Occurs when the Activity execution is canceled.
|
Closed
|
Occurs when an Activity has completed execution.
|
Executing
|
Occurs when the Activity is run.
|
Faulting
|
Occurs when an exception is raised during the running of the instance.
|
StatusChanged
|
Occurs when the ActivityExecutionStatus of a running Activity changes.
|
|
Services