Technical Content of this issue - 4 out of 5

In this issue - A little InfoPath, then Workflow, Workflow, Workflow

Looking Back at 2003

I thought it might be interesting to take a look at the projected release dates from PDC 2003 and compare them with where things stand in 2005.

Product 2003 Projected Release Date Latest Projection
Longhorn/Vista None, Beta 1 in late 2004 Late 2006
Whidbey Late 2004 Late 2005
Inidigo/WCF Late 2004 (after Whidbey, no later than Longhorn) Late 2006
Yukon/SQL Server 2005 No later than Whidbey (thus 2004) Late 2005

Of course, it's jerks like me doing comparisons like this that makes companies like Microsoft very reluctant to ever give out a date. Hee Hee.

My Flight

I've been out here a couple of days already, but I haven't mentioned anything about the actual trip. Long time readers will remember that I always find something to bitch about when I travel. The flight itself was decent, the middle seat was free, although the lady in front of me kept her seat back the entire flight. The last time I flew out here (in 2003), the movie was "Under the Tuscan Sun," according to IMDB - "While on vacation, a just divorced writer (Diane Lane) buys a villa in Tuscany on a whim, hoping it will be the start of a change for the better in her life." Hmmm. A fine film, I'm sure, but not one that probably targeted my particular demographic, so I passed.. On the way home we were scheduled to see something like "Runaway Jury." At the beginning of the flight, the flight attendant announced that the entertainment package did not get loaded, but they would be showing "Under the Tuscan Sun." So what is the movie on this year's trip across country? "The Sisterhood of the Traveling Pants." Now I am sure that some readers might find the term "chick flick" perjorative, so I'll just say DON'T ANY MEN FLY ANY MORE!?!?!

Today's Sessions

Before starting on today's sessions, I have one tidbit I left out yesterday. The Vista browser will reformat before printing, meaning it will no longer cut one inch off the right side.

General Session - LLLLLet's Get Rrrrrready to Wwwworkflow!

This morning they finally formally announced the release of WWF, Windows Workflow Foundation, acknowledging the less than well-kept secret. They also announced a set of new designer tools, leaving the Developer focus of the conference for a little while. They started with a demo company named Fabrikam and showed a cool web site created with the designers, uploaded orders through web services and processes managed by WWF.

Windows Workflow Foundation

I'm pretty interested in this stuff, so we're probably going to see quite a bit of it. I'm going to skip all the platitudes that were presented about how important workflow is, I'm figuring the sophisticated readership of this newsletter knows this. They did a quick Workflow Demo, but I'm not going to write it up here as I attended several WWF sessions later today which covered the topic in much more detail.

Check out more on workflow at

(ya know, watching all these presenters come across the stage reminds me that Microsoft folks get an incredible number of pretty cool shirts)


The introduction of the Windows Presentation Foundation makes really cool interfaces (of course, they use the words "compelling" and "rich") possible - but coming up with them is beyond Visual Studio (and most developers - have you seen how we dress?). The new designer tools appear to be designed to help reach the potential of WPF. It looks like teams will have to allot budget for designers if they want this really cool stuff. There are three tools they are introducing this week-

  • Acrylic - appears to be a really good photo editor, allows isolating an image (did a demo of isolating a single head from a photo with a busy background, then feathered the edges). Combined layers, used styles to make it snappy. Used something called LiveEffects to add texture to the solid background. I'm not a Photoshop guy, so I don't know how these capabilities compare to Photoshop. I was able to obtain temporary access to the alpha version - you can see my results on our Photo Album. (I know that I am going back to the well alot with this running gag, but it really tickles me).
  • Quartz Web Designer - appears to be a high-powered web designer that integrates very well with ASP.NET 2.0 and master pages, controls, etc. The demo showed adding ASP.NET controls and hooking to databases - although I'm not sure that designers would have these skills.
  • Sparkle Interactive Designer - A deluxe design tool for XAML/WPF apps. Does things like make it easy to replace standard radio buttons with icon based buttons just by dragging and dropping. It appears that this is smart client oriented because he keeps talking about WPF which can't be counted on in a thin client. He created some really cool animations with very little effort - implemented as a control that can be embedded in another application. Sparkle uses same MSBuild sub-system as Visual Studio 2005. His results were integrated with an existing pages with a couple clicks.

