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
- Read the cause (FlowableDmnExpressionException#getCause) and the logged parsedExpression to identify the real failure; fix the expression text in the DMN model.
- Verify the variables passed to the decision evaluation (DmnDecisionTableRuleInput) match the names used in input expressions (executionContext.checkExecutionContext also validates this).
- Test the expression in isolation; correct FEEL/EL syntax and operand types (e.g. use proper date literals or JUEL-parseable expressions).
- 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
- Keep input-entry expressions syntactically valid for the configured EL provider
- Ensure referenced input variable names match those supplied at decision evaluation
- Watch the WARN log line 'Error while executing input entry' for the parsed expression and root cause
- Test expressions in isolation after upgrading Flowable or swapping EL providers
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
- error while executing output entry
- Cannot find case definition for id:
- DMN repository service is not available
- key is null
- keyLike is null
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/7b047683cefd7bdb.
Report an issue: GitHub.