• 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

    Office Activity, or Wrapping Existing Code Quickly


    One of the nice things about the WF activity model is that you can pretty rapidly take existing code and expose that functionality out as a WF activity.  I was reading on Doug's blog, and noticed that he's got a series going where he will create an Open XML document (the XML based representation of the next version of Office documents).  He's got two parts so far, a Word document and an Excel spreadsheet creator.  I've taken those and wrapped those into WF activities that are available on the community site (Word document activity, Excel spreadsheet activity).  Make sure to check out the implementation notes on Doug's site, if you want to do some large scale number crunching in Excel, this would be a good start, but you would want to change so that it doesn't write out a single cell at a time.  Formatting and formulas are also not included in this sample, but you could easily extend to support these by diving through some other Open XML posts.

    The Excel activity takes in a dictionary with cell references and then its values (see code below).

             Dictionary<string,object> cellContents = new Dictionary<string, object>();
             cellContents.Add("A1", "hello World");
             cellContents.Add("B2", 34);
             cellContents.Add("C5", 232);

    There is one trick to remember and that's to add the reference to WindowsBase (on my machine, located at: C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\WindowsBase.dll) if you're looking around for System.IO.Packaging.

    When he gets a Powerpoint post up there, I will wrap that up in an activity as well.  If anyone extends these to support some more advanced scenario, or have a really nice design experience (think grid control), please let me know, and we'll get your version hosted on http://wf.netfx3.com!

    Let me know what you think!

  • 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

    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

    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

    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

    .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

    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

    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

    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, 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

    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

    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

    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

    .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

    Microsoft HDInsight Installation & Dependency Management


    It’s a rainy Saturday afternoon here in Seattle, and the kids are keeping themselves busy running around the Christmas tree, so I’ve got a little time to put together a post that addresses some questions that have come up a few times in the forums as well as in our internal discussion aliases for our on-premises install of HDInisght.

    We currently use the Web Platform Installer to take care of dependency management of the installation. 

    It’s important to point out that there are actually two key pieces that get installed

    The second has a dependency on the first.  The WebPI feed also contains a number of pre-requisites required to set up IIS and a few other things for the HDInsight dashboard.  Here’s what it looks like on a completely fresh Windows Server 2012 machine.  Most developer machines likely have some or most of the IIS pre-reqs installed.  We’re also working to clean up some of this to minimize installation & setup.



    Let’s talk a little bit about what’s in each one.

    Hortonworks Data Platform installer

    This msi includes the core Hadoop bits (Map/Reduce, HDFS), as well as a number of other Apache projects in the Hadoop ecosystem.  The full list included in the current installer are:

    • Map Reduce
    • HDFS
    • Hive
    • Pig
    • HCatalog

    Each of these projects is packaged into a zip file that contains a PowerShell script that automates the installation and setup of the component.  There are more components in Hortonworks Data Platform, and the teams are working to get these packaged and included.

    Microsoft HDInisght Installer

    This msi contains bits that are Microsoft specific, and may also contain additional Hadoop projects.  The current install (as of today) contains:

    • HDInsight dashboard
    • Sqoop
    • Isotope.js
    • Getting Started content

    These are packaged the same way as the Hadoop projects above.  Additionally, there is an installation PowerShell script here which will do some initialization of the single node installer, such as starting the services for the Hadoop components.

    Alternate Approaches

    The team discussed a number of potential factorings, and we very much welcome feedback here.  A few ideas that we’ve thought about:

    • Stable and Experimental packages.  This would allow us to set expectations around quality and stability of the bits. 
    • Decomposing every project into an individual msi
    • Integrating and building a Chocolatey package for these

    What Does This Mean For Me?

    What this means is that when you install HDInsight out of WebPI, you are installing two different msi’s.  We are revving the Microsoft msi every two weeks to pull in bug fixes (and very shortly include some experimental features).  The Hortonworks msi will be revved on a different schedule, as the team there decides to release an update.  We are partnering closely with the team there and so we will coordinate releases so that the combined installation will always work.

    More directly, this implies that if you want to uninstall completely, you will need to uninstall both packages from Add/Remove Programs:


    This also means that when we issue an update for the Microsoft HDInsight package, you don’t have to “lose” your cluster by uninstalling both products.  You should be able to simply uninstall & update the Microsoft HDInsight package. 

    The team would love to get more feedback on this approach, so, let us know what you think!

  • 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

    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

    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

    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 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.

Page 5 of 6 (148 items) «23456