Click here to Skip to main content
Click here to Skip to main content

Automate user actions in a web page - Microsoft Windows Workflow Foundation

, 6 Jan 2006
Rate this:
Please Sign up or sign in to vote.
This article illustrates WWF custom activities to simulate user action and populate web page input fields and submit the page.

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:

  1. Open the browser.
  2. Navigate to the Google site.
  3. Enter the search text.
  4. Press the Search button.

For checking emails in a Hotmail account, one has to perform the following activities:

  1. Open the browser.
  2. Enter the username.
  3. Enter the password.
  4. 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.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

Share

About the Author

Karthikeyan Arunachalam
Web Developer
United States United States
No Biography provided

Comments and Discussions

 
GeneralRoot Activity Type Invalid Error Pinmembercfernald4-Mar-09 10:51 
Questionnot able to reach the Execute method of custom activity Pinmemberamitkm1-Oct-07 16:39 
GeneralGetting errors. Pinmemberjdkulkarni13-Feb-07 22:58 
GeneralSimplier is definately better! Pinmember.NETWannabe11-Aug-06 12:01 
GeneralRe: Simplier is definately better! PinmemberGaoYu200013-Aug-07 18:00 
QuestionUIFlow [modified] Pinmembersaisrio26-Jun-06 4:13 
GeneralA concrete example would be nice Pinmembersytelus8-Jan-06 0:20 
GeneralRe: A concrete example would be nice PinmemberKarthikeyan Arunachalam8-Jan-06 2:30 
GeneralRe: A concrete example would be nice Pinmemberernest_elias10-Jan-06 21:59 
GeneralYou are not very late PinmemberIgor Vigdorchik6-Jan-06 16:13 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.150128.1 | Last Updated 6 Jan 2006
Article Copyright 2006 by Karthikeyan Arunachalam
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid