We've looked at several options available for authoring and building workflows. We've built workflows using XOML files and compiled the files both programmatically and from the command line. We also built workflow using pure code, and with code separation. When it comes time to execute a workflow, the result from each option is nearly the same. All the options ultimately produce a collection of objects in memory, and the objects maintain parent-child relationships. The workflow runtime manages the execution of the objects.
Code-based workflow definitions are perfectly reasonable to use for general-purpose, fixed workflows. When using the workflow designer, chances are we'll never have to look at the designer-generated code, and we don't particularly care if the designer is using XAML, C#, or Visual Basic code to maintain the workflow definition.
XAML-based workflow definitions open up a number of additional possibilities. If we have a workflow definition entirely in XAML we can use...