So, after the last few sessions of the day I was getting pretty worn. I wasn’t feeling well and had seriously thought about canning the rest of the day and going back to the hotel. But, when I walked past my next session and looked in I saw a name on the slide that caught my eye: Don Box. Yep, this presentation was given by Don Box and Dharma Shukla. I hadn’t been keeping track of the speakers, just what was being presented. I wandered in and grabbed a seat. I was a bit early (direct from the last session) and it was a good thing too. The place got packed quick. I think it ended up in two overflow rooms.
The title of the presentation was “Workflow + Messaging + Services: Developing Distributed Applications with Workflows”. Once the basis of the information was presented the rest wasn’t surprising, but Don is a heck of a speaker. The session had a lot of laughs (including the Audio/Video guy humbling Don) and was really good.
To boil the entire session down you only have to know this: since WWF applications are nothing but a series of activities within a workflow and WCF is just sending and receiving messages you can incorporate them together very easily. So, they have provided/will provide Send and Receive activities. You can combine the two to create a message activity (or just use the one they give you). All the information about the addressing and bindings can be set as properties on these activities.
A couple of neat things they showed beyond a demo of the messaging activities was the fact that they could publish a “trace” of operations in the workflow and remote administration of the workflow. As a message hit the service and went through the workflow Dharma simply went to the service address (with a different extension at the end for the querystring) and up popped up a trace of the message and workflow.
The second neat thing was to be able to modify the workflow remotely. Again, using an extension on the query string to the service address the XAML representing the workflow was drawn across the wire and displayed in the browser via an Active X designer. Dharma then added his own brand new activity into the workflow. He could apply it to the current workflow instance, or all workflow instances in the future. He then clicked saved the changes and the workflow was updated. It was really slick. Of course, you can control the people who have access to this level of capability via security.
Something of note is that workflow supports the idea of transactions as they are represented by System.Transactions (meaning ACID and quick). But since workflows themselves can occur over long periods of time WWS also supports come compensating capabilities as well. They didn’t get much into this so I’ll have to read the book to find out more.
Oh, and in case you want to try this on stuff on your own, you’ll have to wait. The demo was being shown on a “franken-build” of the framework, OS and various other bits that aren’t available. In the words of Don, “it could only be replicated in Dharma’s bedroom”. Scary.
Overall, it was the best session I’ve attended entertainment wise. Information wise, it was pretty high, but not the best.