cancel
Showing results for 
Search instead for 
Did you mean: 

How to migrate a ProcessInstance to newer version of process

rabolfazl
Champ in-the-making
Champ in-the-making
Hi,

We have a process definition which undergoes minor revisions from time to time and we want to move existing process instances to the new version of the process. Is that possible? If not what is the best workaround?

Thanx,
1 REPLY 1

frederikherema1
Star Contributor
Star Contributor
Take a look at the org.activiti.engine.impl.cmd.SetProcessDefinitionVersionCmd and org.activiti.engine.test.db.ProcessInstanceMigrationTest. Please read the warning in the javadoc Smiley Wink


/**
* {@link Command} that changes the process definition version of an existing
* process instance.
*
* Warning: This command will NOT perform any migration magic and simply set the
* process definition version in the database, assuming that the user knows,
* what he or she is doing.
*
* This is only useful for simple migrations. The new process definition MUST
* have the exact same activity id to make it still run.
*
* Furthermore, activities referenced by sub-executions and jobs that belong to
* the process instance MUST exist in the new process definition version.
*
* The command will fail, if there is already a {@link ProcessInstance} or
* {@link HistoricProcessInstance} using the new process definition version and
* the same business key as the {@link ProcessInstance} that is to be migrated.
*
* If the process instance is not currently waiting but actively running, then
* this would be a case for optimistic locking, meaning either the version
* update or the "real work" wins, i.e., this is a race condition.
*
* @see http://forums.activiti.org/en/viewtopic.php?t=2918
* @author Falko Menge
*/