Tuesday, May 01, 2007

ORCAS WCF+WF Training: Windows Workflow Foundation

In "WCF+WF in ORCAS: Deep Dive Training at Redmond", I promised a dedicated post about WinWF.

What is Windows Workflow Foundation in .NET 3.0? A runtime engine, topped up with services and tools.

Workflow runtime engine is superior. It implements traditional sequential and state-machine workflow, the two can nicely interplay. Dynamic update of a running workflow instance – known in WfMC fundamentals as AdHoc Workflows is there, too. Long running workflows are supported. Sweet part of WinWF, the Rule Engine, rulez and can be rehosted outside of WinWF applications. Runtime scales up and down, performs exceptionally well. It is well designed for flexibility and extencibility. They call it "future proof". Ok, my bullfighter is scorning at me here.

What is cooking with ORCAS?
Two new activities - ReceiveActivity and SendActivity – bring elegant integration with WCF. We did a lab, which soon will be available on the community site. Handling external events will be simplified: workflow/host communication made easier. That’s it, in my notes. Will double check when I get the presentation video & .ppt.

There is no updates on UI components. This is disappointing. Rule Set Editor can be rehosted, but you can’t use it unless you are a programmer. Workflow designer can be rehosted. But it’s a total usability disaster, even for a programmer. Everyone agrees that normal user can’t possibly use it. Microsoft acknowledges but “choose not to work on this problem” So if you think of exposing Workflow or Rules in your product, you are on your own. Like these people who reimplemented workflow designer with style.

Matt Winkler gave an exciting presentation on WinWF performance. He was sharing tricks to tune Worfklow Runtime to get the right performance trade-offs, based on scenarios. What I picked up:
Think when to track. Choose full reliability (Persist on Choice) or full speed (no persistence). Or, use controlled save point. Implement them as an empty activity with [PersistOnClose] attribute on Execute override. Think what to track. Track only what you need. Partition tracking service to avoid polluting DB. Batch tracking reduces the load on SQL server. Bindable properties do not slow things down too much, but when you don’t need binding, use simple properties. Nesting compensations are expensive. Transactions use DTS – take performance hit. While is expencive: it’s 2000 times faster to do it inside [code] activity then using workflow while. Dynamic updates ARE SLOW (and if you think you need them, think again). Farms of workflow hosts are easily configurable with SQL Tracking Service. When tuned well, WinWF performs (detailed metrics in this article).

Am I sold on WinWF? Almost. I like the technology, but not entirely sure if it is ready for a prime time yet. In the next post, I will share my reservation.

Labels: , ,

AddThis Social Bookmark Button

Friday, April 27, 2007

Workflow Engines and Products

I am in love with workflow products, workflow engines in particular. Listed below are some of workflow engines and workflow based(*) products that I came across and looked at over last 3 years.

* Tibco iProcess
* BizTalk
* Savvion
* Lombardi
* Oracle BPEL Process Manager

Other Products
* IBM Tivoli Intelligent Orchestrator
* JOpera
* Full Armor Workflow Studio
* K2.Net
* LogicBase Harmony
* Skelta
* Adobe LifeCycle Workflow
* Opalis - oh I know this engine well
* overview pdf
* Taverna
* TurboWorx - look ma, they lost their domain! Oh, don't even think of going torboworx dot com ...

Workflow Engines
* Bossa
* OpenWFE
* Enhydra Shark
* ActiveBPEL
* Windows Workflow Foundation

Hords of open source Java engines are listed here and here (with discussion). Interestingly, there is no open source C++ workflow engine. I googled hard, but only found a dead one in C. I'll be happy if you proves me wrong.

Here you could imagine me doing a product review. But let's save your time and cut straight to the bottom line.

Over last 10 years everyone and his brother had been building a workflow engine. Most of the products listed have their own ones. Developing them has been a lot of fun. This time is over. Now in 2007 workflow engine becomes a commodity. Who are the leaders?

I nominate ActiveBPEL and WinWF

Labels: , ,

AddThis Social Bookmark Button

Sunday, April 22, 2007

WCF+WF in ORCAS: Deep Dive Training at Redmond

I spent 3 days at Platform Adaptation Center in Redmond, taking a dive in hot Microsoft technologies. The focus was on Orcas, the upcoming version of Visual Studio and .NET 3.5. We also got insights of the current .NET 3.0, and features beyond ORCAS.

My professional focus was on Windows Workflow Foundation. My geeky side was fascinated by LINQ. Windows WF worths a dedicated post. For details on LINQ I’d rather refer you to someone who can tell the story: Anders Hejlsberg! Watch a video interview from here. To taste it, follow "The road to Linq: C# 3.0 for mere mortals" paved by Alex Thissen.

It is intriguing: ADO.NET team comes with Entity Framework, new and cool, along with ESQL query language. It directly competes with LINQ to SQL (aka DLINQ); and we got competing evangelists from the two competing teams presenting. The obvious question "what Microsoft’s recommendation on choosing between the two" was answered with pretty much "the jury is out".

Every time I see PowerShell, I am excited and ready to install & play & learn & use it right away. Never gotten beyond installation yet . After David Aiken’s show, I will do it. David had delivered Using Powershell to manage WF & WCF – great demo! Later he spoke about application manageability, WMI, events and their play in M$ Dynamic Systems Initiative.

Rules rulez! Moustafa Ahmed made it clear. Rehost a rules engine whenever you pleased, and what a great power. Rules Editor, on the other hand, is not so cool. Technically it is rehostable, but only developers can possibly use it. For normal users, you’re on your own.

What else? Three presentations on Windows Communication Framework. Justin Smith was talking about Syndication and later on WCF performance. Pravin Indurkar shown in-depth interplay of WCF and WF. I liked Justin’s thinking broadly of syndication, beyond blogs and news. Think of an event log as a syndication of events, a record set is syndication of data rows, a web page as a syndication of data backed controls, and so on. WCF is promising support for Atom & RSS.

AJAX: two presentations, by Steve Marx and Eugene Osovetsky, and the lab on JSON & AJAX win WCF. Workflow Driven User Interface: web application “HelpDesk” example demoed by Shelly Guo. Compact framework and Office/Sharepoint – not interested.. Federated Identity was presented in greatly understandable way by CardSpace team – now I can explain it myself! Brian Keller was showing off VS Team System. It was off-beat for the general theme, but for me both the presentation and after-talk with Brian was so interesting… I gotta blog on this separately.

The audience of around 50 was a mix of innovators from blogging and training cutting edge, on one side, and pragmatics from the dusty field of daily industrial development, on the other. Innovator Alex wanted to know where LINQ is going after ORCAS. I wanted to figure if I could use WF right now. Satisfying both sides presented a challenge to the organizers. At the end, though, both sides got their questions answered.

Overall – good organization, smart guys, great event.

Labels: , ,

AddThis Social Bookmark Button

Wednesday, April 18, 2007


A friend of mine gave me a buzz: “Check it out, OpenLaszlo”.

A free open source AJAX toolkit, OpenLazlo gives an XML based language with embedded JavaScript that compiles into Flash or DTHML. Originally optimized for FireFox, but claims full support for Internet Explorer, including 7.0. No JSON, but XML based dataset with XPath query is provided instead. Animation is OpenLaszlo’s sweet spot. Demos are sexy, and “Laszlo in 10 minutes” is fun. Although I still more like fine-grain control, like with Atlas, OpenLaszlo declarative style ramps up web development time.

Morale: AJAX is cool, Open Source rules, friends matter.

Labels: , ,

AddThis Social Bookmark Button