{"record":{"id":"97dfa8401d6cd242","repo":"flowable/flowable-engine","slug":"unsupported-variable-query-operation-variable-g-97dfa8","errorCode":null,"errorMessage":"Unsupported variable query operation: ${variable.getVariableOperation()}","messagePattern":"Unsupported variable query operation: (.+?)","errorType":"validation","errorClass":"FlowableIllegalArgumentException","httpStatus":400,"severity":"error","filePath":"modules/flowable-cmmn-rest/src/main/java/org/flowable/cmmn/rest/service/api/runtime/caze/BaseCaseInstanceResource.java","lineNumber":392,"sourceCode":"\n            case LESS_THAN:\n                caseInstanceQuery.variableValueLessThan(variable.getName(), actualValue);\n                break;\n\n            case LESS_THAN_OR_EQUALS:\n                caseInstanceQuery.variableValueLessThanOrEqual(variable.getName(), actualValue);\n                break;\n\n            case EXISTS:\n                caseInstanceQuery.variableExists(variable.getName());\n                break;\n\n            case NOT_EXISTS:\n                caseInstanceQuery.variableNotExists(variable.getName());\n                break;\n\n            default:\n                throw new FlowableIllegalArgumentException(\"Unsupported variable query operation: \" + variable.getVariableOperation());\n            }\n        }\n    }\n}\n","sourceCodeStart":374,"sourceCodeEnd":397,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-cmmn-rest/src/main/java/org/flowable/cmmn/rest/service/api/runtime/caze/BaseCaseInstanceResource.java#L374-L397","documentation":"addVariables maps each query variable's VariableQueryOperation enum to a CaseInstanceQuery method; an unrecognized operation falls into the default branch and throws FlowableIllegalArgumentException. This means the client supplied a variable operation the CMMN REST layer does not support.","triggerScenarios":"POST case-instance query with a variable whose variableOperation is not one of EQUALS, NOT_EQUALS, EQUALS_IGNORE_CASE, NOT_EQUALS_IGNORE_CASE, LIKE, LIKE_IGNORE_CASE, GREATER_THAN, GREATER_THAN_OR_EQUAL, LESS_THAN, LESS_THAN_OR_EQUAL, EXISTS, NOT_EXISTS — e.g. a misspelled operation name or an operation from a different API.","commonSituations":"Typo in operation string; passing process-engine-only operations; client library out of sync with server's supported enum; hand-written query JSON.","solutions":["Use only supported operations listed in VariableQueryProperty/enum (EQUALS, LIKE, GREATER_THAN, EXISTS, etc.)","Check the request JSON for typos in the variableOperation field","Upgrade/downgrade the client library so its enum matches the server version"],"exampleFix":"// before\n{\"name\":\"state\",\"value\":\"active\",\"operation\":\"STARTS_WITH\"}\n// after\n{\"name\":\"state\",\"value\":\"active%\",\"operation\":\"LIKE\"}","handlingStrategy":"validation","validationCode":"const SUPPORTED = ['EQUALS','NOT_EQUALS','EQUALS_IGNORE_CASE','NOT_EQUALS_IGNORE_CASE','LIKE','LIKE_IGNORE_CASE','GREATER_THAN','GREATER_THAN_OR_EQUALS','LESS_THAN','LESS_THAN_OR_EQUALS','EXISTS','NOT_EXISTS'];\nif (!SUPPORTED.includes(variable.operation)) throw new Error('Unsupported operation: ' + variable.operation);","typeGuard":null,"tryCatchPattern":"catch (e) { if (e instanceof FlowableIllegalArgumentException) { /* fix operation enum */ } }","preventionTips":["Keep the client's operation enum in sync with the server version","Validate operation names against the API docs before sending","Avoid hand-writing query JSON; use a typed client"],"tags":["rest-api","query-variables","invalid-enum","cmmn"],"backgroundTag":"invalid-enum-value","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}