flowable/flowable-engine · warning

Error parsing input expression

Error message

Error parsing input expression

What it means

Warning logged by InputExpressionParser.parseChildElement when an exception occurs while reading the <inputExpression> child of a DMN <input> clause (typeRef, text, etc.). The parser swallows the exception and the clause is left with a null inputExpression, meaning the decision table column has no expression and will not evaluate correctly, while the model still parses.

Source

Thrown at modules/flowable-dmn-xml-converter/src/main/java/org/flowable/dmn/converter/child/InputExpressionParser.java:54

        }

        LiteralExpression inputExpression = new LiteralExpression();
        inputExpression.setId(xtr.getAttributeValue(null, ATTRIBUTE_ID));
        inputExpression.setTypeRef(xtr.getAttributeValue(null, ATTRIBUTE_TYPE_REF));

        boolean readyWithInputExpression = false;
        try {
            while (!readyWithInputExpression && xtr.hasNext()) {
                xtr.next();
                if (xtr.isStartElement() && ELEMENT_TEXT.equalsIgnoreCase(xtr.getLocalName())) {
                    inputExpression.setText(xtr.getElementText());

                } else if (xtr.isEndElement() && getElementName().equalsIgnoreCase(xtr.getLocalName())) {
                    readyWithInputExpression = true;
                }
            }
        } catch (Exception e) {
            LOGGER.warn("Error parsing input expression", e);
        }

        clause.setInputExpression(inputExpression);
    }
}

View on GitHub (pinned to d6d39ce1c6)

Solutions

  1. Read the attached stack trace to pinpoint the XML error location.
  2. Validate the .dmn against the DMN XSD and fix the malformed inputExpression block.
  3. Re-export the decision table from the DMN modeling tool.
  4. Consider strict parsing (rethrow) so broken models fail at deployment time.

Example fix

// before: nested/wrong element
<input>
  <inputExpression typeRef="string"><text>...</invalid></inputExpression>
</input>
// after
<input>
  <inputExpression typeRef="string"><text>invoiceType</text></inputExpression>
</input>
Defensive patterns

Strategy: validation

Validate before calling

// assert each input clause carries an inputExpression after load
DmnDecision d = dmnRepository.createDecisionQuery().decisionKey(key).singleResult();
// or statically: every <dmn:input> must contain exactly one <dmn:inputExpression>

Prevention

When it happens

Trigger: parseChildElements dispatches to InputExpressionParser; the XMLStreamReader throws (malformed XML, unexpected element nesting, premature EOF) while scanning until the matching </inputExpression> end element.

Common situations: Malformed <input> blocks in hand-edited .dmn files; vendor-exported DMN with unexpected nesting inside inputExpression; encoding/truncation problems in the resource file.

Understand the failure class

Background: Schema validation failed / invalid input schema: payload rejected because its shape doesn't match the expected schema — this error's family across 28 libraries.

Related errors


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