The InvokeWorkflow
activity which comes with
Workflow Foundation (.NET 3.0) executes a workflow
asynchronously. So, if you are calling a workflow from ASP.NET
which in turn calls another workflow, the second workflow is going
to be terminated prematurely instead of executing completely. The
reason is, ManualWorkflowSchedulerService
will execute
the first workflow synchronously and then finish the workflow
execution and close down. If you used InvokeWorkflow
activity in order to run another workflow from the first workflow,
it will start on another thread and it will not get enough time to
execute completely before the parent workflow ends.
Here you see only one activity in the second workflow gets the
chance to execute. The remaining two activities do not get called
at all.
Luckily I found an implementation of synchronous workflow
execution at:
http://www.masteringbiztalk.com/blogs/jon/PermaLink,guid,7be9fb53-0ddf-4633-b358-01c3e9999088.aspx
It’s an activity which takes the workflow as input and executes
it synchronously. The implementation is very interesting to see.
Please see the original blog post for details.