After scrapping the Workflow API and starting from scratch with v 4.0 , youd think they would have built the ultimate abstraction, but no - heres my gripes:
· Parallel is not parallel, just allows AsyncCodeActivity instances to asynchronously call code and receive callbacks (via BeginExecute and EndExecute)
· Non recursive
· VB expressions - blah
· For Imperative activity definition value assignment to be evaluated during execution (instead of definition) - requires a string representation of code to execute - VisualBasicValue<T>(string)
· XAML doesn’t support lambda expressions. Need to use ExpressionServices.Convert
· XAML is not intuitive enough to be hand written – null attribute values all over the place
· FlowStep.Next FlowStep is nested
· different overlapping messaging activities – why not just Send and Receive with some ReplyMode enum ?
· cannot save self modifying flow definitionss (created via DynamicActivity)
· missing functionality: application level protocol (WF services)
· State Machine activity pack is still a work in progress: cannot query state, cannot expose a state machine as a WCF service implementation for external access.
· XAML is not compact – e.g. to hook up CompensationToken, need to set 8 values instead of 2
· Separate WCF Service Contract interfaces are not supported OOB
· Send message channel cache is only available for Send activities that do not use WCF endpoints defined in configuration
· Workflow versioning – not possible to rehydrate to a new version
· ActivityDesigner does not support Silverlight , remote connectivity, and does not appear to be very skinnable (activities themselves are skinnable)
· ActivityDesigner doesn’t show data flow – crucial to understanding the big picture
· ActivityDesigner does not support refactor sequence to custom activity