Microsoft’s BizTalk server may have been the first business process management system for the broad market. Its simple diagrammatic
programming model backed by a rich API made it an essential element of a Windows shop’s portfolio of back-end services.
Now Microsoft is taking lessons learned from BizTalk down to the client level with WWF (Windows Workflow Foundation).
WWF is, as its name conveys, a solution for building and executing workflows, which are sets of tasks that Microsoft terms
“activities,” in a sequence determined by developers and altered by conditions created during a workflow’s execution. In WWF’s
case, as in BizTalk’s, workflow developers can cover the skills gamut from traditional coders hacking in .Net and XML to business-oriented
types dragging shapes around a design canvas. In my opinion, however, although WWF rolls when used as a set of services primarily
invoked by client users, it only rocks when a good deal of low-level, custom .Net code is encapsulated in the design canvas’
drag-and-drop blocks. WWF is not, as it appears at first glance, a zero-code approach to client-side workflows, but it is
a shopping mall full of client-side workflow management routines that developers need not reinvent. More than that, WWF creates
a class of application that is rarely seen except when created through extraordinary effort: A distributed user-facing application.
From a developer’s perspective, WWF is a toolbox of abstractions for workflow-related activities such as receiving and sending
Web services calls, taking conditional branches from an otherwise sequential workflow during the course of its execution,
firing and sinking (receiving) asynchronous events and managing nested workflows. WWF abstracts and extends familiar paradigms
in ways that change how developers think. For example, the transaction is vital to database development as a means of committing
a group of changes to the data in an atomic fashion to ensure that the database is never seen in an intermediate state, and
to allow pending changes to be discarded without the need to scrub persisted data from the database. In WWF, activities are
grouped inside a transactional context to ensure that changes are either committed as a whole or reversed in a process that
WWF refers to as compensation. In a workflow, however, the concept of finality does not necessarily reflect the state of data.
For example, if an expedited order requires multiple levels of approval and late in the process the workflow discovers that
the order (and possibly orders sharing its characteristics) cannot be fulfilled, a compensation process can issue notifications
to people, to related workflows running in parallel, and to external applications via Web services calls. What’s more, WWF
can alter a workflow during its execution so that if an aberrant state requires intervention, detours in the normal workflow
can be set in place and later removed, all automatically.
Interaction with WWF requires Visual Studio 2005, but Microsoft has wisely, even brilliantly, set up a license for the redistribution
of portions of VS 2005 so that nondevelopers can access design tools. So with WWF, .Net developers can deliver activity sets
specific to deployment scenarios or lines of business and leave it to nonprogrammers to weave the pieces together diagrammatically.
That task requires a lot of planning on developers’ part, but it’s a small price to pay for Windows Workflow Foundation’s
remarkably accessible take on client-side workflows.