Activiti icon indicating copy to clipboard operation
Activiti copied to clipboard

TransientVariableInstance cannot be cast to VariableInstanceEntity

Open Groovvy opened this issue 2 years ago • 1 comments

Activiti6

I have a workflow that only contains the servicetask node. I set a transient variable at the start node. After the workflow is all executed. A type conversion exception was thrown inside activiti.

public class TestDispatcher  implements JavaDelegate {
    
    @Override
    public void execute(DelegateExecution execution) {
         execution.setTransientVariable("test", "123");
    }
}

This file reports an error。

ExecutionEntityManagerImpl line569 // Get variables related to execution and delete them

if (!enableExecutionRelationshipCounts || 
        (enableExecutionRelationshipCounts && ((CountingExecutionEntity) executionEntity).getVariableCount() > 0)) {
      Collection<VariableInstance> executionVariables = executionEntity.getVariableInstancesLocal().values();
      for (VariableInstance variableInstance : executionVariables) {
        VariableInstanceEntity variableInstanceEntity = (VariableInstanceEntity) variableInstance;
        
        VariableInstanceEntityManager variableInstanceEntityManager = getVariableInstanceEntityManager();
        variableInstanceEntityManager.delete(variableInstanceEntity);
        if (variableInstanceEntity.getByteArrayRef() != null && variableInstanceEntity.getByteArrayRef().getId() != null) {
          getByteArrayEntityManager().deleteByteArrayById(variableInstanceEntity.getByteArrayRef().getId());
        }
      }
    }

The following error occurred java.lang.ClassCastException: org.activiti.engine.impl.persistence.entity.TransientVariableInstance cannot be cast to org.activiti.engine.impl.persistence.entity.VariableInstanceEntity

Groovvy avatar Jun 17 '22 07:06 Groovvy

Is it necessary to have a waiting node to disable the transient variable before the end of the process?

Groovvy avatar Jun 17 '22 09:06 Groovvy