• mwinkle.blog

    Tracing Rules Execution


    So, we've got some examples of using the WF Rules Engine outside the confines of a workflow (see here, and here).  One feature you get inside of a workflow is that the rules engine will utilize the tracking service, if one has been provided, to log out information regarding rule execution.  Moustafa shows how you can use System.Diagnostics tracing in order to have the same effect when using the rules outside a workflow. 

    Take a look at this sample, especially if you are interested in incorporating the WF Rules Engine in a non-workflow application.  This would be something nice to attach a config flag or other setting to in order to enable rule tracing, which may be helpful if you are trying to debug a complex rules scenario.

    I'm working on putting some other rules samples together, if there are specific scenarios you are interested in, drop me a line and I'll see what we can do!

  • mwinkle.blog



    I'm moving on from my role as the technical evangelist for WF, but not too far.  I've joined the product team, working as a program manager (PM) for the Connected Tools team.  The job of the connected tools team is to provide all of the tools for the technologies inside the Oslo effort, including the WF designer.  As such, I'll be focused on the programming model for activity designers to use when they create WF activities.

    Oslo is interesting, as it represents the first real chance to look at the stuff we did in V1 of WF and think about it and find out ways we can improve on the experience.  .NET 3.5 was a very "constrained" release for the WF team, as we had only shipped about 12 months prior, so we were primarily concerned with adding functionality to what we shipped (the WF/WCF integration, for instance).  For WF, Oslo will be our first chance to take in a lot of the feedback we have heard (and keep it coming) to move things to the next level.  I'm excited to be part of that effort, especially from the designer side of things, as I see a great opportunity to simplify a number of things that a lot of our customers have been doing.

    It was a tough decision to leave DPE (developer and platform evangelism).  The job of a TE is probably one of the closest to geek nirvana one can achieve.  It was a bit odd when I was looking into this new position to lead off by saying, "I'm leaving the best job I've had."  I didn't do it because anything was wrong with the role, on the contrary, it is a perfect fit for anyone who is deeply passionate about technology and wants to drive that passion and excitement out to the rest of the world while working with an entire team of people focused on that goal.  My new role offered a really unique opportunity to have a large influence on the way people see WF (literally).  I'm also a bit crazy about making sure the tools are right, because that is going to be the bit of the technology most people will see first, and the way many people will interact with the product. Finally, when I look at the things I want to accomplish at Microsoft, shipping a product is a big item on that list. 

    As we're not talking publicly yet about a lot of the stuff we are doing in Oslo, I probably won't be blogging about it (that tends to be frowned upon for obvious reasons).  I'll still be posting about WF, and as always, am interested in your feedback (and will probably use the blog to solicit some as well).

  • mwinkle.blog

    Sweet Actvity Designer


    Mark Schmidt recently posted a great sample to the community site showing how you can implement your own activity designer to include animations on the designer.  If that doesn't sound useful to you, it's still a valuable sample to see how you can control the various design aspects of an activity using the designer attribute.

    Check it out here.

  • mwinkle.blog

    SOA Conference Questions


    I headed over to building 33 yesterday for the Microsoft SOA and Business Process Conference to host a Q&A session with some other people from the Connected Systems division (Clemens, Shy, Lee and Joe).  We had a pretty decent audience, and I wanted to repost the questions that I got here and answer them.

    Will Speech Server (or SharePoint, or other hosts) let me run activity x?

    The other big host to talk about right now is Office, in SharePoint.  The answer, in true consultant fashion is that it depends.  It will really be left up to the implementation of the host as to what behavior they will allow.  For instance, the SharePoint host will not allow the addition of additional services.  This has been done for performance, stability and security reasons.  SharePoint is also very particular about the activities it will allow to be executed, using the concept of a white-list in order to mark activities as able to be run.  You can imagine that allowing a code activity could be a very bad thing in SharePoint, and thus, it is not allowed. 

    These are all hosts for WF, their behavior is chosen to optimize for the scenario to be used in.  Similarly, you may have the same constraints, which you can enforce in your host, or maybe you have none of them, in which case, you don't need to implement any of them.

    Is the WF Rules Engine a Rete Engine?  (with follow on: If not, why not?)

    No, the WF Rules Engine is not based on a  Rete algorithm.  Check out Don's blog posting here.  There are a few relevent paragraphs I will repost here.

    There are plenty of resources out there that describe what the Rete algorithm does and why it is so often used in Rules engines. At the end of the day, Rete is an optimization. You don't need a Rete engine to implement a forward-chaining rules engine; however, the Rete optimization may improve the runtime performance of a Rule Set. That's what optimizations do. In particular, Rete reduces the number of predicate evaluations by remembering the most recent value and re-using it on subsequent re-evaluations.


    I certainly concede that there are many examples of Rule Sets that contain a lot of common predicates. In those cases, a Rete-based Rules engine like BRE will crush a non-Rete engine like WF Rules. However, in cases where there are few common predicates, the reverse has also been demonstrated: WF Rules and its non-Rete execution mechanism will crush Rete-based BRE.

    My point is simply that Rete is an optimization strategy that is not necessarily appropriate for all Rules-based solutions. For WF Rules, we placed much more importance on how much you can express in your Rules, how easy it is to express it, and how well it integrates into Windows Workflow Foundation and the .NET framework.

    If you're interested in more things about rules, Kavita emailed me the other day to let me know the team has started blogging here.

  • mwinkle.blog

    Did you hear the news, .NET 3.0 is live


    Things got signed off last week, and early yesterday (depending on the timezone), the RTM build was published on MSDN.  James put the details up on the community site, and there's been a ton of people headed to check it out (look at all the trackbacks on James' post).  Thank you to all of the bloggers who have picked up the story and are passing it along.

    So, now what?  Well, there's still plenty of work for me to do, including looking forward to vNext (the great part of evangelism!)  In the short term, I'll be presenting today on Reliabilty, Scalability and Maintainability of workflows hosted in IIS here in Barcelona. I won't be talking about the IIS scenario nearly as much as the other three parts, as well as discussing some performance information.  After the talk, a number of us are headed to a soccer game, which I'm looking forward to.    Tomorrow, Paul Andrew and I are conducting a drop-in clininc for WF, so, if you got questions, stop on by.

    So, what's next for you?  Get the bits, get some training, and start writing workflows!


    [updated] realized I had a problem spelling "hear" in the title :-)

  • mwinkle.blog

    VS 2010 RC Is Available


    We’ve been hard at work here in Redmond (and with our team in Shanghai) working on getting WF ready for release.  We’ve made a ton of progress in the RC build that was made available yesterday, please download it and check it out.  Also, and in important bold text, if you have feedback, please, please, please file an issue on Connect so that the team can look at it right away.  One thing that I want to point out about Connect is that it is not a vacuum, the entries there go directly into our bug tracking system, which we look at daily in our various shiproom meetings.  If something isn’t working right, please let us know!


    We’ve fixed a number of issues that came directly from Connect in this last milestone, including some areas that revealed some gaps in our testing.  Your feedback is making this better.  For bugs that we’ve marked as postponed, as we start planning for vNext, we will start going through those to figure out the areas we need to improve on. 

    It’s cool the home stretch, this morning I presented to our support team to get them prepared to handle any PSS incidents that occur.  It’s great to see the release coming together.

  • mwinkle.blog

    Look Mom, We Made CNET!!!

    The workflow Technical Learning Center appears in CNET's "The View From TechEd 2006"
  • mwinkle.blog

    Mechanical Turk Activities


    Mark Blomsma has put together some activities and an article which shows how to interact with Amazon's Mechanical Turk with WF activities.

    I've linked to the sample on here.

    Cool, cool, cool

  • mwinkle.blog

    .NET Rocks does Workflow


    I'm still digging out from TechEd, but while I did that I fired up my podcatcher and found a new episode of .NET Rocks waiting for me, with a title that caught my eye.  I then found that on .NET Rocks TV, June has been the "Month of Workflow."  Check it out!

  • mwinkle.blog

    Matt and Paul talk WF


    A few weeks back Paul Andrew and I sat down with Ron Jacobs to record this Arcast about WF. 


    The funny thing is that a few weeks before that, Paul Andrew and I sat down with Ron Jacobs to record that same Arcast, except there was a problem with the microphone and Ron's voice didn't get recorded, so it was as if Paul and I were extemporaneously responding to the voices in our heads about WF.

    There are more questions to go through, so we will be doing at least a part 2.  Any feedback or other questions you want to see answered? Let me know! 

  • mwinkle.blog

    WF & Sudoku


    I would be remiss if I did not point out this, a sample showing a nice WPF interface, WCF peer-to-peer communication, and WF to handle the logic of game generation.

    I'm going to take a look at it and see if we could use rules as the validation mechanism, that way there is a "server" and a "client" workflow component to the application.

  • mwinkle.blog

    WF, BPEL and the Dark Side of the Moon


    There are a few common questions I usually get when I talk about workflow:

    • That's great, but I can't use SQL Server, can I use foo ?
    • How can I use it to re-unite Pink Floyd for one last tour?
    • What about BPEL support?

    Question 1: Check out the Persistence Service sample in the SDK.

    Question 2:  Man I wish I could say yes, but that's probably a feature that might show up after Orcas if I have my way.

    Question 3: We've done some dancing around this on timelines when it has been brought up in the past, but Paul has the scoop here.  I think this is a great thing for our customers, the support for BPEL not only allows the use of additional process defintion artifacts in the enterprise, but is a great demonstration of the flexibility and extensibility of WF.

    Paul also talks about how this also impacts BPEL in BizTalk Server.

    I'm going to be filming a Channel9 video with the team behind this in the next week or so.  It's Vista Week on Channel9, once that's done I will try to get it posted quickly.

  • mwinkle.blog

    TechEd Workflow Chalk Talks


    One of the things that worked out incredibly well at TechEd was our chalk talks.  We had a small theater set up with about 20-30 seats, a whiteboard and a small monitor for presentations.  A number of the chalk talks on Windows Workflow Foundation were "steal a chair" events, where more people showed up than chairs.  These talks were a great chance to dive deep into some specific areas of functionality, answer questions and head on over to the whiteboard to work through some design issues as well.

    Now we have the talks posted on the community site, so check them out.

  • mwinkle.blog

    Hanging in the Speaker Room


    No One of the best parts of any conference is hanging out with the other speakers and osmosing off some of the collective brainpower in there.  Some times it is big concepts, other times, it's the little stuff.

    Like my new favorite feature of Vista (Show Desktop Icons)


    No more need for a folder where I have to hide all that other stuff on my desktop.

    Right click, view, ShowDesktop icons.



  • mwinkle.blog

    Where Are the Tools?


    I get a number of queries about when WF will ship, or (more frequently) when the tools will be ready.  The answers are "done" and "done."  I've had two internal requests in the last week along these lines, so I wanted to try to state this as clearly as possible.  The tools for WF are released and supported.  The tools for WCF and WPF are in CTP and will continue to be updated in a CTP like fashion.

    You can get the bits from the list of links here.

    It is important to point out that the "Visual Studio 2005 Extensions for .NET Framework 3.0 (Windows Workflow Foundation)" is shipping and supported, while similarly named "Visual Studio 2005 Extensions for .NET Framework 3.0 (WCF and WPF), November CTP" are being published as a CTP, so things can and will change with the WCF and WPF tools.  Let me say that one last time in case you got caught up in the names: 

    The tools for WF are released.  You can use them today. 


  • mwinkle.blog

    .NET 3.5 on Channel9


    Following the big announcement last week, I got tapped to do a quick c9 interview with Shawn Burke.  Check it out here if you have 11 minutes or so to spare and want to see what the .NET source debugging will look like.

    Additionally, I see on the homepage that Jack is talking about the add-in framework in the latest video there.  Folks, if you work on a project where you want to allow add-in functionality, or have the need to version components separately and distinctly from the host, you need to check this out.  There are a few moving pieces and parts, but if you need to enable this scenario, investing up front in thinking through these bits and pieces will be enormously helpful.

  • mwinkle.blog

    Back From Barcelona


    I arrived into SEA yesterday around 3, so I'm feeling a little bit of the 'lag from my week in Barcelona.  A few things to point out:

    • Tim has a fantastic "Vista on the M400" post.  The little dude's getting an upgrade while this gets typed, results in a future post
    • Kudos to who-ever put together this diagram.  I think it could be made a bit better by having links to the section of MSDN which further explains how to dev, say, win32 or hybrid applications, but it's a nice way to represent and download the bits you're interested in. 
    • The long awaited WF perf whitepaper is available, as Paul points out.  As Paul mentions, the 10K empty workflows per second is not a number one should run out a room assuming can be obtained, but there are a few things that I really liked seeing:
      • What happens when we scale out?
      • Should I implement a while loop in my code to loop 1000 times, or should I use the While activity?  This is one of my favorite examples when people ask "How should I think about moving to a WF driven design?"  I like this paper as it explains things in terms of trade-offs.
      • Finally, beneath figure 13, the discussion of the overhead involved with using the tracking service is discussed.  This is important, and it shows the difference between batching and not batching the "transactions" of the tracking service.  Transaction is mentioned in quotes as these have little to do with System.Transactions, rather when tracking data is written to the database.  The number to notice here is not just workflows per second, but also the increased load on the SQL Server.  Again, these are just some things to think about when you start discussing "perf" with workflow.  The papers about 50 pages long, so there's a bunch of stuff to see there.  Check it out!
    • Thanks to everyone who dropped in on my sessions in Barcelona.  I'll be posting some followup information when I get a little time to recover (or at 3:30 tomorrow morning when I am wide awake and thinking it is lunch time in Barcelona :-) )
    • There's also this page, which is a nice gateway into downloading all sorts of the things we talked about at TechEd.
  • mwinkle.blog

    So, maybe you're not going to TechEd this year...


    No problem, you can still take part in the sessions.  Dennis will be doing one that talks about using Workflow Foundation and WCF together, always a topic a lot of people ask about.  It just so happens that talk will be broadcast live.  There's also a talk broadcast live on ASP.NET and WF.  If that's not what you're looking for, there will be a lot of sessions broadcast, check out this page.

  • mwinkle.blog

    Speech Server Video on Channel 9

    Channel 9 has just posted a video showing off the new version of Speech Server.  Speech Server is one of the applications from Microsoft built using Windows Workflow Foundation.  As you can see in the video, they have created activities related to speech tasks, and allow you to arrange them using the workflow designer to give them drag and drop capabilities to design a speech app.  The goal here is to make authoring speech applications a whole lot easier.  The workflow designer makes its first appearence at 8:05 in the video!

    Check it out!

  • mwinkle.blog

    Yet Another TechEd Post


    There is one additional chalk-talk that is not in the previous list.  In addition to chalk talks that dive deep into technical areas, we've got one from a customer who has just wrapped up a project that deployed Workflow.  Marc has been working with them on this, and they're going to talk about what they've done.  This is a great chance to hear about WinFX from someone who has already deployed it in their production environment.  The details are below:


    Abstract: Credit Suisse Group is a leading global financial services company, providing clients with investment banking, private banking and asset management services worldwide. Like in most enterprises, Credit Suisse provided their developers with physical machines for development. Issues such as combination of authorization, physical delivery times and compliance-related workflows led to slow development timeframes. Their R&D group built an extremely extensible self-service virtual-machine provisioning system that enables software developers in a fraction of the time to easily, securely and rapidly provision on-demand disposable workstations, servers, and multi-tier environments. Credit Suisse will exponentially increase software developer productivity, drastically lower IT costs and ensure compliancy with continuously stringent regulatory requirements. The solution uses Windows Workflow Foundation, Windows Communication Foundation, and Virtual Server.

    Speaker: Leslie Muller (Architect - Credit Suisse Global R&D)

    Location: Thursday 6/15/2006 from 10:15-11:30 in Theatre 2.

    If you can't make it to TechEd but are interested in this, please contact me and I'll see what I can get to you!

  • mwinkle.blog

    Great Workflow Quote


    From Brian R's blog:

    "Workflow is both cute and pretty"

    A little more background on the quote will be coming in my next post!

  • mwinkle.blog

    N of M Question (Why Use ActivityExecutionContextManager?)


    In this post, mstiefel  asked the following:

    # re: Implementing the N of M Pattern in WF

    Since you are not looping, do you have to use the ActivityExecutionContextManager to generate a new context for the child activities? Couldn't you use the context passed into the Execute method?

    Friday, July 06, 2007 7:54 PM by mstiefel

    If I were creating a parallel activity, and simply wanted to execute a number of distinct child activities, I would just use the passed in context as you suggest to schedule execution of each of the activities.  The difference here is subtle, and that is I don't have distinct child activities, I have one child activity which I need to clone m times and execute those cloned children separately.  The need to create the context is so that each one of those clones maintains it's own execution context, what variables are where, who is in what state, etc.  This is important while executing, and while after completion in the need where I want to compensate for the individual activities.

    This line

    ActivityExecutionContext newContext = aecm.CreateExecutionContext(this.Activities[0]);

    is what will cause the activity to be cloned, allowing me to schedule the execution of the clone, and not the template activity (which, incidentally, will never be scheduled, leaving me with m+1  copies of the activity.  This is the same behavior that I get in a While or a Replicator (or the CAG, depending upon how it is configured).  A state machine workflow will do a similar thing as I may re-enter a state multiple times. 

    If, instead of allowing a user to specify the list of approvers and dynamically creating the activities, I designed it so that a user would have to drop and configure an activity for each approval (similar to the parallel activity), I would have used code like this:

    // Code to schedule distinct activities in parallel, aka code similar to the parallel activity
    protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
            foreach (Activity activity in ChildActivities)
                // i is some counter I use to track how many branches there are so I know when
                // I am done
                // I'm interested in what happens when this guy closes.
                activity.RegisterForStatusChange(Activity.ClosedEvent, this);
            return ActivityExecutionStatus.Executing;

  • mwinkle.blog

    WF and BizTalk Server 2006 R2


    One of the cool things coming in BizTalk R2 is a tracking service for WF that talks to BAM.  Jesus Rodriguez has put together a walkthrough of using the BizTalk Server R2 BAM interceptor for WF.

  • mwinkle.blog

    Solution Showcase Launched


    Head on over to http://showcase.netfx3.com and check out the solution showcase.  You can dive down and search through the tag cloud to find solutions that are interesting to you. 

    If you'd like to have your solution featured here, go to this form and submit the information.  We'd love to find out more about how you're using the .NET Framework 3.0 technologies, and let you get the word out about your solution.

  • mwinkle.blog

    WF Beta 2 vs. Beta 2.2


    As announced on the community site, Windows Workflow Foundation (WF) Beta 2.2 is available here.

    A very important point to note: You can not install this on top of an installation of the February CTP of WinFx.  So, if you have WinFx installed you will have to uninstall it, all the pieces and parts, in order to install Beta 2.2. If you are focused on a solution that only leverages WF, and not WCF or WPF, and want to upgrade to a newer version of the bits which are closer to the version which will be released, this is the path for you.  If you are building a solution that leverages additional WinFx technologies, you will want to stick with the February CTP. 

    The install of Beta 2.2 contains all of the components (see below) of a WF install, and is titled the "Microsoft Visual Studio 2005 Extensions for Windows Workflow Foundation Beta 2.2."  That's a mouthful.  For Beta 2.2, this is the only thing that you need to install.  A summary of the changes are contained here.

    On to a completely different topic.  I've also gotten some questions about why the WinFx install contains what seems like 3 different installs.  The simple answer is that there are really three components to WinFx (and thus, applies to WF).

    • The WinFx runtime:  This is all you need if you want to run WinFx applications.
    • The Windows SDK: As WinFx is a platform component of Windows, it has a Windows SDK component, consisting of samples, documentation, etc.  This is what you need if you want to build WinFx applications. 
    • The Visual Studio Extensions:  This is the design component that integrates with Visual Studio and contains documentation to that effect.  This is what you need if you want to design WinFx applications in Visual Studio.  A similar component is the CTP of the "Orcas" designer for WPF applications (available here).

    So, three pieces: runtime, SDK, designer, and now you know why they are there. 

Page 5 of 6 (148 items) «23456