org.camunda.bpm.engine.impl.cmd
Class SetProcessDefinitionVersionCmd

java.lang.Object
  extended by org.camunda.bpm.engine.impl.cmd.SetProcessDefinitionVersionCmd
All Implemented Interfaces:
Serializable, Command<Void>

public class SetProcessDefinitionVersionCmd
extends Object
implements Command<Void>, Serializable

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 ProcessInstance or HistoricProcessInstance using the new process definition version and the same business key as the 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.

Author:
Falko Menge
See Also:
http://forums.activiti.org/en/viewtopic.php?t=2918, Serialized Form

Constructor Summary
SetProcessDefinitionVersionCmd(String processInstanceId, Integer processDefinitionVersion)
           
 
Method Summary
 Void execute(CommandContext commandContext)
           
protected  Map<String,String> getJobDefinitionMapping(List<JobDefinitionEntity> currentJobDefinitions, List<JobDefinitionEntity> newVersionJobDefinitions)
           
protected  boolean jobDefinitionsMatch(JobDefinitionEntity currentJobDefinition, JobDefinitionEntity newJobDefinition)
           
protected  void switchVersionOfIncident(CommandContext commandContext, IncidentEntity incidentEntity, ProcessDefinitionEntity newProcessDefinition)
           
protected  void switchVersionOfJob(JobEntity jobEntity, ProcessDefinitionEntity newProcessDefinition, Map<String,String> jobDefinitionMapping)
           
protected  void validateAndSwitchVersionOfExecution(CommandContext commandContext, ExecutionEntity execution, ProcessDefinitionEntity newProcessDefinition)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SetProcessDefinitionVersionCmd

public SetProcessDefinitionVersionCmd(String processInstanceId,
                                      Integer processDefinitionVersion)
Method Detail

execute

public Void execute(CommandContext commandContext)
Specified by:
execute in interface Command<Void>

getJobDefinitionMapping

protected Map<String,String> getJobDefinitionMapping(List<JobDefinitionEntity> currentJobDefinitions,
                                                     List<JobDefinitionEntity> newVersionJobDefinitions)

jobDefinitionsMatch

protected boolean jobDefinitionsMatch(JobDefinitionEntity currentJobDefinition,
                                      JobDefinitionEntity newJobDefinition)

switchVersionOfJob

protected void switchVersionOfJob(JobEntity jobEntity,
                                  ProcessDefinitionEntity newProcessDefinition,
                                  Map<String,String> jobDefinitionMapping)

switchVersionOfIncident

protected void switchVersionOfIncident(CommandContext commandContext,
                                       IncidentEntity incidentEntity,
                                       ProcessDefinitionEntity newProcessDefinition)

validateAndSwitchVersionOfExecution

protected void validateAndSwitchVersionOfExecution(CommandContext commandContext,
                                                   ExecutionEntity execution,
                                                   ProcessDefinitionEntity newProcessDefinition)


Copyright © 2015 camunda services GmbH. All rights reserved.