Despite going on a training course for Workflow Foundation earlier this year, I recently abandoned an attempt to use it in a project because there were just too many compromises to get it to work. There are few extension points (everything is sealed, and the mechanisms for getting data/events into and out of a workflow instance are just the opposite to the pit of success), and generally it's just hard to plumb it in.
My main issue is that if I use a state machine workflow, I then also have to persist state in my database. This causes me trouble keeping the two in synch.
The example is a bug tracking application. Each bug would typically have a status column, and that can be easily queried and reported on. However if you introduce WF, I never really understood how to plumb it in so that the workflow state updates the database record's state etc.
Does anyone else have a view on this? In the end I've implemented my own bespoke database-based workflow system, where each status has a list of possible "next" statuses, and each status has a number of people/roles it can be assigned to.