flowable/flowable-engine · error · FlowableIllegalArgumentException
resourceNameLike is null
Error message
resourceNameLike is null
What it means
Flowable's CaseDefinitionQueryImpl throws FlowableIllegalArgumentException when caseDefinitionResourceNameLike(null) is called. The query builder validates each filter argument eagerly so that malformed queries fail at construction time rather than producing broken SQL or silent empty results at execution. Passing null here is never meaningful because a null 'like' filter is simply omitted.
Solutions
- Check the resourceNameLike value for null and only call caseDefinitionResourceNameLike when it is non-null.
- If an empty/absent filter should match everything, skip the method call entirely (do not pass null or empty string).
- If null indicates a bug, fix the upstream producer of the value (missing config key, unbound request parameter).
Example fix
// before
query.caseDefinitionResourceNameLike(request.getResourceNameLike());
// after
if (request.getResourceNameLike() != null) {
query.caseDefinitionResourceNameLike(request.getResourceNameLike());
} Defensive patterns
Strategy: validation
Validate before calling
if (resourceNameLike != null) {
query.caseDefinitionResourceNameLike(resourceNameLike);
} Type guard
boolean hasFilter(String s) { return s != null && !s.isEmpty(); } Try / catch
try {
query.caseDefinitionResourceNameLike(value);
} catch (FlowableIllegalArgumentException e) {
if (!e.getMessage().contains("resourceNameLike")) throw e;
// fall back to unfiltered query
query = repositoryService.createCaseDefinitionQuery();
} Prevention
- Null-check every filter value from dynamic sources before applying it
- Treat null as 'no filter' and skip the builder call
- Centralize query building in one helper that filters out null values
When it happens
Trigger: Calling caseDefinitionResourceNameLike(null) on a CaseDefinitionQuery (or CaseDefinitionQueryImpl), typically when the filter value comes from a variable, request parameter, or map lookup that is missing.
Common situations: Building dynamic queries from optional REST query parameters where the caller does not check for null before forwarding the value; configuration maps with missing keys; refactors that change the default of a local variable to null instead of skipping the filter call.
Related errors
- Business status is null
- callback id is null
- callback type is null
- callbackId is null
- callbackIds is null or empty
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/9f63800510132d0d.
Report an issue: GitHub.
Appendix: source
Thrown at modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/repository/CaseDefinitionQueryImpl.java:206
throw new FlowableIllegalArgumentException("keyLike is null");
}
this.keyLike = keyLike;
return this;
}
@Override
public CaseDefinitionQueryImpl caseDefinitionResourceName(String resourceName) {
if (resourceName == null) {
throw new FlowableIllegalArgumentException("resourceName is null");
}
this.resourceName = resourceName;
return this;
}
@Override
public CaseDefinitionQueryImpl caseDefinitionResourceNameLike(String resourceNameLike) {
if (resourceNameLike == null) {
throw new FlowableIllegalArgumentException("resourceNameLike is null");
}
this.resourceNameLike = resourceNameLike;
return this;
}
@Override
public CaseDefinitionQueryImpl caseDefinitionVersion(Integer version) {
checkVersion(version);
this.version = version;
return this;
}
@Override
public CaseDefinitionQuery caseDefinitionVersionGreaterThan(Integer caseDefinitionVersion) {
checkVersion(caseDefinitionVersion);
this.versionGt = caseDefinitionVersion;
return this;
}View on GitHub (pinned to d6d39ce1c6)