Process and class versioning

Hello

I am looking into process versioning, and have found a forum about that (see below).
I am using Spring based process applications which are deployed to a shared process engine.
My Java delegates are Spring beans and service tasks use an expression to reference the bean. I could use the versioning strategy described in the forum entry below.

If I understand the forum entry correctly, the Java delegates are “unbound” from the process instance when the process application (EAR/WAR) archive is undeployed. If a new process application (for the same process definition) is deployed, then the Java classes from the application are “rebound” to the process instance.

My question is: what kind of state is the process in, when the process application is missing?

For example, I have tried starting a new process (async start event), when the process application (WAR archive) was undeployed. The process is started, but it remains in the start event. No error is thrown, it just stays in the start event.
If the process application is again deployed, the process continues as if noting had happened…

I am wondering what happens to running process instances, when the process application archive is undeployed (and the Java delegate classes are missing)? For example, if a timer would kick in at that very moment the archive is undeployed, and the process would enter a service taks using a Java delegate? Would it also just wait?

Are there other ways of doing versioning - perhaps also versioning the Java classes (I think it can be done using Scripts for service tasks logic, but I would rather use Java classes than scripts)

Thanks.

BR
Michael

Hi @mimaom,

regarding your questions about how the process behaves in case of absent Java delegate classes. It’s very simple. Each process has safe points, where the database transaction is committed. Default safe points are listed here:
https://docs.camunda.org/manual/7.8/user-guide/process-engine/transactions-in-processes/#wait-states

Everything that happens between two safe points is atomic - it is either succeeds and committed to the database or throws an exception and rolls back to the previous safe point.

You can configure more safe points in the process: https://docs.camunda.org/manual/7.8/user-guide/process-engine/transactions-in-processes/#asynchronous-continuations

Regarding the versioning question, sorry, I don’t have much to add to the previous discussion.