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 targetted 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
www.windowsworkflow.net.
(ya know, watching all these presenters come across the stage reminds me that
Microsft folks get an incredible number of pretty cool shirts)
Designers
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-
http://www.microsoft.com/products/expression/en/default.aspx.
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-
-
Markup Only (XAML - used because even though this isn't presentation, it is a
similar serialization of objects)
-
Markup and Code
-
Code Only
-
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)-
-
Open up a project in VS and choose New Activity from the Add New
Item dialog
-
At this point he imported existing an DLL that actually does the blog post
(pre-compiled)
-
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).
-
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.
-
Once he built it, it automatically became an activity on his toolbar that he
could add to his designer.
-
After dragging it to his designer surface, he could set the properties he
defined in the properties window for the activity.
-
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).
Tomorrow
I don't know, open up tomorrow's newsletter when it gets here and fine out.
Biff
The Only Vested Member of our Pension Plan, Biff's PDC Newsletter
Missed an issue? Back issues are available at
www.BiffsPDCNewsletter.com.