19. November 2007 11:25
Hot off the presses, you can get it now from MSDN subscriber downloads or the trial version. See Soma's blog for more details on the new features, etc.
Surprisingly, being a WF and BizTalk guy, I'm least excited about the WF/WCF integration. I'll talk more about what I dislike later, but this is a happy post! I'm jazzed about the new web models in WCF if only because it provides a nice affirmation of the extensibility of WCF. I might not like all of the details of how they have accomplished things, but the CSD team has certainly shown that WCF is a solid platform with all the extensibility hooks you need.
I'm also excited to spend some time with LINQ now that I'll have the bits on my main PC (I have only put the beta on VMs or my secondary machine in my office). Like everyone else, I've done the simple examples to get some data out of a database and bind it to a UI, but I really want to dig in and see how it works after I have some code written and want to change something in the database. I want to see what the visual modeler/designer can and cannot do, and how using XML files might benefit me more than using the simple path that is there in V1.
The main thing that really sells this, and some folks don't know this, is that VS 2008 and .NET 3.5, build on the existing .NET 2.0 framework. So, it should be close to a no-brainer for organizations to upgrade because they can still build their 2.0 applications without having to worry about using 3.5 assemblies if they use the multi-targeting correctly in VS / MS Build. That's right, there are only additive changes and bug fixes in 3.5 and it uses the same 2.0 runtime that you are using today. So there should be no issues with breaking changes to core things like datasets and remoting like there were moving from 1.1 to 2.0. I'm upgrading all my boxes to take advantage of the new features and perf improvements. The only reason I could see for not updating is if you have other tools like BizTalk or Commerce Server that depend on the 2005 version. Then you can run both side-by-side, and maybe strip out some of the tools from 2005 that you no longer used to free up some space on your hard drive.
So, download, enjoy, and happy coding!
31. October 2007 14:48
If you attended my talk at the SOA conference on building composite activities, then you'll find the demos here. I really liked doing this talk and it gave me a reason to work on a composite activity that I wanted to write for a while: the RetryActivity. I started wanting to build this activity because when I teach people about WF and we talk about security on incoming data, there is always a question about how to handle failed authorization. When the user fails authz on the built-in activities today, an exception is raised which I can catch and handle in the workflow. The problem is that once I have done that catch, I close out the composite activity that caught the exception and I'm no longer listening for data. Well, if Bob tries to submit data and fails because he isn't supposed to, I don't want to stop listening for data, I want to keep listening and let Alice (who is authorized) submit data and interact with my workflow. The retry activity lets me do that by re-executing the child activities for a certain number of tries as long as an exception gets raised.
The way I implemented this was to spawn a new execution context for each iteration much like the while activity. In my case, what I use to determine if I'll iterate again is a combination of whether the child activity failed to succeeded, along with a retry count/max pair that lets me know if I should quit trying. Naturally, if there are no failures, I just close and finish. This allows me to use a single purpose activity for retry behavior instead of continually having use the while activity and check whether an exception was raised or not. It also makes it easier to manage the errors raised by the child activities and nulling out the CurrentException property so I can decide when errors should propagate beyond my activity.
Now, what I'd really like, related to security, is to move the authorization out of the workflow, so that authorization failures don't have to be modeled in my workflow unless I want them to be. That way my workflow doesn't even get invoked if you don't have rights. Something where I can declare the security in the workflow, and then generally be able to apply security to the queues that are used to communicate with the workflow. The "Silver" or WCF activities in .NET 3.5 do a little of this by reading the validation from the workflow definition and invoking it before sending the data to my workflow.
I'll be working on some other features of this activity to allow things like retry only on certain exception types, and the ability to put an interval between retries. If there are other features you'd like to see, let me know and I'll put them on my plan.
31. October 2007 14:00
I attended the Microsoft SOA and BP conference this week in Redmond where they announced their plans for future of connected systems (the division responsible for BizTalk, WCF, WF, AD, and much more). You can read more about the announcement and what impacted products are on the Microsoft SOA site. What I found most interesting is that this effort is not just about the Connected Systems Division (CSD) but also includes the Developer Division with the next release of Visual Studio and the .NET Framework, as well as the System Center products. The close alliance of those product groups is something we don't often see from Microsoft and can only be better for customers as we'll get a better story about using those products together.
Now being a BizTalk/WCF/WF guy, I'm pretty interested in how all of those technologies get impacted by the modeling and management tools as well as how the integration of these technologies continues to improve. It's only going to get better, but like all technology, we'll continue to have things to learn and understand about these technologies and how they get leveraged in different environments.
Most interesting to me is that the keynote included information stating that CTPs and Betas would be available in 2008. That makes this stuff much more real for the near term than say a 5 year timeline. Microsoft obviously won't be able to create the entire vision in a single release of each product, but the next phase is pretty exciting and being able to get your hands on the technology and see what they are doing and thinking can be critical as you plan for your future projects. It's also a great way to give feedback and help direct the product team about what is important to you as a customer. They really do listen, even if you don't always get exactly what you want, significant changes happen based on customer feedback.
We also had our two day pre-conference training on the new features in BizTalk R2 and .NET 3.5. In addition we had some fun talking about "Astoria" and BizTalk Services which are emerging technologies built on WCF and other CSD technologies that provide some really compelling options for messaging and data access. The class went really well and we're thinking about making it available as a seminar course for people who want to get a good deep dive into the broad range of technologies. Let us know if you are interested in the class for your company.
10. August 2007 03:39
My MSDN article on communications in workflow has been posted. In this article, I really wanted to try and focus on the low level communication so that people would understand what was going on under the covers. I don't both with the "local communications" pieces as they provide a simple abstraction on top of this underlying architecture.
I hope you find this useful. Any feedback is always appreciated, and if you have ideas for things you'd like to see in future columns, leave a comment here.
31. May 2007 16:43
OK, Reading actually, but if you are in the London area and interested in workflow, then this is your chance to get a thorough understanding of not only the how of WF, but the why. We will look deep under the covers of building WF programs, hosts and activities/components. Check out the course information for more details and to register.
July 30 - August 2
Microsoft Technology Center in Reading
31. May 2007 05:40
I'm excited to be hosting a BOF this year at Tech Ed on the tracking services in Windows Workflow Foundation. If you are interested in talking about tracking in general, the use of the included SQL tracking and query APIs, or custom tracking services to solve real business problems, then be sure to attend. I think it will be a lot of fun to see how people use this technology as it is the key piece to real visibility in your workflows. Hope to see you there.
Session details (check schedules at Tech Ed to verify time and room):
BOF24: Windows Workflow Tracking in Action
Thursday, June 7, 2007 at 4:30 PM
21. May 2007 09:43
One of my frustrations with Windows Workflow Foundation, is that there is no easy way in Visual Studio to create pure XAML workflows. The tools really drive you toward compiling the XAML into a .NET assembly. That, to me, defeats the purpose of using XAML. So I created a bunch of project templates
(console/library & state/sequence) that create pure XAML workflows using XAML activation. This means the workflows are not compiled, the XAML is just copied into the build directory. The console application project templates are setup in their program.cs to load these XAML files using an XMLReader and activate them that way.
I also started working on XAML item templates so you could add individual items to a project. The problem I am having is I don't think there is a way in the project template directly to indicate that the file should be treated as content type of None and copied to the output. I might have to write a custom wizard to get that part working. If anyone has any easier means of accomplishing this, let me know.
[Update]: I've updated the program.cs files in the templates to reflect some excellent feedback from my colleague Jon. The program now has template code to handle common exceptions when processing XAML files and also provides hooks to add types into a type provider. In addition, I figured out that the wizard for the item templates was only a few lines of code. To get the item templates working, you'll need to build the solution in the zip file and then either a) deploy the assembly to the GAC or to the VS\Common7\ide folder. It needs to be in one of these two places for the VS template engine to trust it.
Any feedback or questions, please post them in the comments.
14. May 2007 06:01
I'm excited to be presenting at the upcoming Tech Ed 2007 event in Orlando next month. I'm doing two different sessions for the Connected Systems Division (SOA track); one on BizTalk R2 and one on Windows Workflow. If you are heading to Tech Ed, I hope you'll join me if the topics interest you (which presumably they do or you wouldn't be reading this blog!).
SOA317 - Building Connected Systems on the Microsoft .NET Framework Using the Windows Communication Foundation Adapter in BizTalk Server 2006 R2
Tuesday, 8:30 AM
Deep Dive Chalk talk to follow at 10:15 in the Blue Theater
SOA223 - Custom Activities with Microsoft Windows Workflow Foundation: A Developer's Primer
Monday, 4:45 PM
14. May 2007 05:51
The June issue of MSDN magazine
is up on MSDN website and for the Foundations
column I wrote about the ActivityExecutionContext in WF. In my opinion, this extremely important aspect of WF gets little attention, yet causes a lot of the developer frustration. I hope you enjoy and that it is helpful. Feedback is always welcome.
16. February 2007 08:06
My first article in the Foundations
column on Windows Workflow Foundation is now live on the MSDN Magazine site. I find tracking to be one of the most powerful features of WF and easily the most frequently used extension model, outside of custom activities, to solve real business problems. The article was fun to write and I'm having fun finishing up the next installment on the ActivityExecutionContext. That one should be published in the June issue.
Enjoy and as always, any feedback is welcome.