High Level Design
The UI Workflow Framework consists of 2 component groups.
- Modeling Components - provides workflow artifacts that can be used to model UI navigation. This includes a set of custom activities and their related design components
- Hosting Components - provides the runtime environment for hosting UI workflow using different UI technologies
There is a third component group which is not included in this framework but can be very powerful if implemented by higher framework builders. And that is the UI Components group. These components provide custom controls that encapsulate interactions between the UI application and the workflow, making application development simple and straightforward. It is also the key for enabling completely declarative UI programs.
Architectural diagram and control flow
The following diagram depicts the overall relationship between the different parts of the UI Framework.

A web browser makes a URL request. This request is intercepted by the HTTP Module. The HTTP Module evaluates the request to determine if a workflow instance needs to be created. Evaluations are done by parsing the query string and looking for a workflow instance id. The request is then processed by the Navigation Manager who is responsible for either starting a brand new workflow instance or reloading an existing one. Brand new workflow instances are created from a workflow definition whose outer activity is a Navigator.
Navigator activities contain Interaction Activities. These activities are mapped to pages and are responsible for sending data to the page from the workflow and receiving data from the page on submittal. It is the responsibility of the HTTP Module to use the Navigation Manager to identify the Interaction Activity that is currently pending input and display its associated ASP.NET page.
A Navigator Activity contains the navigation logic of the application. The Navigator evaluates the Transitions contained in an Interaction Activity after a page submittal has taken place. After it evaluates the transition, it starts the execution of the selected Interaction Activity. It is the responsibility of the Navigator to start the execution of the workflow and to notify the HTTP Module via the Navigation Manager of the currently executing Interaction Activity.
Interaction Activities identify the information that will be sent to the page for initialization and the information that will be returned from the page. The output information of an Interaction Activity is used to render the page during Page OnLoad. After output is sent to the Page from the Interaction Activity, the activity becomes idle. It stays idle until input information is submitted from the page back to it. Following this exchange the Interaction Activity executes any of its children and relinquishes control back to the Navigator activity when it is done. The Navigator in turn evaluates the Transition information associated with the Interaction Activity and it determines the next Interaction Activity that needs to be executed.
The dealings between the Interaction Activity and the page are done via the Navigation Manager and the HTTP Module. The Interaction Activity returns an Interaction Context to the Workflow Manager. Using the Interaction Context, the HTTP Module determines the currently executing Interaction Activity.
