{"record":{"id":"4582c264a8feedfb","repo":"flowable/flowable-engine","slug":"error-converting-decision-reference-expression","errorCode":null,"errorMessage":"Error converting decision reference expression","messagePattern":"Error converting decision reference expression","errorType":"exception","errorClass":"FlowableException","httpStatus":null,"severity":"error","filePath":"modules/flowable-cmmn-converter/src/main/java/org/flowable/cmmn/converter/DecisionRefExpressionXmlConverter.java","lineNumber":46,"sourceCode":"    @Override\n    public String getXMLElementName() {\n        return CmmnXmlConstants.ELEMENT_DECISION_REF_EXPRESSION;\n    }\n\n    @Override\n    public boolean hasChildElements() {\n        return false;\n    }\n\n    @Override\n    protected CmmnElement convert(XMLStreamReader xtr, ConversionHelper conversionHelper) {\n        try {\n            String expression = xtr.getElementText();\n            if (StringUtils.isNotEmpty(expression) && conversionHelper.getCurrentCmmnElement() instanceof DecisionTask decisionTask) {\n                decisionTask.setDecisionRefExpression(expression);\n            }\n        } catch (XMLStreamException e) {\n            throw new FlowableException(\"Error converting decision reference expression\", e);\n        }\n        return null;\n    }\n\n}\n","sourceCodeStart":28,"sourceCodeEnd":52,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-cmmn-converter/src/main/java/org/flowable/cmmn/converter/DecisionRefExpressionXmlConverter.java#L28-L52","documentation":"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.","triggerScenarios":"getElementText() throws XMLStreamException due to malformed or truncated XML within the <decisionRefExpression> element, unclosed tags, or invalid characters in the expression.","commonSituations":"Truncated CMMN files during transfer; unescaped expression characters; files generated by faulty exporters; encoding mismatches.","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."],"exampleFix":"<!-- before -->\n<decisionTask id=\"dt1\">\n  <decisionRefExpression>${decision & 'key'}</decisionRefExpression>\n</decisionTask>\n<!-- after -->\n<decisionTask id=\"dt1\">\n  <decisionRefExpression>${decision &amp; 'key'}</decisionRefExpression>\n</decisionTask>","handlingStrategy":"validation","validationCode":"DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(cmmnFile); // strict pre-parse catches malformed decisionRefExpression markup","typeGuard":null,"tryCatchPattern":"try {\n    cmmnModel = converter.convertToCmmnModel(stream, encoding);\n} catch (FlowableException e) {\n    if (\"Error converting decision reference expression\".equals(e.getMessage())) {\n        // inspect cause XMLStreamException, repair the decisionRefExpression element\n    }\n    throw e;\n}","preventionTips":["Validate XML well-formedness before conversion.","Escape &, <, > inside decisionRefExpression values.","Verify file integrity after transferring CMMN assets between environments."],"tags":["cmmn","xml","parsing"],"backgroundTag":"schema-validation-failed","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}