[jbpm-dev] [Design of JBoss jBPM] - Re: Need for database compatibility between jBPM versions

tom.baeyens@jboss.com do-not-reply at jboss.com
Tue Jul 1 05:36:00 EDT 2008


"thomas.diesler at jboss.com" wrote : This is based on my understanding that a process definition is an immutable entity, which is defined in XML.
  | 

process definitions can be considered as immutable, correct.

"thomas.diesler at jboss.com" wrote : 
  | The state of running processes is persisted in the database. For many a reason It cannot be expected that jBPM can be updated for running proccess. 

there are two types of migration
1) migrating a process instance to a new process definition in the same jBPM installation
2) migrating the complete jBPM database to a new major version (3.x to 4)

In the general case, process instance migration is too complex, as you don't know to what extend the new process definition will look like the old one.

However, in the majority of use cases, the updates to the process are fairly limited.  

If we provide a process instance migration that takes into account an optional node-name-mapping, then I think we have covered the 80% of the migrations with 20% of the effort.

Migrating the runtime state is doable IMO.  The logs and history is always too complex.

What I think we definitely should consider is process instance migration from 3.x to 4.   Our users *will* have to do this.  With our without our help.  This is the feedback that we got at jBPM community day.

I think that should be definitely feasible with serialization to XML.  After the clean shutdown, we should be able to provide a tool that serializes a the complete process instance information to XML and load that XML file in the new DB.

IMO, this is mostly a question of resources.

"thomas.diesler at jboss.com" wrote : If this feature is required we need to see this reflected in the test suite. In other words, as long as there are no automated tests that verify that an update of jBPM from version X to version Y for a non trivial set of running processes - this feature is not there.

agreed.

"thomas.diesler at jboss.com" wrote : 
  |   | ProcessEngine.prepareForShutdown()
  |   | 
  | 
  | This will allow processes to terminate, while others cannot start. A user is expected to setup a new instance of jBPM version Y that can receive new process requests.  

i don't think this is realistic for the complete process instances.  think of the  legal case taking 3 years to complete and new legislation requiring updates to the process in the meantime.  we need some form of process instance migration for that.

but a clean shutdown could make sure that all asynchronous messages get processed before the shutdown is completed.  that only leaves the timers to be taken into consideration.

"thomas.diesler at jboss.com" wrote : IFrom that perspective, it is unnecessary and not even desired to provide backwards compatibility for database layout. 

i agree.  backwards compatibility of DB layout is not feasible and not necessary.

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4161705#4161705

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4161705



More information about the jbpm-dev mailing list