As I will probably not be attending any sessions on them during the week (which is probably obvious from looking at the snappy design of the PDC 2005 Newsletter home page), anyone desiring more info on these products can get it here-

Visual Studio Tools for Applications

VSTA provides the ability to add Visual Studio like tools for adding code hosted in your own apps. This appears to be the successor to Visual Basic for Applications. They did a demo showing how VSTA capabilities in AutoCad could be used to write additional code to come up with a price estimation for a widget designed in AutoCad. Once again, this wasn't terribly interesting to me (the criteria that determines our editorial content), but I will keep a look out for links with info for anyone who might be interested.

More General Session Info on Office 12

This session went deeper into Office 12. The demos focused on Enterprise Content Management (ECM). The demo moved fast and was all over the place, but I will try to list the things that jumped out at me.

  • Lot's of review of existing Sharepoint technology
  • Showed some neat integration of Infopath and Word to create a new document, also linked to Sharepoint for lookup info.
  • Created a workflow for a Document Library - integrated into Sharepoint. This was my first look at something that I looked forward to learning about this week. The reference was fleeting, but intriguing.
  • Showed creating a workflow in FrontPage - my thought, "Wait a minute, just how many ways to create a workflow are they going to deliver?" It's like their throwing a ton of [stuff] at the wall and seeing what sticks. This looked to a very different style of designer than we saw earlier.
  • Showed integrating Infopath with Sharepoint
Breakout Session 1 - Creating Browser based InfoPath Forms...

This has been the number one request of InfoPath customers (including NASD), according to the presenter. InfoPath 12 will have browser enabled InfoPath forms - Intranet, Extranet and Internet.

  • This was our first Look at InfoPath forms in a browser - it was unbelieveably cool! Calendar controls, Repeating fields. They showed it in FireFox. They showed it on a mobile device (well, a software simulator). It's everything I dreamed it would be. Delenda est Adobe!
  • Built on top of WSS (Windows Sharepoint Services - not Portal) platform as an ASP.NET application.
  • Supports browsers IE 6, Netscape, Safari, FireFox; running on Windows, Mac, Linux, Unix - Mobile*
  • Forms are deployed to Office 12 Server (interesting - I need to learn more about what this is)
  • The designer has a "compatibility mode" to ensure that you don't use any features that don't work in the browser forms - similar to what we see in the Adobe Form Designer
  • The same definition works inside the desktop client - so if you had an engine in the DMZ and wanted to use the same presentation on your internal network without poking a firewall hole or deploying another server you could do that.
*Today's Interoperability Moment

Once you have the form template defined and deployed, the process for viewing it is-

  • The template is deployed to the Office Server
  • Desktop Client opens from server, the template is downloaded. The machine can be disconnected and continue to run.
  • When a browser requests the template, via ASPX, a Javascript and data array is downloaded to the browser. An HTML view is created in the browser. All functionality is executed in the browser (repeating fields etc.) If server functionality is required, a postback occurs and business logic is executed and updated data is downloaded to the browser.
  • It appears that the layout in the browser is all flow control rather than absolute - I can't see how repeating fields would work otherwise.
  • When a user clicks submit in the desktop client, the client sends XML directly. When a user clicks submit in the browser client, the template sends an HTTP post.
  • When a form template is requested, from share or document library, the system always looks for smart client first and, if it doesn't find one, then uses the browser presentation.
  • Lots of deployment capabilities for management and versioning for centralized management.

As far as new technical details of InfoPath in general as well as the browser capabilities-

  • There is a new Object model in InfoPath 12 - it is now fully managed (CLR), so no more COM interop required
  • The XML parser is now the .NET System.Xml, there is no more dependence MSXML.
  • Upon publication, the template code is scanned for best practices.
  • Assemblies should be strongly named to avoid versioning issues.
  • There are three levels of trust and security - Restricted - deployed via email only, no data connections, not for browsers, very limited access; Domain - Deployed sharepoint library, connect to own server, no browser; Full Trust - Admin deployed, connect to any server
  • There are more authenticaion protocols in InfoPath 12 - Anonymous, Basic Auth, Kerberos, Single Sign-on, Forms-based. Not sure how this would work with an enterprise authentication system such as Cleartrust, for instance.

