flowable/flowable-engine · error · FlowableIllegalArgumentException
resourceNameLike is null
Error message
resourceNameLike is null
What it means
DecisionQueryImpl.decisionResourceNameLike(String) throws FlowableIllegalArgumentException when resourceNameLike is null. The LIKE pattern must be a concrete string (e.g. '%orders%.dmn') because it is embedded into a SQL LIKE clause; null is rejected at builder time.
Source
Thrown at modules/flowable-dmn-engine/src/main/java/org/flowable/dmn/engine/impl/DecisionQueryImpl.java:187
throw new FlowableIllegalArgumentException("keyLike is null");
}
this.keyLike = keyLike;
return this;
}
@Override
public DecisionQueryImpl decisionResourceName(String resourceName) {
if (resourceName == null) {
throw new FlowableIllegalArgumentException("resourceName is null");
}
this.resourceName = resourceName;
return this;
}
@Override
public DecisionQueryImpl decisionResourceNameLike(String resourceNameLike) {
if (resourceNameLike == null) {
throw new FlowableIllegalArgumentException("resourceNameLike is null");
}
this.resourceNameLike = resourceNameLike;
return this;
}
@Override
public DecisionQueryImpl decisionVersion(Integer version) {
checkVersion(version);
this.version = version;
return this;
}
@Override
public DmnDecisionQuery decisionVersionGreaterThan(Integer decisionVersion) {
checkVersion(decisionVersion);
this.versionGt = decisionVersion;
return this;
}View on GitHub (pinned to d6d39ce1c6)
Solutions
- Skip calling decisionResourceNameLike when the pattern is null/empty instead of passing it through.
- Provide a sensible default pattern like "%" to match all resources.
- Validate user input at the API boundary and return a clean validation message rather than leaking this exception.
Example fix
// before
query.decisionResourceNameLike(pattern);
// after
if (pattern != null && !pattern.isEmpty()) {
query.decisionResourceNameLike(pattern);
} Defensive patterns
Strategy: validation
Validate before calling
if (pattern != null && !pattern.isEmpty()) {
query.decisionResourceNameLike(pattern);
} Type guard
boolean hasPattern(String p) { return p != null && !p.isEmpty(); } Try / catch
try {
query.decisionResourceNameLike(pattern);
} catch (FlowableIllegalArgumentException e) {
if (e.getMessage() != null && e.getMessage().contains("resourceName")) {
pattern = "%";
query.decisionResourceNameLike(pattern);
} else { throw e; }
} Prevention
- Sanitize user-supplied search patterns before use
- Skip empty filters at the API boundary
- Add tests covering null optional query parameters
When it happens
Trigger: Calling decisionResourceNameLike(null) — usually a user-supplied search pattern from a UI or REST query parameter that is absent, or a forwarded optional method parameter.
Common situations: Wildcard search endpoints where the pattern field was left empty; config-driven filters where the pattern property is missing; test harnesses constructing queries with uninitialized fields.
Related errors
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/54184de8d711705b.
Report an issue: GitHub.