14. September 2010 16:02
Last week I had the pleasure of presenting two sessions at the Heartland Developer’s Conference (HDC). I love this show and meeting people from the central region, as well as catching up with colleagues. It’s always a great time and this year was no different.
For those who attended, you can find the samples I used at the links below. Thanks for coming, I hope you enjoyed the show as much as I did.
WF 4 from hello world to real world
Choosing service technology
14. May 2010 07:53
In addition to now having WF 4 offered as a private on-site course, we have several upcoming public offerings of our Double Feature course which has been updated to .NET 4. I’m excited to be teaching the course at the end of July in Boston and to cover the new features in WCF including configuration enhancements and REST improvements. The bigger change, of course, is the entirely new WF 4 programming model. In these open enrollment classes, we will be covering the new programming model, activity development and the runtime services such as persistence and tracking. We’ll also cover the convergence of these two technologies in Workflow Service and the new message correlation capabilities introduced in .NET 4.
So, if you are interested in an intense week of training in the Boston (July 26) or SoCal (Oct 11) area on these two great frameworks, register or save a seat before the classes fill up!
7. May 2010 09:55
As promised to those who attended the user group last night, here is a link to the demonstration code I used in my talk on WF 4. There was a great crowd at the event and I appreciate all the great questions during and after the presentation. If anyone would like a copy of the slides, use the Contact link to the right to send me email and I’ll send them along. Thanks for attending and congratulations to the first winner in the drawing who took home a 1 year subscription to Pluralsight On Demand!
3. May 2010 06:25
The WF team has released samples and source code for a state machine (with designer) and some ADO.NET activities. These are not fully supported code, but do provide you with a glimpse of what Microsoft is planning in these areas, and provide you the ability to give feedback on the implementation. I’m interested to check these out as I’ve got my own runtime, but not design-time state machine implementation that I like. It will be fun to see how it compares.
1. March 2010 07:26
You can download the bits and get some great samples in the MSDN development center. AppFabric is the combination of the distributed caching features previously codenamed “Velocity” and the composite application management features previously codenamed “Dublin”. These extensions to Windows Server continue to make it a great platform for building applications. I’m excited about the tooling that AppFabric brings to the management of Workflow Services as it makes it much easier to configure, monitor and take action on deployed services. In addition, AppFabric adds to the rich tracking story in WF by allowing you to store tracking information in a SQL database so you can do historical analysis.
This build is based on the Release Candidate of .NET Framework 4, so you’ll want to have that installed first before installing AppFabric.
29. October 2009 04:21
A little late on this post, but my excuse is that I’ve been traveling pretty much since I left HDC. I had a great time at the show this year as Pluralsight was able to have a significant presence with our marketing team (Meagon) and three speakers (myself, Kent, and Aaron). I wish I was the one leaving with that ZuneHD, but I’m pretty sure the lucky winner is enjoying it. Hopefully folks who attended have checked out there free week of Pluralsight On-Demand so they can see what we are doing with our online training – customers are telling me they really love being able to go online anytime and watch a knowledgeable instructor walk them through some content.
The show was well organized and had a lot of cool social and networking opportunities. I’m really glad we have a show like this in the midwest, and hope we can build on the HDC model to have more in the years to come.
Here are the materials from my two talks at HDC. I’ve included a Beta 2 update for the WF4 sample code since Beta 2 shipped just days after the conference. Hopefully that will make the transition easier for those of you who attended.
12. August 2009 07:17
We’ve recently added a short course on “Dublin” to our subscription-based on demand library. This is very much an early adopter course using very early bits released last year at the PDC. The intention is not to provide detailed information on specifics around the technology as those will most definitely change, rather I wanted to provide enough information and detail so developers can figure out “What is Dublin?”.
The modules provide an overview as well as showing the tools provided by, or built upon by, “Dublin” to deploy and manage your services.
Hopefully, these early look modules are helpful to you as a developer as you prepare for the next wave of connected systems technologies from Microsoft. As “Dublin” reaches further milestones such as Beta and Release Candidate status, I will be updating the course, and adding more content to round it out with deeper detail.
4. August 2009 05:15
I’m happy to announce that the WF 4 whitepaper I wrote this spring has been published on MSDN and is ready for viewing. This was a fun paper to write digging into the new bits for WF coming in the framework. I’m very excited about the new models for activities and workflows and being able to do totally declarative workflow programming. The new designer model is awesome and I can’t believe how easy it is to rehost the designer.
A Developer’s Introduction to Windows Workflow Foundation (WF4) in .NET 4 Beta 1
The paper is based on Beta 1, which means you can download the bits and play along.
At the same time, Aaron’s paper on WCF in .NET 4 has been published and contains a lot of the workflow service content as well as all the new features coming in WCF 4.
26. June 2009 08:45
First, this post is not about any automated tools for mapping your activities, so don’t get too excited. :) Instead, I wanted to take the opportunity to talk about the changes to the base activity library in the context of the activities available today in WF 3. If you are using WF today, there are some activities that have direct counterparts, while others are split into multiple activities and yet others disappear completely. Of course there are also some new activities that were not available in WF 3. In the tables below, I outline each of these different categories with some notes. Hopefully this mapping helps you see what is changing, what is new, and what goes away.
NOTE: this information is based on Beta 1 of WF 4 and some changes are possible, though nothing big is likely, between now and the RTM.
Activities with direct or indirect equivalents
|WF3 Activity ||WF4 Activity ||Notes |
|Delay ||Delay ||The activity works the same, but the timers are handled differently in the framework. |
|Sequence ||Sequence || |
|Parallel ||Parallel ||Similar, but the internals of execution may differ slightly by RTM. |
|Replicator ||ForEach<T>, ParallelForEach<T>, |
|These provide <optional> typed access to the instance data and truly declarative authoring experience. Each represents the different execution modes of the Replicator activity – so it has been split into four similar activities. I think most people will use the generic versions more than the others, but time will tell. |
|CallExternalMethod ||InvokeMethod, InvokeMethod<T> ||Provides .NET method invocation and optional return of a typed return value. This can be a call on an instance stored in a variable or a static method. |
|HandleExternalEvent ||Receive, ReceiveAndSendReply ||WCF messaging activities replace the Local communications model, even for host-> workflow communication. |
|Listen ||Pick ||The Pick activity is the primary WF4 activity that replaces the Listen and the State which were both containers for EventDriven activities. |
|EventDriven ||PickBranch ||This is an indirect mapping and you don’t use the PickBranch outside the pick, but it serves the same basic purpose of the EventDriven. |
|Compensate ||Compensate ||Though the mechanism are slightly different, the activity serves the same purpose – to execute the compensation handler for a compensable scope. |
|CompensatableSequence ||CompensableActivity ||The new activity includes a ConfirmationHandler which can execute when a confirmation is signaled using the Confirm activity. |
|FaultHandler(s) ||TryCatch ||The try catch logic is more explicit now and you use the TryCatch activity to model your fault handling instead of using fault handlers on the composite activities. |
|IfElse ||If ||In WF 4, this can only have two branches, the If and the Else. For more branches, use the switch activity. |
|InvokeWebService ||Send, SendAndReceiveReply ||All web service communication in WF4 uses WCF. |
|Throw ||Throw || |
|TransactionScope ||TransactionScopeActivity || |
|WebServiceInput (output and fault) ||Receive, ReceiveAndSendReply ||WCF is THE messaging system to use with WF. |
|While ||While/DoWhile ||WF4 introduces the DoWhile in addition to the While to ensure the first iteration executes. |
WF3 Activities with no direct WF4 equivalent
|WF3 Activity ||Note |
|ConditionedActivityGroup ||Based on limited use (my guess) this activity was not moved to WF4. |
|Code ||There is no code-behind file for workflows so there is no place to write code in the workflow. Create custom activities or use expressions where appropriate. |
|EventHandlingScope ||No real equivalent, probably b/c this is an activity that gets overlooked or people use the state machine instead. |
|InvokeWorkflow ||In the Beta, there is no activity like this one. One option is to host child workflows as WCF services and use the Send or SendAndReceiveReply messaging activities to start the child workflows. |
|Policy ||In order to use rules in WF4, create a WF3 activity with a Policy activity inside it. Create properties on the activity and use them in the policy definition. Then use the InteropActivity to invoke the WF3 activity and execute the policy. You can use the properties on the activity as input and outputs to the policy. |
|Suspend ||In WF4 there is more focus on having a “suspend on error” style exception handling, so direct suspend is not currently supported in the form of an activity. |
|SynchronizationScope ||Again, my assumption here, this was not used a lot by folks so didn’t get moved over. |
|Terminate ||No direct option to terminate, but exception handling has changed so that when a workflow throws an exception, you can abort, terminate or cancel it. |
|CompensatableTransactionScope ||In WF4, use a Compensable activity and put a TransactionScopeActivity in the body. |
|State, StateInitialization, StateFinalization ||There is no State Machine workflow in WF 4. |
WF4 activities with no direct WF3 equivalent
|AddToCollection<T> ||Helper activity to simplify declarative workflow development and manipulation of collection variables. |
|Assign ||Assigns a value to a variable – useful for declarative workflows. |
|CancellationScope ||Allows you to define a scope of work and the steps to take if that work is canceled. Replaces the cancelation handler in WF3. |
|ClearCollection<T> || |
|Confirm ||Schedules the Confirmation logic for a Compensable activity. |
|ExistsInCollection<T> || |
|Persist ||Explicit declaration of persistence from the workflow. Replaces the need for the PersistOnClose attribute on activities. |
|RemoveFromCollection<T> || |
|Switch<T> ||Provides multiple branches of execution each based on a specific result from evaluating an expression. |
|Interop ||Executes a WF3 activity in the context of a WF4 workflow. All public properties on the activity become In/Out arguments. Custom designers are not supported. |
22. June 2009 04:44
I had a great time at Dev Days doing the pre-conference session on WF, WCF and Dublin. It’s always fun trying to present on beta technology, and there’s nothing like having the first demo crash Visual Studio to start the day. :) Thanks to all who attended, you can find the demos here.