webMethods BPM process upgrade

Currently I get a headache thinking about a process upgrade (new version) of a webMethods-BPM-process.

I know that a process instance always runs in the process-version it was started with. I also know that after the deployment of a new version of a process all new process-instaces are based on the new version.
As long as the interfaces of the process do not change between versions everything is fine. But enough about paradise…

In my world the interfaces change - always. That leads to the point where I have two possibilities:

  • Implement compability code with each update in each used/changed interface - this will lead to a very ugly codebase after multiple updates…
  • Update the process-instances.

I would like to try the second approach - but I have no idea how. Parse the process state and create a new one?

Did someone solve my problem with webMethods?

Any help is appreciated!

We used two solutions in the past:

  1. Use the previous process but have a service call at the begionning of every process step that would rectify the state of the pipeline to the current state of services (fill in optional fields etc). So that services can work as if everything was at the current state.

  2. Create new process models (with a similar but unique name). You can then share services or create copies of them for each process model.

Depending on how “backward compatible” the changes were, we chose the one or the other way.