Representing a componentized workflow model via a declarative markup
language. Each step of the workflow is modeled as an activity that has
metadata to describe design time aspects, compile time aspects, and
runtime aspects of the workflow step. A user selects and arranges the
activities to create the workflow via user interfaces or application
programming interfaces. The metadata associated with each of the
activities in the workflow is collected to create a persistent
representation of the workflow. Users extend the workflow model by
authoring custom activities.