conductor-oss/conductor · error · TerminateWorkflowException

Empty 'expression' in Inline task's input parameters. A non-

Error message

Empty 'expression' in Inline task's input parameters. A non-empty String value must be provided.

What it means

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.

Source

Thrown at core/src/main/java/com/netflix/conductor/core/execution/tasks/Inline.java:119

        // provided
        if (StringUtils.isBlank(evaluatorType)) {
            LOGGER.error("Empty {} in INLINE task. ", QUERY_EVALUATOR_TYPE);
            throw new TerminateWorkflowException(
                    "Empty '"
                            + QUERY_EVALUATOR_TYPE
                            + "' in INLINE task's input parameters. A non-empty String value must be provided.");
        }
        if (evaluators.get(evaluatorType) == null) {
            LOGGER.error("Evaluator {} for INLINE task not registered", evaluatorType);
            throw new TerminateWorkflowException(
                    "Unknown evaluator '" + evaluatorType + "' in INLINE task.");
        }
    }

    private void checkExpression(String expression) {
        if (StringUtils.isBlank(expression)) {
            LOGGER.error("Empty {} in INLINE task. ", QUERY_EXPRESSION_PARAMETER);
            throw new TerminateWorkflowException(
                    "Empty '"
                            + QUERY_EXPRESSION_PARAMETER
                            + "' in Inline task's input parameters. A non-empty String value must be provided.");
        }
    }
}

View on GitHub (pinned to cf7c3e4a8a)

Solutions

  1. Add a non-empty 'expression' string to the INLINE task's inputParameters in the workflow definition JSON.
  2. 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.
  3. Check the task's inputParameters in the Conductor UI or via the task API to confirm the expression value is present and non-empty.
  4. Add a default value in the parameter template or upstream task so the expression is always populated.

Example fix

// before
"inputParameters": {
  "evaluatorType": "javascript",
  "expression": ""
}
// after
"inputParameters": {
  "evaluatorType": "javascript",
  "expression": "return { result: $.input.value * 2 };"
}
Defensive patterns

Strategy: validation

Validate before calling

// Validate INLINE task input before starting the workflow
String expression = (String) inlineTaskInput.get("expression");
if (expression == null || expression.trim().isEmpty()) {
    throw new IllegalArgumentException(
        "INLINE task '" + taskRefName + "' is missing a non-empty 'expression' parameter");
}

Try / catch

// At the workflow-definition level, validate all INLINE tasks before registration
for (WorkflowTask wt : workflowDef.collectTasks()) {
    if ("INLINE".equals(wt.getType())) {
        Map<String, Object> params = wt.getInputParameters();
        Object expr = params.get("expression");
        if (expr == null || expr.toString().trim().isEmpty()) {
            throw new IllegalArgumentException(
                "INLINE task '" + wt.getName() + "' has empty expression");
        }
    }
}

Prevention

When it happens

Trigger: 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.

Common situations: 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.

Related errors


AI-assisted analysis of conductor-oss/conductor@cf7c3e4a8a (2026-08-14). Data as JSON: /api/errors/0615faa107e5592a. Report an issue: GitHub.