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

  1. Skip calling decisionResourceNameLike when the pattern is null/empty instead of passing it through.
  2. Provide a sensible default pattern like "%" to match all resources.
  3. 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

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.