flowable/flowable-engine · error · FlowableIllegalArgumentException
Decision table id is null
Error message
Decision table id is null
What it means
SetDecisionTableCategoryCmd updates the category of a decision table. It first validates that decisionTableId is non-null and throws FlowableIllegalArgumentException ('Decision table id is null') otherwise. Called via DmnRepositoryService.setDecisionTableCategory.
Solutions
- Pass a valid non-null decision table id from DmnRepositoryService.createDecisionTableQuery()
- Validate the id before calling setDecisionTableCategory
- Fix upstream code that produced a null id
Example fix
// before
repositoryService.setDecisionTableCategory(decisionTableId, "newCat");
// after
if (decisionTableId == null) throw new IllegalArgumentException("decisionTableId required");
repositoryService.setDecisionTableCategory(decisionTableId, "newCat"); Defensive patterns
Strategy: validation
Validate before calling
if (decisionTableId == null || decisionTableId.isEmpty()) {
throw new IllegalArgumentException("decisionTableId required");
} Type guard
boolean hasDecisionTableId(String id) { return id != null && !id.isEmpty(); } Try / catch
try {
repositoryService.setDecisionTableCategory(decisionTableId, category);
} catch (FlowableIllegalArgumentException e) {
log.error("Null decisionTableId passed", e);
throw new BadRequestException("decisionTableId required");
} Prevention
- Obtain ids from query results, never from free-form input without checks
- Use requireNonNull at API boundaries
- Keep category-update logic behind a service method that validates inputs
When it happens
Trigger: Calling dmnRepositoryService.setDecisionTableCategory(null, category) or new SetDecisionTableCategoryCmd(null, category).
Common situations: Ids collected from UI forms or deployment results that were null, refactors renaming id variables, or an optional lookup earlier returning nothing.
Related errors
- decisionTableId is null
- Deployment id is null
- deploymentId is null
- deploymentId is null
- entityClass is null
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/cb316f17987963a3.
Report an issue: GitHub.
Appendix: source
Thrown at modules/flowable-dmn-engine/src/main/java/org/flowable/dmn/engine/impl/cmd/SetDecisionTableCategoryCmd.java:41
/**
* @author Joram Barrez
*/
public class SetDecisionTableCategoryCmd implements Command<Void> {
protected String decisionTableId;
protected String category;
public SetDecisionTableCategoryCmd(String decisionTableId, String category) {
this.decisionTableId = decisionTableId;
this.category = category;
}
@Override
public Void execute(CommandContext commandContext) {
if (decisionTableId == null) {
throw new FlowableIllegalArgumentException("Decision table id is null");
}
DecisionEntity decisionTable = CommandContextUtil.getDecisionEntityManager(commandContext).findById(decisionTableId);
if (decisionTable == null) {
throw new FlowableObjectNotFoundException("No decision table found for id = '" + decisionTableId + "'");
}
// Update category
decisionTable.setCategory(category);
// Remove process definition from cache, it will be refetch later
DeploymentCache<DecisionCacheEntry> decisionTableCache = CommandContextUtil.getDmnEngineConfiguration().getDefinitionCache();
if (decisionTableCache != null) {
decisionTableCache.remove(decisionTableId);
}
CommandContextUtil.getDecisionEntityManager(commandContext).update(decisionTable);
View on GitHub (pinned to d6d39ce1c6)