{"record":{"id":"0615faa107e5592a","repo":"conductor-oss/conductor","slug":"empty-expression-in-inline-task-s-input-paramete","errorCode":null,"errorMessage":"Empty 'expression' in Inline task's input parameters. A non-empty String value must be provided.","messagePattern":"Empty 'expression' in Inline task's input parameters\\. A non-empty String value must be provided\\.","errorType":"exception","errorClass":"TerminateWorkflowException","httpStatus":null,"severity":"error","filePath":"core/src/main/java/com/netflix/conductor/core/execution/tasks/Inline.java","lineNumber":119,"sourceCode":"        // provided\n        if (StringUtils.isBlank(evaluatorType)) {\n            LOGGER.error(\"Empty {} in INLINE task. \", QUERY_EVALUATOR_TYPE);\n            throw new TerminateWorkflowException(\n                    \"Empty '\"\n                            + QUERY_EVALUATOR_TYPE\n                            + \"' in INLINE task's input parameters. A non-empty String value must be provided.\");\n        }\n        if (evaluators.get(evaluatorType) == null) {\n            LOGGER.error(\"Evaluator {} for INLINE task not registered\", evaluatorType);\n            throw new TerminateWorkflowException(\n                    \"Unknown evaluator '\" + evaluatorType + \"' in INLINE task.\");\n        }\n    }\n\n    private void checkExpression(String expression) {\n        if (StringUtils.isBlank(expression)) {\n            LOGGER.error(\"Empty {} in INLINE task. \", QUERY_EXPRESSION_PARAMETER);\n            throw new TerminateWorkflowException(\n                    \"Empty '\"\n                            + QUERY_EXPRESSION_PARAMETER\n                            + \"' in Inline task's input parameters. A non-empty String value must be provided.\");\n        }\n    }\n}\n","sourceCodeStart":101,"sourceCodeEnd":126,"githubUrl":"https://github.com/conductor-oss/conductor/blob/cf7c3e4a8adfb158be778ab1ec525323c363cd3a/core/src/main/java/com/netflix/conductor/core/execution/tasks/Inline.java#L101-L126","documentation":"Thrown by the INLINE system task when the 'expression' input parameter is null, empty, or whitespace-only. The INLINE task evaluates an inline script (JavaScript via GraalJS, Python, etc.) and requires a non-blank expression string to execute. This is a TerminateWorkflowException, meaning the task is marked FAILED_WITH_TERMINAL_ERROR and the workflow will not retry this task because the same input would produce the same failure.","triggerScenarios":"Executing a workflow containing an INLINE task whose inputParameters map omits the 'expression' key, sets it to an empty string, sets it to null, or sets it to a whitespace-only string. Also triggered when a dynamic expression like ${workflow.input.expr} resolves to null/blank at runtime.","commonSituations":"Forgetting to include the 'expression' field in the INLINE task definition. Using a ${...} placeholder that resolves to null because the referenced workflow input or task output key doesn't exist. Copy-pasting an INLINE task definition and forgetting to fill in the expression.","solutions":["Add a non-empty 'expression' string to the INLINE task's inputParameters in the workflow definition JSON.","If the expression uses ${...} variable interpolation, verify that the referenced source key (e.g. workflow.input.myExpr) actually exists and resolves to a non-blank value at runtime.","Check the task's inputParameters in the Conductor UI or via the task API to confirm the expression value is present and non-empty.","Add a default value in the parameter template or upstream task so the expression is always populated."],"exampleFix":"// before\n\"inputParameters\": {\n  \"evaluatorType\": \"javascript\",\n  \"expression\": \"\"\n}\n// after\n\"inputParameters\": {\n  \"evaluatorType\": \"javascript\",\n  \"expression\": \"return { result: $.input.value * 2 };\"\n}","handlingStrategy":"validation","validationCode":"// Validate INLINE task input before starting the workflow\nString expression = (String) inlineTaskInput.get(\"expression\");\nif (expression == null || expression.trim().isEmpty()) {\n    throw new IllegalArgumentException(\n        \"INLINE task '\" + taskRefName + \"' is missing a non-empty 'expression' parameter\");\n}","typeGuard":null,"tryCatchPattern":"// At the workflow-definition level, validate all INLINE tasks before registration\nfor (WorkflowTask wt : workflowDef.collectTasks()) {\n    if (\"INLINE\".equals(wt.getType())) {\n        Map<String, Object> params = wt.getInputParameters();\n        Object expr = params.get(\"expression\");\n        if (expr == null || expr.toString().trim().isEmpty()) {\n            throw new IllegalArgumentException(\n                \"INLINE task '\" + wt.getName() + \"' has empty expression\");\n        }\n    }\n}","preventionTips":["Always include a non-empty 'expression' in every INLINE task definition.","Validate workflow definitions with a pre-registration linting step that checks INLINE tasks.","When using ${...} interpolation for the expression, ensure the source key has a non-null default."],"tags":["inline-task","workflow-definition","input-validation","terminate-workflow"],"backgroundTag":null,"analyzedSha":"cf7c3e4a8adfb158be778ab1ec525323c363cd3a","analyzedAt":"2026-08-14T03:33:19.897Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}