flowable/flowable-engine · error · FlowableException
Error converting decision reference expression
Error message
Error converting decision reference expression
What it means
Thrown by DecisionRefExpressionXmlConverter.convert when an XMLStreamException occurs while reading the decisionRefExpression text of a DecisionTask. It signals low-level XML stream failure while parsing the <decisionRefExpression> element.
Source
Thrown at modules/flowable-cmmn-converter/src/main/java/org/flowable/cmmn/converter/DecisionRefExpressionXmlConverter.java:46
@Override
public String getXMLElementName() {
return CmmnXmlConstants.ELEMENT_DECISION_REF_EXPRESSION;
}
@Override
public boolean hasChildElements() {
return false;
}
@Override
protected CmmnElement convert(XMLStreamReader xtr, ConversionHelper conversionHelper) {
try {
String expression = xtr.getElementText();
if (StringUtils.isNotEmpty(expression) && conversionHelper.getCurrentCmmnElement() instanceof DecisionTask decisionTask) {
decisionTask.setDecisionRefExpression(expression);
}
} catch (XMLStreamException e) {
throw new FlowableException("Error converting decision reference expression", e);
}
return null;
}
}
View on GitHub (pinned to d6d39ce1c6)
Solutions
- Validate the XML and fix malformed markup around the decisionRefExpression element.
- Escape XML-special characters in the expression value.
- Re-export or re-download the CMMN file to rule out truncation/corruption.
Example fix
<!-- before -->
<decisionTask id="dt1">
<decisionRefExpression>${decision & 'key'}</decisionRefExpression>
</decisionTask>
<!-- after -->
<decisionTask id="dt1">
<decisionRefExpression>${decision & 'key'}</decisionRefExpression>
</decisionTask> Defensive patterns
Strategy: validation
Validate before calling
DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(cmmnFile); // strict pre-parse catches malformed decisionRefExpression markup
Try / catch
try {
cmmnModel = converter.convertToCmmnModel(stream, encoding);
} catch (FlowableException e) {
if ("Error converting decision reference expression".equals(e.getMessage())) {
// inspect cause XMLStreamException, repair the decisionRefExpression element
}
throw e;
} Prevention
- Validate XML well-formedness before conversion.
- Escape &, <, > inside decisionRefExpression values.
- Verify file integrity after transferring CMMN assets between environments.
When it happens
Trigger: getElementText() throws XMLStreamException due to malformed or truncated XML within the <decisionRefExpression> element, unclosed tags, or invalid characters in the expression.
Common situations: Truncated CMMN files during transfer; unescaped expression characters; files generated by faulty exporters; encoding mismatches.
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
- Error while reading the CMMN 1.1 XML
- Error converting condition
- Error parsing XML
- Error processing CMMN document
- The CMMN 1.1 xml is not properly encoded
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/4582c264a8feedfb.
Report an issue: GitHub.