flowable/flowable-engine · warning
Error determine output clause for position: {}
Error message
Error determine output clause for position: {} What it means
Warning logged by OutputEntryParser.parseChildElement when the output clause (column) for the just-parsed output entry cannot be determined. The parser maps the entry to decisionTable.getOutputs().get(rule.getOutputEntries().size()); if outputs is null or the index is beyond the column count, outputClause remains null and this warning is emitted, but parsing proceeds with a null clause — the model's rule cells no longer line up with its output columns.
Source
Thrown at modules/flowable-dmn-xml-converter/src/main/java/org/flowable/dmn/converter/child/OutputEntryParser.java:70
} else if (xtr.isEndElement() && getElementName().equalsIgnoreCase(xtr.getLocalName())) {
readyWithOutputEntry = true;
}
}
} catch (Exception e) {
LOGGER.warn("Error parsing output entry", e);
}
// determine corresponding output clause based on position
OutputClause outputClause = null;
DecisionTable decisionTable = (DecisionTable) decision.getExpression();
if (decisionTable.getOutputs() != null) {
if (decisionTable.getOutputs().get(rule.getOutputEntries().size()) != null) {
outputClause = decisionTable.getOutputs().get(rule.getOutputEntries().size());
}
}
if (outputClause == null) {
LOGGER.warn("Error determine output clause for position: {}", decisionTable.getOutputs());
}
RuleOutputClauseContainer outputContainer = new RuleOutputClauseContainer();
outputContainer.setOutputClause(outputClause);
outputContainer.setOutputEntry(outputEntry);
rule.addOutputEntry(outputContainer);
}
}
View on GitHub (pinned to d6d39ce1c6)
Solutions
- Open the .dmn file and make each <rule> contain exactly as many <outputEntry> elements as <output> clauses.
- Validate the DMN XML against the DMN XSD to catch header/rule mismatch.
- Re-export the table from the DMN modeling tool to regenerate a consistent structure.
- Add pre-deployment model validation so the broken table is rejected instead of silently mis-mapped.
Example fix
<!-- before: 1 output column, rule has 2 outputEntries --> <rule><outputEntry>a</outputEntry><outputEntry>b</outputEntry></rule> <!-- after --> <rule><outputEntry>a</outputEntry></rule>
Defensive patterns
Strategy: validation
Validate before calling
// pre-deploy: outputEntries per rule must equal output columns
long outputs = xml.count("<dmn:output ");
for (Element rule : rules) {
int out = rule.getElementsByTag("outputEntry").size();
if (out != outputs) throw new IllegalArgumentException(
"Rule has " + out + " outputEntries but table has " + outputs + " outputs");
} Prevention
- Match every rule's outputEntry count to the table's <output> clause count
- XSD-validate .dmn files before deployment
- After merges, re-export from the DMN tool instead of hand-fixing XML
- Post-conversion, assert RuleOutputClauseContainer.getOutputClause() != null
When it happens
Trigger: A <rule> in a <decisionTable> has more <outputEntry> elements than the table has <output> clauses, or getOutputs() is null because the output clauses failed to parse — a structural mismatch in the DMN XML.
Common situations: Hand-edited .dmn where an output column was deleted but rule cells kept; merge conflicts dropping an <output> element; corrupted tool export.
Understand the failure class
Background: "This is a bug, please report it": internal invariant violations, unreachable panics, and SNH errors explained — this error's family across 47 libraries.
Related errors
- Error determine output clause for position: {}
- more than one result in decision:
- more than one result
- DMN decision with key ${finalDecisionKeyValue} execution fai
- DMN decision with key ${finalDecisionKeyValue} did not hit a
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/ed39887df4235d54.
Report an issue: GitHub.