Workflows can either be built declaratively by using only Markup, or only Code or a combination of both Markup and code.
Once the workflow is developed, it can be hosted on any application that can load the Workflow Runtime such as Windows Forms, Windows Services, ASP.Net Web Sites and Web Services.
Activities: Workflows consist of one or more activities. Activities are the building blocks of workflows. A set of pre-built activities is provided for developers. You can also build your own custom activities.
Services: The workflow runtime engine uses many services when executing a workflow instance. You can either use the services in the Windows Workflow Foundation, or you can customize the available services, or you can build your own services.
Long Running Workflow: Workflows in real life can have a long and unpredictable execution life. The Windows Workflow Foundation handles this capability and can persist workflows, as required.
Compensation: Transactions in the workflow world are different compared to traditional transactions. In cases where we have long running workflows, it may not be possible to exactly “rollback” a set of steps when an exception occurs. Instead, the workflow allows “compensation” which in simple terms is the action taken to cover up for the effect of the part of the transaction that has already been completed.
Tracking: The visual nature of a workflow definition leads us to the next requirement, which is – tracking the progress of a running workflow. Windows Workflow Foundation provides the Tracking services to track the status of workflow instances.
Rules and Conditions: You can apply logical conditions in 2 ways in workflows
Specify Code Conditions: programmatically define whether certain paths of the workflow are run. This is similar to specifying a condition in an If Statement, in traditional programming.
Rules: programmatically or declaratively define the business rules for workflows.
Rules allow complex forward chaining rule sets and lend towards easy modification at runtime. Rules also enable the separation of Business logic and Process flow and can be shared across workflows