{"record":{"id":"4497f319d730924a","repo":"Activiti/Activiti","slug":"process-definition-version-is-null-4497f3","errorCode":null,"errorMessage":"Process definition version is null","messagePattern":"Process definition version is null","errorType":"validation","errorClass":"ActivitiIllegalArgumentException","httpStatus":null,"severity":"error","filePath":"activiti-core/activiti-engine/src/main/java/org/activiti/engine/impl/ProcessInstanceQueryImpl.java","lineNumber":224,"sourceCode":"\n    @Override\n    public ProcessInstanceQuery processDefinitionName(String processDefinitionName) {\n        if (processDefinitionName == null) {\n            throw new ActivitiIllegalArgumentException(\"Process definition name is null\");\n        }\n\n        if (inOrStatement) {\n            this.currentOrQueryObject.processDefinitionName = processDefinitionName;\n        } else {\n            this.processDefinitionName = processDefinitionName;\n        }\n        return this;\n    }\n\n    @Override\n    public ProcessInstanceQuery processDefinitionVersion(Integer processDefinitionVersion) {\n        if (processDefinitionVersion == null) {\n            throw new ActivitiIllegalArgumentException(\"Process definition version is null\");\n        }\n\n        if (inOrStatement) {\n            this.currentOrQueryObject.processDefinitionVersion = processDefinitionVersion;\n        } else {\n            this.processDefinitionVersion = processDefinitionVersion;\n        }\n        return this;\n    }\n\n    public ProcessInstanceQueryImpl processDefinitionId(String processDefinitionId) {\n        if (processDefinitionId == null) {\n            throw new ActivitiIllegalArgumentException(\"Process definition id is null\");\n        }\n\n        if (inOrStatement) {\n            this.currentOrQueryObject.processDefinitionId = processDefinitionId;\n        } else {","sourceCodeStart":206,"sourceCodeEnd":242,"githubUrl":"https://github.com/Activiti/Activiti/blob/56435b1a97deeafdc09dd40074b056c89fba5a8a/activiti-core/activiti-engine/src/main/java/org/activiti/engine/impl/ProcessInstanceQueryImpl.java#L206-L242","documentation":"ProcessInstanceQuery.processDefinitionVersion() throws ActivitiIllegalArgumentException when the version argument is null. Activiti validates query parameters eagerly so that malformed queries fail at construction time rather than producing an empty or invalid SQL query at execution time.","triggerScenarios":"Calling runtimeService.createProcessInstanceQuery().processDefinitionVersion(null), e.g. when the version is read from an unvalidated request parameter or configuration and passed straight through.","commonSituations":"Building dynamic queries from HTTP query params or JSON bodies where the version field is optional and not defaulted; using Integer auto-unboxing from a null map/config value; upgrading code that previously omitted the filter.","solutions":["Check that the version is non-null before calling processDefinitionVersion, or skip the filter when absent","Default the version (e.g. parse as int with a fallback) when the caller expects a value","If the query cannot proceed without a version, fail fast in your own code with a clear message"],"exampleFix":"// before\nquery.processDefinitionVersion(request.getVersion());\n// after\nInteger version = request.getVersion();\nif (version != null) {\n    query.processDefinitionVersion(version);\n}","handlingStrategy":"validation","validationCode":"if (version == null) { throw new IllegalArgumentException(\"processDefinitionVersion must be set before querying\"); }\nquery.processDefinitionVersion(version);","typeGuard":"boolean hasVersion(Integer v) { return v != null && v > 0; }","tryCatchPattern":"try {\n    query.processDefinitionVersion(version);\n} catch (ActivitiIllegalArgumentException e) {\n    logger.warn(\"Invalid version filter: {}\", e.getMessage());\n}","preventionTips":["Null-check optional Integer fields before adding query filters","Only add filters when the value is present (conditional builder pattern)","Validate request DTOs at the API boundary","Never rely on auto-unboxing for nullable values"],"tags":["activiti","null-argument","query-api","validation"],"backgroundTag":"null-argument","analyzedSha":"56435b1a97deeafdc09dd40074b056c89fba5a8a","analyzedAt":"2026-09-09T21:00:06.703Z","contentChangedAt":"2026-09-09T21:00:06.703Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}