flowable/flowable-engine · error · XMLException

Error processing CMMN document

Error message

Error processing CMMN document

What it means

CmmnDiExtensionXmlConverter processes the DI (diagram interchange) extension of a CMMN document. Any exception during that processing is logged and rethrown as XMLException 'Error processing CMMN document', so the actual failure is always in the cause.

Source

Thrown at modules/flowable-cmmn-converter/src/main/java/org/flowable/cmmn/converter/CmmnDiExtensionXmlConverter.java:77

                            graphicInfo.setY(Double.valueOf(xtr.getAttributeValue(null, CmmnXmlConstants.ATTRIBUTE_DI_Y)));
                            if ("source".equals(type)) {
                                edgeInfo.setSourceDockerInfo(graphicInfo);
                            } else {
                                edgeInfo.setTargetDockerInfo(graphicInfo);
                            }
                        }
                    }

                } else if (xtr.isEndElement()) {
                    if (CmmnXmlConstants.ELEMENT_DI_EXTENSION.equalsIgnoreCase(xtr.getLocalName())) {
                        readyWithChildElements = true;
                    }
                }

            }
        } catch (Exception ex) {
            LOGGER.error("Error processing CMMN document", ex);
            throw new XMLException("Error processing CMMN document", ex);
        }

        return null;
    }
    
}

View on GitHub (pinned to d6d39ce1c6)

Solutions

  1. Inspect the cause exception logged with 'Error processing CMMN document' for the exact problem
  2. Correct or remove the DI/diagram section from the CMMN XML and re-export diagrams from the modeler
  3. Validate the document against the CMMN 1.1 XSD
  4. Re-generate the file with a supported CMMN exporter version

Example fix

// before (XML)
<CMMNShape cmmnElementRef="missingId" .../>
// after
<CMMNShape cmmnElementRef="planItem_1" .../> <!-- ref an existing element -->
Defensive patterns

Strategy: validation

Validate before calling

// verify DI shape refs point to existing elements before conversion
Set<String> ids = collectAllElementIds(cmmnDoc);
for (CMMNShape s : diShapes) {
    if (!ids.contains(s.getCmmnElementRef())) throw new IllegalArgumentException("DI shape refs unknown element " + s.getCmmnElementRef());
}

Try / catch

try { converter.convertToCmmnModel(provider); } catch (XMLException e) { log.error("CMMN DI processing failed", e.getCause()); throw new DeploymentException("Invalid CMMN DI section", e); }

Prevention

When it happens

Trigger: Converting a CMMN file whose DI extension section (CMMNDI, shapes/bounds/edges) contains malformed data or references, causing any runtime exception inside the converter's processing loop.

Common situations: DI coordinates referencing non-existent shape IDs; broken or hand-edited diagram sections; exporter bugs writing inconsistent DI data; corrupted files.

Understand the failure class

Background: "Invalid ... format", "must be in format X", "does not look like a ..." — invalid argument format errors across CLI tools and libraries — this error's family across 17 libraries.

Related errors


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