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

  1. Skip the call when the exclusion value is null.
  2. Pass a concrete category string to exclude.
  3. 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

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.