flowable/flowable-engine · error · FlowableIllegalArgumentException

Unsupported variable query operation: ${operation}

Error message

Unsupported variable query operation: ${operation}

What it means

FlowableIllegalArgumentException thrown when a QueryVariable in the variable-instance query request uses an operation the implementation does not handle. In this CMMN REST module only EQUALS is wired into the switch; any other operator name (GREATER_THAN, LIKE, NEQUALS, ...) reaches the default branch.

Source

Thrown at modules/flowable-cmmn-rest/src/main/java/org/flowable/cmmn/rest/service/api/runtime/variable/VariableInstanceBaseResource.java:141

            }

            boolean nameLess = variable.getName() == null;

            Object actualValue = restResponseFactory.getVariableValue(variable);

            // A value-only query is only possible using equals-operator
            if (nameLess) {
                throw new FlowableIllegalArgumentException("Value-only query (without a variable-name) is not supported");
            }

            switch (variable.getVariableOperation()) {

            case EQUALS:
                variableInstanceQuery.variableValueEquals(variable.getName(), actualValue);
                break;

            default:
                throw new FlowableIllegalArgumentException("Unsupported variable query operation: " + variable.getVariableOperation());
            }
        }
    }
}

View on GitHub (pinned to d6d39ce1c6)

Solutions

  1. Use operation EQUALS for each variable filter in the CMMN variable-instance query
  2. Filter additional conditions client-side on the returned results
  3. Check the module source/API docs for the supported operator list before upgrading query code

Example fix

// before
{"variables":[{"name":"count","value":5,"operation":"GREATER_THAN"}]}
// after
{"variables":[{"name":"count","value":5,"operation":"EQUALS"}]}
Defensive patterns

Strategy: validation

Validate before calling

const SUPPORTED = ['EQUALS']; const ok = q.variables.every(v => SUPPORTED.includes(v.operation));

Prevention

When it happens

Trigger: POST /cmmn-query/variable-instances with a variables[] entry whose 'operation' is any value other than EQUALS.

Common situations: Clients ported from the process (BPMN) REST API that supports more operators; assuming parity of supported operators across engine REST modules.

Understand the failure class

Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.

Related errors


AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11). Data as JSON: /api/errors/ad40e5c5e81b7ad4. Report an issue: GitHub.