So here I am...Two weeks following my NEO (new employee orientation) here in Redmond, I've finally caught my breath enough to put an entry up on this blog.First, a little bit about me, before I dive right into all things workflow. I'm from St. Louis, where I grew up, and spent the last five years working for two different Microsoft partners. Then, in January, I decided to accept a position here at Microsoft as the technical evangelist for Windows Workflow. My wife, daughter, and pug then headed out here.I'm out here now as the Technical Evangelist for Windows Workflow. I'm working in James Conard's Longhorn Server Evangilism team, with some other evangelists are doing some cool things.
I'm focused on talking about Windows Workflow, so let me start by talking about why I am so excited about it. Almost every application, from an embedded video controller, to an enterprise content management system, manages a lot of the same things. We manage where we're at, where we're going. We (should) track where we've been, what we're doing right now, how long things are taking, and we should make that information easy to see. We usually need to act over a period of time that's longer than a quick void main(), and we should be able to gracefully recover in the case where something goes wrong. If we don't like the way a current app is handling these things, we should be able to swap that out with an implementationthat fits our situation a litle better.
Now, a well-designed, well-planned, well-coded and well-tested solution will handle a lot of these scenarios. Windows Workflow Foundation gives a toolkit to developers that does a lot of this for us, giving us a very well designed base to build our apps on top of. A lot of that infrastructure that we write again and again on applications, or bake into frameworks we push out to our organization's developers to use, exists in Workflow already. We can easily extend it to map to our specific objects by writing our own activities. We can incorporate those activities (graphically) into our program flow or composite those basic activities into more complicated ones. If the out of the box host doesn't meet our needs, we can write a new tracking service, a new persistance provider.
These are common problems faced in many problem domains, and this is an incredibly versatile swiss-army knife that many developers will be able to use. I'm excited becuase I think it's a well designed product, and I think it's something that almost every developer can use, and I can't wait to hear about how everyone's using it! Until next time, check things out at