Multi-process versioning

  • 28 June 2006
  • 1 reply
  • 1 view

Badge +5
This is similar to Mr. Barnes post (Migrating processes from exported version to another), but is a slightly different problem.

For example, say you have a parent process P that makes an IPC call to a child process C. P passes (binds) a data field named OldVar to C.

OldVar is no longer needed, so you delete it from process C and remove the binding from the IPC call in process P. You export version 2 of both processes.

Process instance P1 is still running, on version 1 of P. It attempts an IPC call to C. However, it creates process instance C2, on version 2 of C. C2 does not contain OldVar, so the IPC call fails. You wanted P1 to use the prior version of process C.

The above is a simple example; deprecating OldVar rather than deleting it is one solution. But what if C expects additional parameters? Essentially, this leaves us with the old COM problem - a published interface is immutable.

Another solution is to rename child processes (possibly appending the version number) every time the interface changes. This is less than ideal from a version control standpoint.

Are there best practices for these scenarios? Does K2.net plan to add better versioning support in a future release?

Thank you,
Bill Sorensen

1 reply

Badge +2

Great Question, very good post.


I was about to post one but glad I found yours. Unfortunately this apears to be an issue, in my case an interface was added to an IPC, the old parent process calls the new process and wham.


So lacking a K2 response it would be stipulated that once you promote a new child process, if it's not compatible your going to potentially loose (error) all your old workflow processes currently running.


Unless a solution such as the one you proposed.

Reply