{"record":{"id":"8713ae85a173cea2","repo":"flowable/flowable-engine","slug":"error-converting-case-reference-expression","errorCode":null,"errorMessage":"Error converting case reference expression","messagePattern":"Error converting case reference expression","errorType":"exception","errorClass":"FlowableException","httpStatus":null,"severity":"error","filePath":"modules/flowable-cmmn-converter/src/main/java/org/flowable/cmmn/converter/CaseRefExpressionXmlConverter.java","lineNumber":46,"sourceCode":"    @Override\n    public String getXMLElementName() {\n        return CmmnXmlConstants.ELEMENT_CASE_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 CaseTask caseTask) {\n                caseTask.setCaseRefExpression(expression);\n            }\n        } catch (XMLStreamException e) {\n            throw new FlowableException(\"Error converting case 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/CaseRefExpressionXmlConverter.java#L28-L52","documentation":"CaseRefExpressionXmlConverter reads the text content of the case reference expression element to set it on a CaseTask. If reading the element text throws XMLStreamException, it is wrapped in a FlowableException 'Error converting case reference expression'.","triggerScenarios":"Converting a CMMN document whose <caseRefExpression> element has malformed/invalid XML content (unclosed tags, illegal characters) causing XMLStreamReader.getElementText() to fail.","commonSituations":"Hand-edited XML with broken entities or encoding inside the expression element; truncated files; XML produced by tools writing invalid characters into expression text.","solutions":["Fix the XML around the caseRefExpression element so it is well-formed","Validate the document against the CMMN 1.1 XSD before deployment","Re-export the model from the modeler instead of hand-editing the XML","Check the wrapped XMLStreamException (cause) for the exact parse position"],"exampleFix":"// before\n<caseRefExpression>Watch out & </caseRefExpression>\n// after\n<caseRefExpression>${caseRefParam &gt; 0}</caseRefExpression>","handlingStrategy":"validation","validationCode":"// ensure expression element text is well-formed before conversion\nDocument doc = parseXml(cmmnBytes); // throws if malformed\nNodeList refs = doc.getElementsByTagNameNS(\"*\", \"caseRefExpression\");\nfor (int i = 0; i < refs.getLength(); i++) {\n    if (refs.item(i).getTextContent().trim().isEmpty()) throw new IllegalArgumentException(\"Empty caseRefExpression\");\n}","typeGuard":null,"tryCatchPattern":"try { converter.convertToCmmnModel(provider); } catch (FlowableException e) { throw new DeploymentException(\"Bad caseRefExpression XML: \" + e.getCause().getMessage(), e); }","preventionTips":["Never hand-edit XML around expression elements; use the modeler","Escape &, <, > inside expression text","Validate against the XSD before deployment","Check the wrapped XMLStreamException for the exact position"],"tags":["cmmn","xml-converter","xml-parse"],"backgroundTag":"invalid-argument-format","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"}