How to solve this problem (in WF4):
I create a workflow in xaml and start several instances of it, I have a persistancestore and all workflows persist on a bookmark half way their workflow.
Now I stop the application
If I restart te application everything is resumed, en nicely completes.
But what if I want to change the workflow definition after the running instances persist? the only way to load the running workflows (that I was able to find) is the following way:
WorkflowApplication wfapp = new WorkflowApplication(new WorkflowDefinition());
wfapp.InstanceStore = new SqlWorkflowInstanceStore(connStr);
wfapp.Load(wfGuid);
So you need the workflow definition, if it has changed during the persistance, things go horribly wrong.
What is the best way to solve this?
This scenario is a bit of a problem. There is no way to migrate am older workflow definition to the new format. I have done some limited testing and some scenarios with adding/deleting activities that where not yet executing worked fine. But then I also has scenarios go badly wrong, including re executing an already finished activity.
As far as I am aware there is no good way to solve the problem other than tracking the version of the XAML/assembly used to create the workflow and checking that when you want to restart a workflow to determine the workflow version to use.