Invoke a Workflow and bring back a value?

No, there isn’t a return concept in WF4 outside of what you mentioned.

Correct. This is because the data transfer between contexts takes place at the end of a successful execution of that context ( = workflow). If it goes to Faulted or Cancelled state, data is not being set.

Actually I can think of 2:

  1. Throw a custom exception and handle that appropriately (that’s the main reason for BusinessRuleException’s existence).
  2. Make use of Exception.Data property to store what you need.
3 Likes