Building a componentized workflow model. 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. The workflow may be compiled and
executed.