There are four major short-comings of developing workflow applications that WF helps simplify within it's framework...
1. Ability for the workflows to maintain state for extended periods of time.
2. Implementing dynamic flow that model human behavior with workflows.
3. Generating Workflows thru XML & Updating/extending workflows at runtime.
4. Adding transparency to workflows while workflows are developed and ran.
WF has a hosting layer that connects the host application running the WF Runtime with the workflow. State for a workflow is managed through the host layer service: "Persistence". Instead of the persistence service provider maintaining state within memory for extended periods of time, the provider knows when a workflow has become idle. Maybe an approval needs to be made and the workflow is waiting for requested data, but instead of holding it's state in memory for the duration, it can persist it's state within a data store whether it be SqlServer or the file system.
The State-Machine Style for workflows allows the flow of workflows to be more reactive then predefined. Activities need the ability interact through human input. This style of workflow characterizes human behavior where activities within a workflow can become active from any possible activity. Now human behavior workflows are supported using WF and modeled just as efficient as predefined workflows.
One of the most important features of WF is the ability to create and update workflows at runtime. WF allows workflows to be built using XAML(Extensible Application Markup Language). Workflows can now be dynamically changed by making modifications to its XAML. There is also a namespace, System.Workflow.ComponentModel.WorkflowChanges that allows activities to be manipulated within a workflow during runtime.
Using WF, developers do not have as deep to see what makes up a workflow. The workflow designer enables drag n drop functionality to construct a workflow quickly. Once a workflow has been created, the code can be stepped through and debugged visually through the designer. There is also a hosting layer called, "Tracking" that allows workflow processing to be traced. The tracking information of a workflow is stored to fit the hosting process.