Ok, I acknowledge WF is an exciting piece of technology. It must be, I’ve spent days poring over examples. However, despite what is asserted on the videos, it’s not an easy piece of technology to get to grips with. In particular, there aren’t any “full” real-world examples. Pretty much all of the examples don’t actually write anything to a recognisable problem domain-specific database, they just use in-memory structures to hold ad-hoc workflow instances which then persist themselves to a very generalised workflow database.
I’m unsure how this squares with traditional app development. To use their helpdesk example, where does the data actually go? If it’s into this generalised persistence database, that makes it impossible for me to query, for example, the latest top 10 high priority cases, doesn’t it? Does this mean I am supposed to keep a domain-specific database in sync with the workflow using activities?
This seems to be the one area that gets no discussion – everyone’s so wrapped up in discussing the technical details of flying the runtime, persisting their instances, writing custom activities, that no-one has mentioned how the traditional application really fits around this. Oh, sure, there are plenty of examples that show how to handle external host app events or call out to the host app, but they’re all hooked up to
Console.WriteLine or similar in the examples!
So, if I wanted to write a real-world ASP.NET version of the helpdesk app, do I need one database or two (one domain DB, one for the WF persistence service)? If two, how do you ensure the two stay in sync? If one, how do I query my cases?
Do I just write my application as normal and then put the hooks into workflow? How can I drive my ASP.NET page flow? Do I have to retrieve work items from a queue and display them somehow for helpdesk agents to pick up? Can I use straight ASP.NET data binding for this and which DB would it come from, domain or WF persistence?
These are a lot of questions (these are just *today’s* questions), and answering them one by one is like carving a Bamiyan Buddha singlehandedly. I’d post this to the WF forums, but such questions seem to go unanswered while the simple tech questions get immediate replies.
The quest continues…
EDIT: It looks like Jon Flanders may already have been through this pain.