flowable/flowable-engine · error · FlowableIllegalArgumentException
deploymentCategoryExclude is null
Error message
deploymentCategoryExclude is null
What it means
AppDeploymentQueryImpl.deploymentCategoryNotEquals() throws FlowableIllegalArgumentException when the exclusion category argument is null (message: 'deploymentCategoryExclude is null'). A null exclusion is meaningless, so the fluent API rejects it.
Source
Thrown at modules/flowable-app-engine/src/main/java/org/flowable/app/engine/impl/repository/AppDeploymentQueryImpl.java:105
throw new FlowableIllegalArgumentException("deploymentNameLike is null");
}
this.nameLike = nameLike;
return this;
}
@Override
public AppDeploymentQueryImpl deploymentCategory(String deploymentCategory) {
if (deploymentCategory == null) {
throw new FlowableIllegalArgumentException("deploymentCategory is null");
}
this.category = deploymentCategory;
return this;
}
@Override
public AppDeploymentQueryImpl deploymentCategoryNotEquals(String deploymentCategoryNotEquals) {
if (deploymentCategoryNotEquals == null) {
throw new FlowableIllegalArgumentException("deploymentCategoryExclude is null");
}
this.categoryNotEquals = deploymentCategoryNotEquals;
return this;
}
@Override
public AppDeploymentQueryImpl deploymentKey(String deploymentKey) {
if (deploymentKey == null) {
throw new FlowableIllegalArgumentException("deploymentKey is null");
}
this.key = deploymentKey;
return this;
}
@Override
public AppDeploymentQueryImpl deploymentTenantId(String tenantId) {
if (tenantId == null) {
throw new FlowableIllegalArgumentException("deploymentTenantId is null");View on GitHub (pinned to d6d39ce1c6)
Solutions
- Only call deploymentCategoryNotEquals when the value is non-null.
- Default the exclusion to a sentinel you never deploy (e.g. "__none__") if you always want the call, though skipping is cleaner.
- Audit query-builder helpers so each optional filter is guarded consistently.
- Catch FlowableIllegalArgumentException and convert to a client error.
Example fix
// before query.deploymentCategoryNotEquals(excludeCategory); // may be null // after if (excludeCategory != null) query.deploymentCategoryNotEquals(excludeCategory);
Defensive patterns
Strategy: validation
Validate before calling
if (excludeCategory != null) query.deploymentCategoryNotEquals(excludeCategory);
Try / catch
try {
query.deploymentCategoryNotEquals(exclude);
} catch (org.flowable.common.engine.api.FlowableIllegalArgumentException e) {
throw new javax.ws.rs.BadRequestException("excludeCategory must not be null", e);
} Prevention
- Treat exclusion filters like any other optional filter: null means skip
- Bind UI 'exclude' options to Optional rather than raw nullable values
- Apply guards uniformly across all query filter calls
When it happens
Trigger: Calling deploymentCategoryNotEquals(null) — e.g. an 'exclude category' UI option left unselected and bound to null.
Common situations: Optional exclusion filter in query-assembler code called unconditionally; refactors that renamed a constant to null/default.
Related errors
- Deployment id is null
- Deployment ids is null
- deploymentName is null
- deploymentNameLike is null
- deploymentCategory is null
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/e307ac8deaab4eca.
Report an issue: GitHub.