Class VariableInstanceEntity

java.lang.Object
org.camunda.bpm.engine.impl.persistence.entity.VariableInstanceEntity
All Implemented Interfaces:
Serializable, CoreVariableInstance, DbEntity, DbEntityLifecycleAware, HasDbReferences, HasDbRevision, Nameable, TypedValueUpdateListener, ValueFields, VariableInstance

Author:
Tom Baeyens
See Also:
  • Field Details

    • LOG

      protected static final EnginePersistenceLogger LOG
    • id

      protected String id
    • revision

      protected int revision
    • name

      protected String name
    • processDefinitionId

      protected String processDefinitionId
    • processInstanceId

      protected String processInstanceId
    • executionId

      protected String executionId
    • taskId

      protected String taskId
    • batchId

      protected String batchId
    • caseInstanceId

      protected String caseInstanceId
    • caseExecutionId

      protected String caseExecutionId
    • activityInstanceId

      protected String activityInstanceId
    • tenantId

      protected String tenantId
    • longValue

      protected Long longValue
    • doubleValue

      protected Double doubleValue
    • textValue

      protected String textValue
    • textValue2

      protected String textValue2
    • variableScopeId

      protected String variableScopeId
    • byteArrayField

      protected ByteArrayField byteArrayField
    • typedValueField

      protected TypedValueField typedValueField
    • configuration

      protected 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 Details

    • VariableInstanceEntity

      public VariableInstanceEntity()
    • VariableInstanceEntity

      public VariableInstanceEntity(String name, TypedValue value, boolean isTransient)
  • Method Details

    • createAndInsert

      public static VariableInstanceEntity createAndInsert(String name, TypedValue value)
    • insert

      public static void insert(VariableInstanceEntity variableInstance)
    • create

      public static VariableInstanceEntity create(String name, TypedValue value, boolean isTransient)
    • delete

      public void delete()
    • getPersistentState

      public 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 interface DbEntity
    • getRevisionNext

      public int getRevisionNext()
      Specified by:
      getRevisionNext in interface HasDbRevision
    • setProcessInstanceId

      public void setProcessInstanceId(String processInstanceId)
    • setProcessDefinitionId

      public void setProcessDefinitionId(String processDefinitionId)
    • setExecutionId

      public void setExecutionId(String executionId)
    • setCaseInstanceId

      public void setCaseInstanceId(String caseInstanceId)
    • setCaseExecutionId

      public void setCaseExecutionId(String caseExecutionId)
    • setCaseExecution

      public void setCaseExecution(CaseExecutionEntity caseExecution)
    • getByteArrayValueId

      public String getByteArrayValueId()
    • setByteArrayValueId

      public void setByteArrayValueId(String byteArrayValueId)
    • getByteArrayValue

      public byte[] getByteArrayValue()
      Specified by:
      getByteArrayValue in interface ValueFields
    • setByteArrayValue

      public void setByteArrayValue(byte[] bytes)
      Specified by:
      setByteArrayValue in interface ValueFields
    • deleteByteArrayValue

      protected void deleteByteArrayValue()
    • getValue

      public Object getValue()
      Description copied from interface: VariableInstance
      Returns the value of this variable instance.
      Specified by:
      getValue in interface VariableInstance
    • getTypedValue

      public TypedValue getTypedValue()
      Description copied from interface: VariableInstance
      Returns the TypedValue of this variable instance.
      Specified by:
      getTypedValue in interface VariableInstance
    • getTypedValue

      public TypedValue getTypedValue(boolean deserializeValue)
      Specified by:
      getTypedValue in interface CoreVariableInstance
    • setValue

      public void setValue(TypedValue value)
      Specified by:
      setValue in interface CoreVariableInstance
    • isObjectTyped

      protected boolean isObjectTyped(ValueType newType, 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 String getTypeName()
      Description copied from interface: VariableInstance
      Returns the name of the type of this variable instance
      Specified by:
      getTypeName in interface VariableInstance
      Returns:
      the type name of the variable
    • postLoad

      public void postLoad()
      Specified by:
      postLoad in interface DbEntityLifecycleAware
    • ensureExecutionInitialized

      protected void ensureExecutionInitialized()
    • getExecution

      public ExecutionEntity getExecution()
    • setExecution

      public void setExecution(ExecutionEntity execution)
    • getCaseExecution

      public CaseExecutionEntity getCaseExecution()
    • getId

      public String getId()
      Specified by:
      getId in interface DbEntity
      Specified by:
      getId in interface VariableInstance
      Returns:
      the Id of this variable instance
    • setId

      public void setId(String id)
      Specified by:
      setId in interface DbEntity
    • getTextValue

      public String getTextValue()
      Specified by:
      getTextValue in interface ValueFields
    • getProcessInstanceId

      public String getProcessInstanceId()
      Description copied from interface: VariableInstance
      Returns the corresponding process instance id.
      Specified by:
      getProcessInstanceId in interface VariableInstance
    • getProcessDefinitionId

      public String getProcessDefinitionId()
      Description copied from interface: VariableInstance
      Return the corresponding process definition id.
      Specified by:
      getProcessDefinitionId in interface VariableInstance
    • getExecutionId

      public String getExecutionId()
      Description copied from interface: VariableInstance
      Returns the corresponding execution id.
      Specified by:
      getExecutionId in interface VariableInstance
    • getCaseInstanceId

      public String getCaseInstanceId()
      Description copied from interface: VariableInstance
      Returns the corresponding case instance id.
      Specified by:
      getCaseInstanceId in interface VariableInstance
    • getCaseExecutionId

      public String getCaseExecutionId()
      Description copied from interface: VariableInstance
      Returns the corresponding case execution id.
      Specified by:
      getCaseExecutionId in interface VariableInstance
    • getLongValue

      public Long getLongValue()
      Specified by:
      getLongValue in interface ValueFields
    • setLongValue

      public void setLongValue(Long longValue)
      Specified by:
      setLongValue in interface ValueFields
    • getDoubleValue

      public Double getDoubleValue()
      Specified by:
      getDoubleValue in interface ValueFields
    • setDoubleValue

      public void setDoubleValue(Double doubleValue)
      Specified by:
      setDoubleValue in interface ValueFields
    • setName

      public void setName(String name)
    • setTextValue

      public void setTextValue(String textValue)
      Specified by:
      setTextValue in interface ValueFields
    • getName

      public String getName()
      Description copied from interface: VariableInstance
      Returns the name of this variable instance.
      Specified by:
      getName in interface CoreVariableInstance
      Specified by:
      getName in interface Nameable
      Specified by:
      getName in interface VariableInstance
    • getRevision

      public int getRevision()
      Specified by:
      getRevision in interface HasDbRevision
    • setRevision

      public void setRevision(int revision)
      Specified by:
      setRevision in interface HasDbRevision
    • setSerializer

      public void setSerializer(TypedValueSerializer<?> serializer)
    • setSerializerName

      public void setSerializerName(String type)
    • getSerializer

      public TypedValueSerializer<?> getSerializer()
    • getTextValue2

      public String getTextValue2()
      Specified by:
      getTextValue2 in interface ValueFields
    • setTextValue2

      public void setTextValue2(String textValue2)
      Specified by:
      setTextValue2 in interface ValueFields
    • getTaskId

      public String getTaskId()
      Description copied from interface: VariableInstance
      Returns the corresponding task id.
      Specified by:
      getTaskId in interface VariableInstance
    • setTaskId

      public void setTaskId(String taskId)
    • getBatchId

      public String getBatchId()
      Description copied from interface: VariableInstance
      Returns the corresponding batch id.
      Specified by:
      getBatchId in interface VariableInstance
    • setBatchId

      public void setBatchId(String batchId)
    • setTask

      public void setTask(TaskEntity task)
    • getActivityInstanceId

      public String getActivityInstanceId()
      Description copied from interface: VariableInstance
      Returns the corresponding activity instance id.
      Specified by:
      getActivityInstanceId in interface VariableInstance
    • setActivityInstanceId

      public void setActivityInstanceId(String activityInstanceId)
    • getSerializerName

      public String getSerializerName()
    • getErrorMessage

      public String getErrorMessage()
      Description copied from interface: VariableInstance
      If the variable value could not be loaded, this returns the error message.
      Specified by:
      getErrorMessage in interface VariableInstance
      Returns:
      an error message indicating why the variable value could not be loaded.
    • getVariableScopeId

      public String getVariableScopeId()
    • setVariableScopeId

      public void setVariableScopeId(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 interface TypedValueUpdateListener
    • getContextProcessApplication

      protected ProcessApplicationReference getContextProcessApplication()
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • setTransient

      public void setTransient(boolean isTransient)
      Parameters:
      isTransient - true, if the variable is not stored in the data base. Default is false.
    • isTransient

      public boolean isTransient()
      Returns:
      true, if the variable is transient. A transient variable is not stored in the data base.
    • getTenantId

      public String getTenantId()
      Description copied from interface: VariableInstance
      The id of the tenant this variable belongs to. Can be null if the variable belongs to no single tenant.
      Specified by:
      getTenantId in interface VariableInstance
    • setTenantId

      public void setTenantId(String tenantId)
    • getReferencedEntityIds

      public Set<String> getReferencedEntityIds()
      Description copied from interface: HasDbReferences

      Scope: IN-MEMORY references

      Specified by:
      getReferencedEntityIds in interface HasDbReferences
      Returns:
      the ids of the entities that this entity references. Should only return ids for entities of the same type
    • getReferencedEntitiesIdAndClass

      public Map<String,Class> getReferencedEntitiesIdAndClass()
      Description copied from interface: HasDbReferences

      Scope: IN-MEMORY references

      Specified by:
      getReferencedEntitiesIdAndClass in interface HasDbReferences
      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 at LegacyBehavior#createMissingHistoricVariables