Introduction
During Christmas holidays, I read about Microsoft Windows Workflow Foundation (WWF) for the first time and realized that I was too late in learning this new technology. "Better late than never" - so I decided to get my hands wet on this framework. WWF is an extensible framework from Microsoft to implement workflow based solutions. In simple terms, a workflow is a collection of activities. To read more on WWF, please visit the MSDN site.
At least once in a day, all of us open a web browser to do some search in Google, open our email account to check emails, and so on. This is an example of a human workflow, and in this article, I am going to show how to express this workflow in WWF.
Activities Defined
For doing a Google search, one has to perform the following activities:
- Open the browser.
- Navigate to the Google site.
- Enter the search text.
- Press the Search button.
For checking emails in a Hotmail account, one has to perform the following activities:
- Open the browser.
- Enter the username.
- Enter the password.
- Press the Sign In button.
In the above scenarios, we are filling a form in a web page and posting it. To accomplish this workflow, I did a very minimal abstraction and came up with the three activities below:
- VisitPage - Opens the browser and navigates to the specified website.
- InputData - Fills up the input controls on the webpage with the specified values (supports textbox, textarea, radio button, checkbox, dropdownlist).
- Click - Posts the form by pressing the specified button
Custom Activity
Microsoft has made WWF application development very easy by providing the Visual Studio� 2005 Extensions for WWF. A separate project template is available for developing the Activity library. To implement a custom activity, all we have to do is derive from the Activity
class and override the Execute
method.
public class MyActivity : Activity
{
protected override Status
Execute(ActivityExecutionContext context)
{
.
.
}
}
I added additional properties for the VisitPage, InputData, and Click activities. See the attached code for details.
Defining a Workflow
Visual Studio has full designer support to model a workflow and even allows us to define breakpoints in the designer itself for debugging. Workflows can be defined in XML format also (XOML - XML workflow markup). Figure 1 is Hotmail account login workflow in designer view, and figure 2 is a Google search workflow in text view.
Figure 4 - Hotmail Login
Figure 5 - Google Search
Scope
There are so many automated web filing systems available today for a variety of services. I am sure that they are proprietary solutions very hard to develop, maintain, and to train new people. Now, we have got a very good generic, extensible framework from Microsoft with a full suite of developer tools to develop workflow based solutions. With the designer support, even a business analyst can complete a workflow without any help from a developer. I strongly believe that re-engineering web filing systems using WWF will deliver true ROIs.
Developer Info
The sample application was developed using Microsoft Pre-Release Software WinFX Runtime Components - December Community Technology Preview (CTP). Microsoft internet controls were used for the IE browser functionalities.