Office 12, more specifically the Office 12 Server, introduces a new concept called Data Connection Libraries. These are centralized managed libraries of data connection files for use in multiple apps based on UDCs (universal data connectors) - an XML based connection configuration file. Using these separates any data connection from your form so you can change it without reploying your form.

An important issue when deploying forms on the Internet for most companies is being able to maintain their branding on the site while taking advantage of the tool. I was interested sas to how this would work with InfoPath and they answered the question nicely-

  • On your site, obtain the form via an href to an ASPX page that ships on the Office server. The link has many options - what to open in, Where data should be saved, specify navigation when done
  • If you want to embed the form on your own page, you can use an ASP.NET control and the control will present the form. By placing the control on your page, you get the full InfoPath form functionality in your own web page.
  • You can react to the form in your ASPX page - to get this, your ASPX page must be running on the Office server.
  • He showed some interaction with ASPX pages - very cool. Via code, he had full access to fields on the form. I didn't see him access the raw XML, but I can't imagine they didn't make that possible.
  • In terms of adding functionality on the server in response to user actions, it was possible to determine which buttons were hit within the code, then call a programmatically determined action.

Having spent several years working with (struggling with) a competing product, I can't begin to describe my excitement at the polish and possibilities of this product.

I am still trying to determin if a form can have multiple pages, I tried the track lounge but the InfoPath guys were still not back from the session.

Note - this was going really fast and I was taking notes as fast as possible. I didn't get all details and some minor details may be incorrect or glossed over. The major points are correct.

The Top 10 Annoying Things about my Fellow Attendees

1) Session hoppers - not folks that just get held up and show up late, but folks that go from session to session. The come in late, crawl over you to a seat. Then 5 minutes later the get back up and crawl back over you when they leave. It's amazing how many of these guys there are.

2) Cell phone talkers - They seem to think that if look downward while taking their cell phone calls no one can hear them. Yes, we hear you - go out in the hall.

3) Folks that sit together and carry on a conversation about the presentation - Not the occasional short exchange like "Wow" or "That was cool" or "is he wearing pants," but long, involved conversations.

OK, on my budget I could only come up with 3, not 10.

Breakout Session - Introduction to Workflow In Windows Applications

Very popular topic - looks like the room is going to be pretty full. It's actually not one of the bigger rooms, they might have a problem when Don Box speaks in this room tomorrow. A bit of a rowdy crowd as well - lots of hooting and cheering. Kind of like Rodeo meets PDC.

Three points they highlighted-

  • WWF is a single workflow technology for Windows
  • This is a framework for building Workflow into applications, to be released as part of WinFX
  • Brings workflow into mainstream .NET development (hmmm - seems like MSFT has just discovered WF and is in a bit of denial about it having existed from other vendors :-)

How does this relate to BizTalk? BizTalk is a premium BPM server, distinct server product. WWF is a framework to be programmed on. The plan is that the next version of BizTalk (after 2006) will be implemented on WWF.

Workflows must run in a host process - Sharepoint is a host process for instance.

WWF ships with-

  • a set of Out of the box activities - things that a user or system can do that are combined to make the Workflow. Custom activities can also be created (see the next breakout session)
  • A runtime engine
  • Runtime services
  • A Visual Designer
  • A persistence service for SQL Server. Persistenc is required to handle long running workflows, but it does not have to be SQL Server, you can provide a replacement. It will be interesting to see if folks like Oracle come up with a persistence service - one aspect of BizTalk that many have felt was a drawback was it's dependency on SQL Server (not me, I love SQL Server - I can't get enough!)

