I came across a blog posting that a buddy pointed out to me at the beginning of the month. I found it interesting since I speak a lot about "Why Workflow", however as I read the misunderstandings of what WF really represented through the posting, I quickly came to the conclusion that the author had very little experience with the framework. Now that I have some time to post, I want to answer a couple of key points that Tech Talk's post points out.
1. Let's discuss WF4.0..."Tech Talk" is right. At PDC Microsoft announced that WF4.0 would be rewritten however what does that mean? Well concepts will stay the same. Maybe the way we implement them might change, but we still get all of the rich features which gravitates guys like me to WF...Process visibility, tracking, persistence and so on. In fact, when I heard WF would be rewritten I was confused because this meant everything I had learned was in vain! No!!! I learned a new style of developing and modeling business processes. Learning what is involved with WF is the hard part, wiring things up is easier, infact Microsoft says that they are going to make building workflows even easier. So what does this mean for the applications that I have already written in WF3/3.5? Well I might not be able to extend current workflows using WF4.0, but if I think of workflows as being implemented as services, then autonomously I should still be able to interact with them.
2. What's Microsoft's strategy for WF? No surprise there! Build a framework that can be leveraged internally for building business process solutions while at the same time mainstreaming the framework within products so developers can take development to the next level. Try implementing business processes within SharePoint before WSS 2007. I have seen companies throw plenty of money at this process. But if you look at the possibilities of creating workflows in WSS 2007, possibilities are less endless. Reading between the lines, it is clear where WF falls with the future of development, and if I am not given a strategy on how to implement, which there are plenty of examples, I can still fall on the current tools laid in front of me and figure things out. As Microsoft continues to create new software, I think we will continue to see it powered more and more with WF! Comparing WF, "WF for WSS" and BizTalk...man, please! They are three different technologies for different scenarios.
3. What is a Workflow? Program level workflow, technical workflow or interactive workflow...hmmm, well a workflow is a process that is followed. We build workflows with code everyday so since we are talking about technology and we build business processes that introduce systematic with human events in order to process I think it is safe to conclude that whether it is a program level, technical, or interactive that they can all cross pollinate and essentially be the same. I do not want to put barriers on what a workflow can do.
4. Where do you store business logic? I love choices...maybe I have business logic already written that I want to let the workflow use. If so, I have a choice. I can call that logic through CallExternalMethod Activities, however I can also add these classes to the project or even add reusable code to custom activities.
5. When do I use a Sequential workflow over state machines? Easiest question at of them all...Who or what is driving the workflow? If the workflow is systematic and data and events are predetermined, I would go with a Sequential Workflow. Now we humans like to change our mind time and time again. If we need a workflow that not only flows down, but can flow up or can have the same state more than once then your best bet is a State Machine Workflow.
6. What is WF aimed at? The "Dudley Do Right" answer is, "To give transparency to long running business processes". What does this mean? Well if there is a process that you need to handle using machines (computers) and/or humans and you want to visually see what that process is because you believe in modeling your process, but more important this process can run for long periods (hours, days, months, etc.) and you want to build this process rapidly to consider the long process, meaning you need rules, a way to track and save process memory through tracking and persistence, then WF is your huckleberry!
7. "Communication concept with workflows is a mess" Not really, parameters are passed into a workflow when an instance is created and events can be fired using HandleExternalEvent Activities while a workflow is running.
8. "Interactive workflow with just 4 states things were getting messy." Curious what it would have looked in Visio or even on paper. I guess if things get to big, just reduce the magnification or fonts or something
9. "Workflow controller is unbearable slow" Ok, well you hit on something...maybe it could be faster. WF4.0 will address performance, but actually the solutions I have in production are working just fine. It's like buying a 27 foot boat, a 30 footer would be better!
10. "the workflow designer shipped with Visual Studio 2008 was ***unusable*** before service pack 1"....What? Come on man!
11. "If you want to user persistence or tracking you end up rebuilding the database frequently" Just remove the data...Of course, make sure you are in a dev environment
12. "The WCF-WF integration example published by Microsoft definitely belongs into the Hall of Shame" Not sure what to say here...just somewhat confused, never had a problem with the examples on MSDN. It is a calculator man! LOL
13. Cause 13 is just evil!
14. Finally..."Software definitely needs to get to the point where my business process reflects in software. There and only there I benefit from workflow driven development." Welcome to WF...you can do this now and you do not have to wait for WF4.0. However I am looking forward to what the team is up to next. I will not say that things are always peachy with WF, however there are things that I can deal with while the framework is being perfected. WF is a young framework so we are going to see bugs/issues, however let's be very clear and honest about using it. Please feel free to contact me if you ever need assistance with something you are stuck on or even general advice! Look forward to hearing from ya!