Activiti/Activiti · error · ActivitiIllegalArgumentException

tableName is null

Error message

tableName is null

What it means

Thrown by GetTableMetaDataCmd.execute when tableName is null. Activiti rejects the missing argument with ActivitiIllegalArgumentException before delegating to TableDataManager.getTableMetaData, which needs the table name for a metadata query.

Solutions

  1. Null/blank-check tableName before the call.
  2. Get valid names from managementService.getTables() or managementService.getTableName(EntityClass.class).
  3. Normalize case: table names are typically uppercase, e.g. 'ACT_RU_TASK'.

Example fix

// before
TableMetaData md = managementService.getTableMetaData(tableName);
// after
if (tableName == null || tableName.isBlank()) throw new IllegalArgumentException("tableName is required");
TableMetaData md = managementService.getTableMetaData(tableName.toUpperCase());
Defensive patterns

Strategy: validation

Validate before calling

if (tableName == null || tableName.isBlank()) throw new IllegalArgumentException("tableName is required");

Type guard

boolean isValidTableName(String name) {
    return name != null && !name.isBlank();
}

Prevention

When it happens

Trigger: Calling managementService.getTableMetaData(null); often the name was meant to come from managementService.getTableName(entityClass) or a table-name collection that produced null.

Common situations: Passing the wrong variable; dynamic table-name building that failed; incorrect iteration of managementService.getTables().

Related errors


AI-assisted analysis of Activiti/Activiti@56435b1a97 (2026-09-09). Data as JSON: /api/errors/2c26105bd65525d6. Report an issue: GitHub.

Appendix: source

Thrown at activiti-core/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/GetTableMetaDataCmd.java:38

import org.activiti.engine.impl.interceptor.Command;
import org.activiti.engine.impl.interceptor.CommandContext;
import org.activiti.engine.management.TableMetaData;

/**

 */
public class GetTableMetaDataCmd implements Command<TableMetaData>, Serializable {

    private static final long serialVersionUID = 1L;
    protected String tableName;

    public GetTableMetaDataCmd(String tableName) {
        this.tableName = tableName;
    }

    public TableMetaData execute(CommandContext commandContext) {
        if (tableName == null) {
            throw new ActivitiIllegalArgumentException("tableName is null");
        }
        return commandContext.getTableDataManager().getTableMetaData(tableName);
    }
}

View on GitHub (pinned to 56435b1a97)