flowable/flowable-engine · warning · FlowableIllegalArgumentException
categoryNotEquals is null
Error message
categoryNotEquals is null
What it means
DecisionQueryImpl.decisionCategoryNotEquals rejects a null categoryNotEquals value with FlowableIllegalArgumentException. Excluding by a null category is meaningless, so the query fails fast at construction.
Source
Thrown at modules/flowable-dmn-engine/src/main/java/org/flowable/dmn/engine/impl/DecisionQueryImpl.java:106
throw new FlowableIllegalArgumentException("category is null");
}
this.category = category;
return this;
}
@Override
public DecisionQueryImpl decisionCategoryLike(String categoryLike) {
if (categoryLike == null) {
throw new FlowableIllegalArgumentException("categoryLike is null");
}
this.categoryLike = categoryLike;
return this;
}
@Override
public DecisionQueryImpl decisionCategoryNotEquals(String categoryNotEquals) {
if (categoryNotEquals == null) {
throw new FlowableIllegalArgumentException("categoryNotEquals is null");
}
this.categoryNotEquals = categoryNotEquals;
return this;
}
@Override
public DecisionQueryImpl decisionName(String name) {
if (name == null) {
throw new FlowableIllegalArgumentException("name is null");
}
this.name = name;
return this;
}
@Override
public DecisionQueryImpl decisionNameLike(String nameLike) {
if (nameLike == null) {
throw new FlowableIllegalArgumentException("nameLike is null");View on GitHub (pinned to d6d39ce1c6)
Solutions
- Skip the call when the exclusion value is null.
- Pass a concrete category string to exclude.
- If you meant 'category is not null', there is a separate API (decisionCategoryNotNull); use that instead.
Example fix
// before
query.decisionCategoryNotEquals(excludedCategory); // null
// after
if (excludedCategory != null) {
query.decisionCategoryNotEquals(excludedCategory);
} Defensive patterns
Strategy: validation
Validate before calling
if (categoryNotEquals != null) { query.decisionCategoryNotEquals(categoryNotEquals); } Type guard
boolean hasExclusion = (categoryNotEquals != null && !categoryNotEquals.isEmpty());
Try / catch
try {
query.decisionCategoryNotEquals(excluded);
} catch (FlowableIllegalArgumentException e) {
// treat as no exclusion filter
} Prevention
- Only apply exclusion filters with concrete values
- Use decisionCategoryNotNull when you mean 'exclude null categories'
- Default exclusion values at the config layer
When it happens
Trigger: Calling decisionCategoryNotEquals(value) with value == null.
Common situations: Optional exclusion filter sourced from a request or config entry that is null.
Related errors
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/e85c498b172e0ad1.
Report an issue: GitHub.