flowable/flowable-engine · error · FlowableException
Error while reading eventType element
Error message
Error while reading eventType element
What it means
Thrown by ExtensionElementsXMLConverter.readEventType when an exception occurs while reading the eventType element (parsed as an extension element whose text sets the start event type on a Case or event-related element). It wraps the underlying parsing exception in a FlowableException.
Solutions
- Fix the XML around the eventType element (well-formed tags, valid nesting inside extensionElements).
- Use a supported eventType value and element format matching your Flowable version's extension schema.
- Validate the whole CMMN document against the XSD to catch structural issues before conversion.
Example fix
<!-- before --> <extensionElements> <flowable:eventType>user_join</flowable:eventType> </extensionElements> <!-- after (well-formed, schema-compliant) --> <extensionElements> <flowable:eventType>userEventActivation</flowable:eventType> </extensionElements>
Defensive patterns
Strategy: validation
Validate before calling
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(cmmnFile); // pre-parse to catch malformed eventType extension markup
Try / catch
try {
cmmnModel = converter.convertToCmmnModel(stream, encoding);
} catch (FlowableException e) {
if ("Error while reading eventType element".equals(e.getMessage())) {
// repair the eventType element per the cause XMLStreamException
}
throw e;
} Prevention
- Validate extension element markup (especially eventType) before conversion.
- Keep eventType values within the set your Flowable version supports for case start events.
- Confirm file completeness/encoding after moving CMMN assets across systems.
When it happens
Trigger: CmmnXmlUtil.parseExtensionElement(xtr) or getElementText() throws while parsing the <eventType>/<flowable:eventType> element: malformed XML, unclosed tags, or invalid stream state.
Common situations: Hand-written start-event extensions with invalid markup; case files produced by tools emitting a non-standard eventType element; truncated files.
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
- e.getMessage()
- Error converting condition
- Error converting decision reference expression
- Error parsing XML
- Error processing CMMN document
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/8eb4e246a5c17825.
Report an issue: GitHub.
Appendix: source
Thrown at modules/flowable-cmmn-converter/src/main/java/org/flowable/cmmn/converter/ExtensionElementsXMLConverter.java:417
} else if (StringUtils.isNotEmpty(xtr.getAttributeValue(null, ATTRIBUTE_DELEGATE_EXPRESSION))) {
handler.setImplementation(xtr.getAttributeValue(null, ATTRIBUTE_DELEGATE_EXPRESSION));
handler.setImplementationType(IMPLEMENTATION_TYPE_DELEGATEEXPRESSION);
}
}
protected void readEventType(XMLStreamReader xtr, ConversionHelper conversionHelper) {
CmmnElement currentCmmnElement = conversionHelper.getCurrentCmmnElement();
String eventType = null;
try {
// Parsing and storing as an extension element, which means the export will work automatically
ExtensionElement extensionElement = CmmnXmlUtil.parseExtensionElement(xtr);
eventType = extensionElement.getElementText();
} catch (Exception e) {
throw new FlowableException("Error while reading eventType element", e);
}
if (currentCmmnElement instanceof Case caze) {
caze.setStartEventType(eventType);
} else if (currentCmmnElement instanceof SendEventServiceTask sendEventServiceTask) {
sendEventServiceTask.setEventType(eventType);
} else if (currentCmmnElement instanceof GenericEventListener genericEventListener) {
genericEventListener.setEventType(eventType);
} else {
LOGGER.warn("Unsupported eventType detected for element {}", currentCmmnElement);
}
}
protected void readVariableAggregationDefinition(XMLStreamReader xtr, ConversionHelper conversionHelper) {
CmmnElement currentCmmnElement = conversionHelper.getCurrentCmmnElement();View on GitHub (pinned to d6d39ce1c6)