flowable/flowable-engine · error · FlowableIllegalArgumentException

Operator ${operator} is not supported for the variable value

Error message

Operator ${operator} is not supported for the variable value

What it means

After mapping the operator string to QueryOperator, populateQueryVariableValues applies it to the HistoricProcessInstanceQuery. Several operators (including NOT_EQUALS_IGNORE_CASE and any others not exposed on the public query API) are deliberately not supported here, hitting the default branch and throwing this FlowableIllegalArgumentException.

Source

Thrown at modules/flowable-engine/src/main/java/org/flowable/engine/impl/delete/BatchDeleteProcessConfig.java:394

                        break;
                    case LIKE_IGNORE_CASE:
                        query.variableValueLikeIgnoreCase(variableName, (String) extractVariableValue(variableValue, engineConfiguration));
                        break;
                    case EQUALS_IGNORE_CASE:
                        query.variableValueEqualsIgnoreCase(variableName, (String) extractVariableValue(variableValue, engineConfiguration));
                        break;
                    case EXISTS:
                        query.variableExists(variableName);
                        break;
                    case NOT_EXISTS:
                        query.variableNotExists(variableName);
                        break;
                    case NOT_EQUALS_IGNORE_CASE:
                        //Not exposed on the public API
                        //query.variableValueNotEqualsIgnoreCase(variableName, (String) extractVariableValue(variableValue, engineConfiguration));
                        //break
                    default:
                        throw new FlowableIllegalArgumentException("Operator " + operator + " is not supported for the variable value");
                }
            }

        }

    }

    protected static Object extractVariableValue(JsonNode variableValueNode, ProcessEngineConfigurationImpl engineConfiguration) {
        String type = variableValueNode.path("type").stringValue(null);
        if (type == null) {
            throw new FlowableIllegalArgumentException("The variable value does not have a type");
        }

        VariableType variableType = engineConfiguration.getVariableTypes()
                .getVariableType(type);
        return variableType.getValue(new VariableValueJsonNodeValueFields(variableValueNode));
    }

View on GitHub (pinned to d6d39ce1c6)

Solutions

  1. Use a supported operator such as EQUALS, NOT_EQUALS, GREATER_THAN, LESS_THAN, LIKE etc.
  2. Replace NOT_EQUALS_IGNORE_CASE with an EQUALS filter plus client-side filtering, or restructure the query
  3. Check the Flowable version's switch statement in BatchDeleteProcessConfig for the exact supported operator set

Example fix

// before
{ "name": "status", "operator": "NOT_EQUALS_IGNORE_CASE", "value": "done" }
// after
{ "name": "status", "operator": "NOT_EQUALS", "value": "done" }
Defensive patterns

Strategy: validation

Validate before calling

Set<String> supported = Set.of("EQUALS","NOT_EQUALS","GREATER_THAN","GREATER_THAN_OR_EQUAL","LESS_THAN","LESS_THAN_OR_EQUAL","LIKE","LIKE_IGNORE_CASE","EQUALS_IGNORE_CASE","IN");
if (!supported.contains(operatorString)) {
    throw new IllegalArgumentException("Unsupported operator for batch delete query: " + operatorString);
}

Try / catch

try {
    config = BatchDeleteProcessConfig.create(partId, engineConfiguration);
} catch (FlowableIllegalArgumentException e) {
    logger.error("Unsupported operator in batch config: " + e.getMessage());
}

Prevention

When it happens

Trigger: A batch configuration variableValue declares an operator such as NOT_EQUALS_IGNORE_CASE, or any operator that HistoricProcessInstanceQuery has no corresponding variable-filter method for in this code path.

Common situations: Copying operator names from the full QueryOperator enum without checking which are supported for batch delete queries; API changes between Flowable versions moving operators into the unsupported set.

Related errors


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