The first demo he did was create a workflow using the visual designer in Visual Studio. He used Visual Studio 2005 B2 and WWF B1, all bits that we currently have in hand.

  • Once WWF is installed, new project wizard includes Workflow options
  • The Workflow Designer looks just like the BizTalk designer, but with different options surrounding it.
  • Like visually designing a form with controls - the visual design creates real code behind the scenes. This code can be hand generated or the workflow can be created programmatically at run time if desired.
  • A workflow is a class, inherited from something like SequentialWorkflow
  • The constructor configures contained activities that comprise the workflow (similar model to forms and controls)
  • Once the workflow is created, it must be hosted. The simple console host he created required creating a workflowRuntime class and add the workflow object in your host
  • When running, debugging can be done in the visual designer and/or in the code

The demo brought more squeels of delight from the crowd - I was starting to think there were shills among us.

There are four ways to create a workflow-

  1. Markup Only (XAML - used because even though this isn't presentation, it is a similar serialization of objects)
  2. Markup and Code
  3. Code Only
  4. Application Generated - create XAML and choose code modules at run time

These go into the workflow compiler (wfc.exe) and the result goes to C#/VB Compiler goes to a .NET assembly.

A few points about activities-

  • The are the basic unit of execution
  • There are 3 kinds - Basic, Composite and root. I will give more details on these in the next session.
  • Activities are Implemented as classes - properties, methods and events.
  • Activities can be compiled into the workflow assembly or packaged separately for reuse in multiple workflows (that's how they can provide standard out of the box activities )

I thought it was interesting that workflow objects are all defined viainheritance from a workflow object hierarchy rather than the attribute model used in other new initiatives such as WSE and WCF. There are some attributes to define behavior, but the root of the functionality is inheritance.

Next demo was a transction type account with debiting and crediting a checking account. WWF transactions use the .NET Enterprise Services functionality to interact with the DTC.

Microsoft's ultimate dream is activity packages of domain specific activities for various business domains and third party packages (Peoplesoft, etc.)

Within a workflow, flow control is flexible:

  • Activities can be set up to execute sequentially - A then B then C no matter what;
  • Activities can be State Machine driven - processing order is determined by external events
  • They can also be rules-driven based on data state. The rules engine technology they use is similar to BizTalk, but uses a different namespace and has been simplified.
Ode to Don Box (without the Iambic Pentameter)

Longtime readers of the newsletter know that I have tremendous admiration for Don Box, as a speaker and author. Today Dmytro saw him present for the first time - "It was alot of the same stuff from yesterday's presentation, but much, much better." Don also gave us the quote about the HTTP qualities of an application yesterday. In his honor, I am lauching a new section - The Don Box Quote of the Day. Watch for it.

The Don Box Quote of the Day

"Indigo is Lubrication for Software"

Breakout Session - Extending Workflow Capabilities with Custom Activities

This session started out talking about activities in general and the three types defined in WWF-

  • Basic (opaque/leaf nodes) - single activities
  • Composite - a combination of Basic or other Composite activities
  • Root - special composite that is a unit of activation

The first demo they did was the "Hello, World" of activities (in this case, posting a short message to a blog)-

  1. Open up a project in VS and choose New Activity from the Add New Item dialog
  2. At this point he imported existing an DLL that actually does the blog post (pre-compiled)
  3. He created 2 private member variables in the activity class,Title and Content, then added property accessors with Visual Studio's new refactoring capabilities (more on refactoring later).
  4. Then he overrode the the Execute method of the activity, calling a static method in the blog code that he referenced earlier. The method took the two properties he defined as arguments - posting the Content with the specified Title. After calling the blog code, the method returns the status of the activity from the Execute method as closed.
  5. Once he built it, it automatically became an activity on his toolbar that he could add to his designer.
  6. After dragging it to his designer surface, he could set the properties he defined in the properties window for the activity.
  7. Done - pretty cool.

At that point I figured the session was over - we'd built an activity. He seemed to think he had more to tell us, so we didn't get to leave early. Darn - there's free Oreos out in the hall.

There are several components that can optionally be associated with an activity-

  • Designer - defines the graphical representation of the activity on the designer surface and rules surrounding the use of the designer
  • Validator - allows you to validate the structure of an activity (eg - restrict child activities, etc.)
  • Serializer - For persisting the activity when it is long running
  • Code Generator - allows you to participate in doce generating

The next demo was showed two of the components in action.

  • First he created a new activity
  • This time he added a new designer class to the namespace in the same file..
  • He then overrode CanInsertActivities in the new designer class - in this routine he wrote code to return false if the activity type was delay, otherwise return true.
  • Then he added an attribute to the activity attaching the designer to the activity.
  • Then he showed that you cannot drag the delay shape onto the activity on the designer surface - the CanInsertActivities method is called and rejects the attempt to insert the designer.

At this point he showed us the underlying code and went a little further:

  • In the code he created a delay activity and added it via the code - then it worked. Through code he was able to bypass the designer limitation.
  • To prevent the delay from ever being added to the activity, he now created a new class derived from SequenceValidator
  • He then overrode the Validate method in the new Validator class to iterate through the activities and fail if it found a delay activity
  • He attached the validator to the activity with an attribute
  • The designer then showed that the delay activity was an error.

An activity has several states that it moves through - the state can be changed by the runtime calling into the activity or by the activity's code itself.

  • All activities start as Initialized (when a workflow is started, the runtime calles each activity node in the tree to Initiailize itself )
  • Then the runtime calls the Execute method of the activity, putting the activity in the Executing state
  • Activity will then change it's own state to Closed somewhere along the line.
  • The runtime might call Cancel before the Close, putting the Activity in Canceled state.
  • If the activity was transacted, after the activity is in Closed state the Runtime may call Compensate, leaving the activity in a Compensating state. When compensation code is done, the Activity changes its state back to Closed

For composite activities, child activities all execute in the same Activity Execution Context. Each child activity then also has its own Activity Execution Context as well. These are then accessible through a collection of current contexts.

There are three Activity Composition Reuse Patterns

  • White Box - Children activities are visible and he structure is editable
  • Grey Box - Children activities are visible, but not the structure is not editable
  • Black Box - Children activities are completely hidden to workflow author

These patterns are controlled with Editable & Visible attributes on each child activity.

Properties of the children can be exposed through the parent via a mechanism called Property Promotion. Changes to the property at the parent level are then transmitted to the child.

Breakout Session - Developing Rules Driven Workflows

This session started out with a discussion of the benefits of rules - I'm going to assume that if you are reading this section you are already familiar with rules and the benefits that they provide - I napped until they got to the good part.

Future of K2.NET In Light of WWF WWF pin K2.NET with a Pile Driver?

I spoke to some of the WWF folks in the corridor (actually, I cornered them in the Starbucks line where they were pinned behind one of those velvet ropes and couldn't get away). They reiterated that K2 was an workflow product and they were a framework. K2 is actively working with them to port their workflow tool to be implemented on top of WWF.

That's all well and good, but K2.NET is currently a primary way to get workflow in Sharepoint. Once WWF comes out, even though it is "just a framework," Sharepoint will be a host for workflows and Office 12 will serve as a client to define workflows. I'm still trying to figure out what K2.NET will bring to the party at that point. If you build on K2.NET now, however, it looks like you will have a smooth transition to WWF underneath the K2 abstraction, and then you can increase your capabilities by writing to WWF directly if you like.

Biff's PDC Mailbag

Referring to SOAP losing its acronym status (see Day 1)
TB from VA asks - "So - if I got this straight - I don't need to use SOAP anymore? "

TB - [reader may insert their own joke here] or click here for a list of options from our editors. -Ed.

PN from MD writes - "[The slacker in yesterday's video] was the lead character from Napoleon Dynamite. Real name Jon Header. It is a rather funny movie..."

PN - Thanks for the update, this definitely proves my un-hipness. Pete Nash is not even here, but still had the information.

Whoops, in a Robert Novak moment I just gave Pete's true identity away. I guess I am what Jon Stewart would call a "D-B" for technology (inside gag for Daily Show fans).


I don't know, open up tomorrow's newsletter when it gets here and fine out.

The Only Vested Member of our Pension Plan, Biff's PDC Newsletter

Missed an issue? Back issues are available at