{"record":{"id":"e0077d768afe3a1a","repo":"flowable/flowable-engine","slug":"process-definition-id-is-null-e0077d","errorCode":null,"errorMessage":"process definition id is null","messagePattern":"process definition id is null","errorType":"validation","errorClass":"ActivitiIllegalArgumentException","httpStatus":null,"severity":"error","filePath":"modules/flowable5-engine/src/main/java/org/activiti/engine/impl/cmd/GetProcessDefinitionInfoCmd.java","lineNumber":41,"sourceCode":"import tools.jackson.databind.node.ObjectNode;\n\n/**\n * @author Tijs Rademakers\n */\npublic class GetProcessDefinitionInfoCmd implements Command<ObjectNode>, Serializable {\n\n    private static final long serialVersionUID = 1L;\n\n    protected String processDefinitionId;\n\n    public GetProcessDefinitionInfoCmd(String processDefinitionId) {\n        this.processDefinitionId = processDefinitionId;\n    }\n\n    @Override\n    public ObjectNode execute(CommandContext commandContext) {\n        if (processDefinitionId == null) {\n            throw new ActivitiIllegalArgumentException(\"process definition id is null\");\n        }\n\n        ObjectNode resultNode = null;\n        DeploymentManager deploymentManager = commandContext.getProcessEngineConfiguration().getDeploymentManager();\n        // make sure the process definition is in the cache\n        deploymentManager.findDeployedProcessDefinitionById(processDefinitionId);\n        ProcessDefinitionInfoCacheObject definitionInfoCacheObject = deploymentManager.getProcessDefinitionInfoCache().get(processDefinitionId);\n        if (definitionInfoCacheObject != null) {\n            resultNode = definitionInfoCacheObject.getInfoNode();\n        }\n\n        return resultNode;\n    }\n\n}","sourceCodeStart":23,"sourceCodeEnd":56,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable5-engine/src/main/java/org/activiti/engine/impl/cmd/GetProcessDefinitionInfoCmd.java#L23-L56","documentation":"GetProcessDefinitionInfoCmd returns process definition info as an ObjectNode. It validates the input and throws ActivitiIllegalArgumentException('process definition id is null') when processDefinitionId is null before consulting the deployment manager cache.","triggerScenarios":"Calling RuntimeService/RepositoryService getProcessDefinitionInfo(null) style APIs, or building the command directly with a null id — usually a null result propagated from an earlier definition lookup.","commonSituations":"processDefinitionQuery().singleResult() returned null on an empty result; missing id in a REST payload; variable never initialised after a refactor.","solutions":["Pass a valid process definition id from repositoryService.createProcessDefinitionQuery().list()/singleResult()","Null-check the definition lookup result before calling getProcessDefinitionInfo","Ensure the definition is deployed and its id (not key) is used"],"exampleFix":"// before\nProcessDefinition pd = repoService.createProcessDefinitionQuery()\n    .processDefinitionKey(\"myProcess\").singleResult();\nObject info = runtimeService.getProcessDefinitionInfo(pd.getId()); // NPE/null if pd missing\n// after\nProcessDefinition pd = repoService.createProcessDefinitionQuery()\n    .processDefinitionKey(\"myProcess\").latestVersion().singleResult();\nObject info = pd != null ? runtimeService.getProcessDefinitionInfo(pd.getId()) : null;","handlingStrategy":"validation","validationCode":"if (processDefinitionId == null) {\n    throw new IllegalArgumentException(\"processDefinitionId must be provided\");\n}","typeGuard":"boolean hasDefinitionId(String id) { return id != null && !id.trim().isEmpty(); }","tryCatchPattern":"try {\n    runtimeService.getProcessDefinitionInfo(processDefinitionId);\n} catch (ActivitiIllegalArgumentException e) {\n    // null definition id: bad request\n}","preventionTips":["Check singleResult() for null before reading getId()","Query by key+latestVersion to obtain stable current ids","Add @NotNull validation on request DTOs carrying definition ids"],"tags":["flowable","activiti","null-argument","process-definition"],"backgroundTag":"null-argument","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}