flowable/flowable-engine · error · FlowableDmnExpressionException

error while executing input entry

Error message

error while executing input entry

What it means

Wrapped failure thrown by executeInputExpression when evaluating the parsed input-entry expression via RuleExpressionCondition.evaluate throws any Exception. The original exception is preserved as the cause and FlowableDmnExpressionException carries the parsed expression text, indicating the EL/FEEL expression failed at runtime (bad syntax, missing variable, wrong types, or forbidden expression content).

Source

Thrown at modules/flowable-dmn-engine/src/main/java/org/flowable/dmn/engine/impl/el/ELExpressionExecutor.java:59

        }
        if (executionContext == null) {
            throw new IllegalArgumentException("execution context is required");
        }
        
        String inputExpression = inputClause.getInputExpression().getText();
        executionContext.checkExecutionContext(inputExpression);
        
        // pre parse expression
        String parsedExpression = ELInputEntryExpressionPreParser.parse(inputEntry.getText(), inputExpression, inputClause.getInputExpression().getTypeRef());

        Expression expression = expressionManager.createExpression(parsedExpression);
        RuleExpressionCondition condition = new RuleExpressionCondition(expression);
        
        try {
            return condition.evaluate(executionContext.getStackVariables(), executionContext);
        } catch (Exception ex) {
            LOGGER.warn("Error while executing input entry: {}", parsedExpression, ex);
            throw new FlowableDmnExpressionException("error while executing input entry", parsedExpression, ex);
        }
    }

    public static Object executeOutputExpression(OutputClause outputClause, LiteralExpression outputEntry, ExpressionManager expressionManager, ELExecutionContext executionContext) {
        if (outputClause == null) {
            throw new IllegalArgumentException("output clause is required");
        }
        if (outputEntry == null) {
            throw new IllegalArgumentException("output entry is required");
        }
        if (executionContext == null) {
            throw new IllegalArgumentException("execution context is required");
        }
        
        String parsedExpression = ELOutputEntryExpressionPreParser.parse(outputEntry.getText());
        
        Expression expression = expressionManager.createExpression(parsedExpression);
        RuleExpressionOutput outputExpression = new RuleExpressionOutput(expression);

View on GitHub (pinned to d6d39ce1c6)

Solutions

  1. Read the cause (FlowableDmnExpressionException#getCause) and the logged parsedExpression to identify the real failure; fix the expression text in the DMN model.
  2. Verify the variables passed to the decision evaluation (DmnDecisionTableRuleInput) match the names used in input expressions (executionContext.checkExecutionContext also validates this).
  3. Test the expression in isolation; correct FEEL/EL syntax and operand types (e.g. use proper date literals or JUEL-parseable expressions).
  4. Catch FlowableDmnExpressionException at your evaluation entry point and map it to a user-facing validation error for the offending rule/cell.

Example fix

// before (DMN input entry)
amount > 10 && status = 'open'
// after (quote string literal correctly for the EL provider)
amount > 10 && status == "open"
Defensive patterns

Strategy: try-catch

Validate before calling

executionContext.checkExecutionContext(inputExpression); // run before evaluation to catch unknown variables early

Try / catch

try {
    ELExpressionExecutor.executeInputExpression(clause, entry, em, ctx);
} catch (FlowableDmnExpressionException e) {
    LOGGER.error("Input entry '{}' failed: {}", e.getExpressionString(), e.getCause());
    // map to rule-level validation error
}

Prevention

When it happens

Trigger: Any exception inside condition.evaluate(stackVariables, executionContext): unparseable/invalid expression text in the input entry, referencing a variable not present in the execution context stack, type errors during comparison, or a JuelElProvider/ELProvider failure.

Common situations: DMN input entries referencing input variable names that differ from those passed at decision evaluation; expressions like `> 100` or date comparisons that the EL provider can't handle; custom EL providers throwing on unsupported constructs; typos in expression syntax.

Related errors


AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11). Data as JSON: /api/errors/7b047683cefd7bdb. Report an issue: GitHub.