{"record":{"id":"20b2b871387485e4","repo":"Activiti/Activiti","slug":"process-definition-id-is-null-20b2b8","errorCode":null,"errorMessage":"Process definition id is null","messagePattern":"Process definition id 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":237,"sourceCode":"    }\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 {\n            this.processDefinitionId = processDefinitionId;\n        }\n        return this;\n    }\n\n    @Override\n    public ProcessInstanceQuery processDefinitionIds(Set<String> processDefinitionIds) {\n        if (processDefinitionIds == null) {\n            throw new ActivitiIllegalArgumentException(\"Set of process definition ids is null\");\n        }\n        if (processDefinitionIds.isEmpty()) {\n            throw new ActivitiIllegalArgumentException(\"Set of process definition ids is empty\");\n        }","sourceCodeStart":219,"sourceCodeEnd":255,"githubUrl":"https://github.com/Activiti/Activiti/blob/56435b1a97deeafdc09dd40074b056c89fba5a8a/activiti-core/activiti-engine/src/main/java/org/activiti/engine/impl/ProcessInstanceQueryImpl.java#L219-L255","documentation":"ProcessInstanceQueryImpl.processDefinitionId() throws ActivitiIllegalArgumentException when the processDefinitionId string is null. The engine requires a concrete definition id to build the query predicate and rejects null up front.","triggerScenarios":"Calling .processDefinitionId(null) on a ProcessInstanceQuery, typically when the id comes from an unset variable, a failed lookup, or an optional request field.","commonSituations":"Passing the result of a repositoryService call or form field that was empty; wiring REST params without null checks; refactoring where a default id was removed.","solutions":["Guard for null and only add the filter when an id is present","Resolve the definition id earlier and verify it is non-null before building the query","If null means 'any definition', omit the call instead"],"exampleFix":"// before\nquery.processDefinitionId(params.get(\"definitionId\"));\n// after\nString definitionId = params.get(\"definitionId\");\nif (definitionId != null && !definitionId.isEmpty()) {\n    query.processDefinitionId(definitionId);\n}","handlingStrategy":"validation","validationCode":"if (processDefinitionId == null || processDefinitionId.isEmpty()) { throw new IllegalArgumentException(\"processDefinitionId required\"); }\nquery.processDefinitionId(processDefinitionId);","typeGuard":"boolean isValidId(String id) { return id != null && !id.trim().isEmpty(); }","tryCatchPattern":"try {\n    query.processDefinitionId(id);\n} catch (ActivitiIllegalArgumentException e) {\n    logger.warn(\"Missing definition id: {}\", e.getMessage());\n}","preventionTips":["Validate ids at the boundary before building queries","Use Optional<String> and only call the filter via ifPresent","Ensure lookups that produce ids fail loudly on missing results"],"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"}