Class VariableInstanceEntity
- java.lang.Object
-
- org.camunda.bpm.engine.impl.persistence.entity.VariableInstanceEntity
-
- All Implemented Interfaces:
java.io.Serializable
,CoreVariableInstance
,DbEntity
,DbEntityLifecycleAware
,HasDbReferences
,HasDbRevision
,Nameable
,TypedValueUpdateListener
,ValueFields
,VariableInstance
public class VariableInstanceEntity extends java.lang.Object implements VariableInstance, CoreVariableInstance, ValueFields, DbEntity, DbEntityLifecycleAware, TypedValueUpdateListener, HasDbRevision, HasDbReferences, java.io.Serializable
- Author:
- Tom Baeyens
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected java.lang.String
activityInstanceId
protected java.lang.String
batchId
protected ByteArrayField
byteArrayField
protected java.lang.String
caseExecutionId
protected java.lang.String
caseInstanceId
protected java.lang.String
configuration
protected java.lang.Double
doubleValue
protected ExecutionEntity
execution
protected java.lang.String
executionId
protected java.lang.String
id
protected boolean
isConcurrentLocal
Determines whether this variable is supposed to be a local variable in case of concurrency in its scope.protected boolean
isTransient
Determines whether this variable is stored in the data base.protected static EnginePersistenceLogger
LOG
protected java.lang.Long
longValue
protected java.lang.String
name
protected java.lang.String
processDefinitionId
protected java.lang.String
processInstanceId
protected int
revision
protected long
sequenceCounter
protected java.lang.String
taskId
protected java.lang.String
tenantId
protected java.lang.String
textValue
protected java.lang.String
textValue2
protected TypedValueField
typedValueField
protected java.lang.String
variableScopeId
-
Constructor Summary
Constructors Constructor Description VariableInstanceEntity()
VariableInstanceEntity(java.lang.String name, TypedValue value, boolean isTransient)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
clearValueFields(boolean deleteVariable)
static VariableInstanceEntity
create(java.lang.String name, TypedValue value, boolean isTransient)
static VariableInstanceEntity
createAndInsert(java.lang.String name, TypedValue value)
void
delete()
protected void
deleteByteArrayValue()
protected void
ensureExecutionInitialized()
boolean
equals(java.lang.Object obj)
java.lang.String
getActivityInstanceId()
Returns the corresponding activity instance id.java.lang.String
getBatchId()
Returns the corresponding batch id.byte[]
getByteArrayValue()
java.lang.String
getByteArrayValueId()
CaseExecutionEntity
getCaseExecution()
java.lang.String
getCaseExecutionId()
Returns the corresponding case execution id.java.lang.String
getCaseInstanceId()
Returns the corresponding case instance id.protected ProcessApplicationReference
getContextProcessApplication()
java.lang.Double
getDoubleValue()
java.lang.String
getErrorMessage()
If the variable value could not be loaded, this returns the error message.ExecutionEntity
getExecution()
java.lang.String
getExecutionId()
Returns the corresponding execution id.protected VariableSerializerFactory
getFallbackSerializerFactory()
java.lang.String
getId()
java.lang.Long
getLongValue()
java.lang.String
getName()
Returns the name of this variable instance.java.lang.Object
getPersistentState()
Returns a representation of the object, as would be stored in the database.java.lang.String
getProcessDefinitionId()
Return the corresponding process definition id.java.lang.String
getProcessInstanceId()
Returns the corresponding process instance id.java.util.Map<java.lang.String,java.lang.Class>
getReferencedEntitiesIdAndClass()
Scope: IN-MEMORY referencesjava.util.Set<java.lang.String>
getReferencedEntityIds()
Scope: IN-MEMORY referencesint
getRevision()
int
getRevisionNext()
long
getSequenceCounter()
TypedValueSerializer<?>
getSerializer()
java.lang.String
getSerializerName()
protected TaskEntity
getTask()
java.lang.String
getTaskId()
Returns the corresponding task id.java.lang.String
getTenantId()
The id of the tenant this variable belongs to.java.lang.String
getTextValue()
java.lang.String
getTextValue2()
TypedValue
getTypedValue()
Returns the TypedValue of this variable instance.TypedValue
getTypedValue(boolean deserializeValue)
java.lang.String
getTypeName()
Returns the name of the type of this variable instancejava.lang.Object
getValue()
Returns the value of this variable instance.protected VariableScope
getVariableScope()
java.lang.String
getVariableScopeId()
int
hashCode()
void
incrementSequenceCounter()
static void
insert(VariableInstanceEntity variableInstance)
boolean
isConcurrentLocal()
protected boolean
isObjectTyped(ValueType newType, java.lang.String oldTypeAsString)
The engine should only remove byte arrays in case the type changes but keep it when old and new types are object.boolean
isTransient()
void
onImplicitValueUpdate(TypedValue updatedValue)
Called when an implicit update to a typed value is detectedvoid
postLoad()
void
setActivityInstanceId(java.lang.String activityInstanceId)
void
setBatchId(java.lang.String batchId)
void
setByteArrayValue(byte[] bytes)
void
setByteArrayValueId(java.lang.String byteArrayValueId)
void
setCaseExecution(CaseExecutionEntity caseExecution)
void
setCaseExecutionId(java.lang.String caseExecutionId)
void
setCaseInstanceId(java.lang.String caseInstanceId)
void
setConcurrentLocal(boolean isConcurrentLocal)
void
setDoubleValue(java.lang.Double doubleValue)
void
setExecution(ExecutionEntity execution)
void
setExecutionId(java.lang.String executionId)
void
setId(java.lang.String id)
void
setLongValue(java.lang.Long longValue)
void
setName(java.lang.String name)
void
setProcessDefinitionId(java.lang.String processDefinitionId)
void
setProcessInstanceId(java.lang.String processInstanceId)
void
setRevision(int revision)
void
setSequenceCounter(long sequenceCounter)
void
setSerializer(TypedValueSerializer<?> serializer)
void
setSerializerName(java.lang.String type)
void
setTask(TaskEntity task)
void
setTaskId(java.lang.String taskId)
void
setTenantId(java.lang.String tenantId)
void
setTextValue(java.lang.String textValue)
void
setTextValue2(java.lang.String textValue2)
void
setTransient(boolean isTransient)
void
setValue(TypedValue value)
void
setVariableScopeId(java.lang.String variableScopeId)
java.lang.String
toString()
boolean
wasCreatedBefore713()
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.camunda.bpm.engine.impl.db.HasDbReferences
getDependentEntities
-
-
-
-
Field Detail
-
LOG
protected static final EnginePersistenceLogger LOG
-
id
protected java.lang.String id
-
revision
protected int revision
-
name
protected java.lang.String name
-
processDefinitionId
protected java.lang.String processDefinitionId
-
processInstanceId
protected java.lang.String processInstanceId
-
executionId
protected java.lang.String executionId
-
taskId
protected java.lang.String taskId
-
batchId
protected java.lang.String batchId
-
caseInstanceId
protected java.lang.String caseInstanceId
-
caseExecutionId
protected java.lang.String caseExecutionId
-
activityInstanceId
protected java.lang.String activityInstanceId
-
tenantId
protected java.lang.String tenantId
-
longValue
protected java.lang.Long longValue
-
doubleValue
protected java.lang.Double doubleValue
-
textValue
protected java.lang.String textValue
-
textValue2
protected java.lang.String textValue2
-
variableScopeId
protected java.lang.String variableScopeId
-
byteArrayField
protected ByteArrayField byteArrayField
-
typedValueField
protected TypedValueField typedValueField
-
configuration
protected java.lang.String configuration
-
sequenceCounter
protected long sequenceCounter
-
isConcurrentLocal
protected boolean isConcurrentLocal
Determines whether this variable is supposed to be a local variable in case of concurrency in its scope. This affects
- tree expansion (not evaluated yet by the engine)
- activity instance IDs of variable instances: concurrentLocal variables always receive the activity instance id of their execution (which may not be the scope execution), while non-concurrentLocal variables always receive the activity instance id of their scope (which is set in the parent execution)
In the future, this field could be used for restoring the variable distribution when the tree is expanded/compacted multiple times. On expansion, the goal would be to keep concurrentLocal variables always with their concurrent replacing executions while non-concurrentLocal variables stay in the scope execution
-
isTransient
protected boolean isTransient
Determines whether this variable is stored in the data base.
-
execution
protected ExecutionEntity execution
-
-
Constructor Detail
-
VariableInstanceEntity
public VariableInstanceEntity()
-
VariableInstanceEntity
public VariableInstanceEntity(java.lang.String name, TypedValue value, boolean isTransient)
-
-
Method Detail
-
createAndInsert
public static VariableInstanceEntity createAndInsert(java.lang.String name, TypedValue value)
-
insert
public static void insert(VariableInstanceEntity variableInstance)
-
create
public static VariableInstanceEntity create(java.lang.String name, TypedValue value, boolean isTransient)
-
delete
public void delete()
-
getPersistentState
public java.lang.Object getPersistentState()
Description copied from interface:DbEntity
Returns a representation of the object, as would be stored in the database. Used when deciding if updates have occurred to the object or not since it was last loaded.- Specified by:
getPersistentState
in interfaceDbEntity
-
getRevisionNext
public int getRevisionNext()
- Specified by:
getRevisionNext
in interfaceHasDbRevision
-
setProcessInstanceId
public void setProcessInstanceId(java.lang.String processInstanceId)
-
setProcessDefinitionId
public void setProcessDefinitionId(java.lang.String processDefinitionId)
-
setExecutionId
public void setExecutionId(java.lang.String executionId)
-
setCaseInstanceId
public void setCaseInstanceId(java.lang.String caseInstanceId)
-
setCaseExecutionId
public void setCaseExecutionId(java.lang.String caseExecutionId)
-
setCaseExecution
public void setCaseExecution(CaseExecutionEntity caseExecution)
-
getByteArrayValueId
public java.lang.String getByteArrayValueId()
-
setByteArrayValueId
public void setByteArrayValueId(java.lang.String byteArrayValueId)
-
getByteArrayValue
public byte[] getByteArrayValue()
- Specified by:
getByteArrayValue
in interfaceValueFields
-
setByteArrayValue
public void setByteArrayValue(byte[] bytes)
- Specified by:
setByteArrayValue
in interfaceValueFields
-
deleteByteArrayValue
protected void deleteByteArrayValue()
-
getValue
public java.lang.Object getValue()
Description copied from interface:VariableInstance
Returns the value of this variable instance.- Specified by:
getValue
in interfaceVariableInstance
-
getTypedValue
public TypedValue getTypedValue()
Description copied from interface:VariableInstance
Returns the TypedValue of this variable instance.- Specified by:
getTypedValue
in interfaceVariableInstance
-
getTypedValue
public TypedValue getTypedValue(boolean deserializeValue)
- Specified by:
getTypedValue
in interfaceCoreVariableInstance
-
setValue
public void setValue(TypedValue value)
- Specified by:
setValue
in interfaceCoreVariableInstance
-
isObjectTyped
protected boolean isObjectTyped(ValueType newType, java.lang.String oldTypeAsString)
The engine should only remove byte arrays in case the type changes but keep it when old and new types are object.- Parameters:
newType
- of the variable overriding the old.oldTypeAsString
- of the variable previously set.- Returns:
true
if old and new variable are both object typed.
-
getFallbackSerializerFactory
protected VariableSerializerFactory getFallbackSerializerFactory()
-
clearValueFields
public void clearValueFields(boolean deleteVariable)
-
getTypeName
public java.lang.String getTypeName()
Description copied from interface:VariableInstance
Returns the name of the type of this variable instance- Specified by:
getTypeName
in interfaceVariableInstance
- Returns:
- the type name of the variable
-
postLoad
public void postLoad()
- Specified by:
postLoad
in interfaceDbEntityLifecycleAware
-
ensureExecutionInitialized
protected void ensureExecutionInitialized()
-
getExecution
public ExecutionEntity getExecution()
-
setExecution
public void setExecution(ExecutionEntity execution)
-
getCaseExecution
public CaseExecutionEntity getCaseExecution()
-
getId
public java.lang.String getId()
- Specified by:
getId
in interfaceDbEntity
- Specified by:
getId
in interfaceVariableInstance
- Returns:
- the Id of this variable instance
-
getTextValue
public java.lang.String getTextValue()
- Specified by:
getTextValue
in interfaceValueFields
-
getProcessInstanceId
public java.lang.String getProcessInstanceId()
Description copied from interface:VariableInstance
Returns the corresponding process instance id.- Specified by:
getProcessInstanceId
in interfaceVariableInstance
-
getProcessDefinitionId
public java.lang.String getProcessDefinitionId()
Description copied from interface:VariableInstance
Return the corresponding process definition id.- Specified by:
getProcessDefinitionId
in interfaceVariableInstance
-
getExecutionId
public java.lang.String getExecutionId()
Description copied from interface:VariableInstance
Returns the corresponding execution id.- Specified by:
getExecutionId
in interfaceVariableInstance
-
getCaseInstanceId
public java.lang.String getCaseInstanceId()
Description copied from interface:VariableInstance
Returns the corresponding case instance id.- Specified by:
getCaseInstanceId
in interfaceVariableInstance
-
getCaseExecutionId
public java.lang.String getCaseExecutionId()
Description copied from interface:VariableInstance
Returns the corresponding case execution id.- Specified by:
getCaseExecutionId
in interfaceVariableInstance
-
getLongValue
public java.lang.Long getLongValue()
- Specified by:
getLongValue
in interfaceValueFields
-
setLongValue
public void setLongValue(java.lang.Long longValue)
- Specified by:
setLongValue
in interfaceValueFields
-
getDoubleValue
public java.lang.Double getDoubleValue()
- Specified by:
getDoubleValue
in interfaceValueFields
-
setDoubleValue
public void setDoubleValue(java.lang.Double doubleValue)
- Specified by:
setDoubleValue
in interfaceValueFields
-
setName
public void setName(java.lang.String name)
-
setTextValue
public void setTextValue(java.lang.String textValue)
- Specified by:
setTextValue
in interfaceValueFields
-
getName
public java.lang.String getName()
Description copied from interface:VariableInstance
Returns the name of this variable instance.- Specified by:
getName
in interfaceCoreVariableInstance
- Specified by:
getName
in interfaceNameable
- Specified by:
getName
in interfaceVariableInstance
-
getRevision
public int getRevision()
- Specified by:
getRevision
in interfaceHasDbRevision
-
setRevision
public void setRevision(int revision)
- Specified by:
setRevision
in interfaceHasDbRevision
-
setSerializer
public void setSerializer(TypedValueSerializer<?> serializer)
-
setSerializerName
public void setSerializerName(java.lang.String type)
-
getSerializer
public TypedValueSerializer<?> getSerializer()
-
getTextValue2
public java.lang.String getTextValue2()
- Specified by:
getTextValue2
in interfaceValueFields
-
setTextValue2
public void setTextValue2(java.lang.String textValue2)
- Specified by:
setTextValue2
in interfaceValueFields
-
getTaskId
public java.lang.String getTaskId()
Description copied from interface:VariableInstance
Returns the corresponding task id.- Specified by:
getTaskId
in interfaceVariableInstance
-
setTaskId
public void setTaskId(java.lang.String taskId)
-
getBatchId
public java.lang.String getBatchId()
Description copied from interface:VariableInstance
Returns the corresponding batch id.- Specified by:
getBatchId
in interfaceVariableInstance
-
setBatchId
public void setBatchId(java.lang.String batchId)
-
setTask
public void setTask(TaskEntity task)
-
getActivityInstanceId
public java.lang.String getActivityInstanceId()
Description copied from interface:VariableInstance
Returns the corresponding activity instance id.- Specified by:
getActivityInstanceId
in interfaceVariableInstance
-
setActivityInstanceId
public void setActivityInstanceId(java.lang.String activityInstanceId)
-
getSerializerName
public java.lang.String getSerializerName()
-
getErrorMessage
public java.lang.String getErrorMessage()
Description copied from interface:VariableInstance
If the variable value could not be loaded, this returns the error message.- Specified by:
getErrorMessage
in interfaceVariableInstance
- Returns:
- an error message indicating why the variable value could not be loaded.
-
getVariableScopeId
public java.lang.String getVariableScopeId()
-
setVariableScopeId
public void setVariableScopeId(java.lang.String variableScopeId)
-
getVariableScope
protected VariableScope getVariableScope()
-
getTask
protected TaskEntity getTask()
-
getSequenceCounter
public long getSequenceCounter()
-
setSequenceCounter
public void setSequenceCounter(long sequenceCounter)
-
incrementSequenceCounter
public void incrementSequenceCounter()
-
isConcurrentLocal
public boolean isConcurrentLocal()
-
setConcurrentLocal
public void setConcurrentLocal(boolean isConcurrentLocal)
-
onImplicitValueUpdate
public void onImplicitValueUpdate(TypedValue updatedValue)
Description copied from interface:TypedValueUpdateListener
Called when an implicit update to a typed value is detected- Specified by:
onImplicitValueUpdate
in interfaceTypedValueUpdateListener
-
getContextProcessApplication
protected ProcessApplicationReference getContextProcessApplication()
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
equals
public boolean equals(java.lang.Object obj)
- Overrides:
equals
in classjava.lang.Object
-
setTransient
public void setTransient(boolean isTransient)
- Parameters:
isTransient
-true
, if the variable is not stored in the data base. Default isfalse
.
-
isTransient
public boolean isTransient()
- Returns:
true
, if the variable is transient. A transient variable is not stored in the data base.
-
getTenantId
public java.lang.String getTenantId()
Description copied from interface:VariableInstance
The id of the tenant this variable belongs to. Can benull
if the variable belongs to no single tenant.- Specified by:
getTenantId
in interfaceVariableInstance
-
setTenantId
public void setTenantId(java.lang.String tenantId)
-
getReferencedEntityIds
public java.util.Set<java.lang.String> getReferencedEntityIds()
Description copied from interface:HasDbReferences
Scope: IN-MEMORY references
- Specified by:
getReferencedEntityIds
in interfaceHasDbReferences
- Returns:
- the ids of the entities that this entity references. Should only return ids for entities of the same type
-
getReferencedEntitiesIdAndClass
public java.util.Map<java.lang.String,java.lang.Class> getReferencedEntitiesIdAndClass()
Description copied from interface:HasDbReferences
Scope: IN-MEMORY references
- Specified by:
getReferencedEntitiesIdAndClass
in interfaceHasDbReferences
- Returns:
- a map of the ids and the entities' classes that this entity references. It's used when trying to determine if there was an Optimistic Locking occurrence on an INSERT or UPDATE of an object of this type.
-
wasCreatedBefore713
public boolean wasCreatedBefore713()
- Returns:
true
processDefinitionId
is introduced in 7.13, the check is used to created missing history atLegacyBehavior#createMissingHistoricVariables
-
-