- Standard Modeling Activities Activities are the unit of design and
execution in WF. WF comes with a set of modeling constructs that it calls
activities and a workflow designer. WF ships with approximately 30 activities.
It calls these activities the Base Activity Library (BAL). The activities are
largely segmented as follows: control flow activities, activities that
facilitate data exchange between the workflow and the application running the
workflow (a Windows Forms application, for example), one that permits
arbitrary code to be written, and another group that supplies exception
handling.
- control flow activities
- Sequence: a shell for other activities. It is equivalent to {}in C#.
It is a block where activities may be added. A Sequenceactivity can hold a
tree of activities.
- While: loops while the condition associated with it remains true.
- IfElse: holds one or more branches that are each governed by a condition.
The first branch to return trueis executed; no other branches are
executed.
- Listen: allows two or more branches to be added that each wait for an
external event.
- Parallel: executes two or more branches concurrently. TheParallel activity
will wait
for all branches to complete before completing.
- Replicator: can process a number of elements specified at runtime and can
do so in serial or parallel. It is similar to the C# foreach statement with
the additional capability to process in parallel as well as sequentially.
- EventHandlingScope: is similar to a Listenactivity but it allows the
events to be received multiple times.
- data exchange activities
- CallExternalMethod: is used to send data from the workflow to the
application running the workflow (the host).
- HandleExternalEvent: allows data to be sent from the
host to the workflow.
- WebServiceOutput and WebServiceInput: expose a workflow as a web
service
- InvokeWebService: call a web service from a workflow
- Send: is used to connect to a WCF endpoint (or any compatible endpoint)
from a workflow.
- Receive: is used to expose a workflow as a WCF Service.
- Code: points to a handler with standard .NET code. It can be used to add
custom functionality to a workflow, although in many cases it is better to use
a custom activity.
- Multiple Workflow Styles
- ConditionedActivityGroup: can be placed on both sequential and state
machine workflows.
- sequential workflows: are recommended for deterministic processes that
have a well-defined beginning and end.
- State machine workflows: are best suited for dynamic processes that
iterate through states without a guaranteed order.
- Data-driven workflows: are best suited when the data determines the
process execution order.
- In essence, a state machine workflow is an inverse sequential workflow.
The events are on top and the sequential logic embedded when using a state
machine workflow. In a sequential workflow it is the opposite.
- Hosting
- WF is not a standalone application. WF is an engine that executes
workflows on behalf of a host application. A Windows Forms, ASP.NET, Windows
Service, or other Windows application starts the workflow engine running.
The host application is then responsible for managing the life cycle of the
workflow engine. The host application must remain active while workflows are
running and communicate with the workflow engine. If the host application
terminates while workflows are running, they will stop running. The host
application needs to know the status of workflows the workflow engine is
running on its behalf. It achieves this by subscribing to a number of events
the workflow engine makes available to it. Three of the most common are
completed,terminated, and idled.
- completed event: fired when a workflow completes processing
successfully.
- terminated event: fired when the workflow completes unsuccessfully.
- idled event: the workflow is not complete but inactive.