flowable/flowable-engine · warning
Unsupported intermediate throw event type for throw event
Error message
Unsupported intermediate throw event type for throw event {} What it means
An intermediate throw event carries an event definition type other than the supported throw kinds (message, signal, compensate) and is not null (which would be a legal 'none' throw event). The parser logs this warning and assigns no activity behavior, so the throw event does nothing at runtime.
Solutions
- Change the throw event's definition to a message, signal, or compensate definition (or remove it for a none event)
- Remove the unsupported event definition from the throw event
- Upgrade or extend the engine/parse handler if a new event definition type must be supported
Example fix
// before <intermediateThrowEvent id="t1"><escalateEventDefinition/></intermediateThrowEvent> // after <intermediateThrowEvent id="t1"><signalEventDefinition signalRef="mySignal"/></intermediateThrowEvent>
Defensive patterns
Strategy: validation
Validate before calling
for (IntermediateThrowEvent e : model.getFlowElementsOfType(IntermediateThrowEvent.class)) {
for (EventDefinition ed : e.getEventDefinitions()) {
if (!(ed instanceof MessageEventDefinition || ed instanceof SignalEventDefinition || ed instanceof CompensateEventDefinition)) {
throw new IllegalArgumentException("Unsupported throw event definition on " + e.getId());
}
}
} Prevention
- Use only message/signal/compensate (or none) throw events
- Convert escalate/link throws to supported constructs before deployment
- Keep modeling tool and engine versions aligned
When it happens
Trigger: executeParse of an IntermediateThrowEvent whose eventDefinition is not a MessageEventDefinition, SignalEventDefinition, CompensateEventDefinition, or null — e.g. an escalate/link definition, or a malformed event element producing an unknown EventDefinition subclass.
Common situations: BPMN imported from other designers using escalate or link throw definitions; model upgrades introducing event types this engine version predates; copy-paste of event definitions between elements.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- Unsupported event definition on start event
- Unsupported implementation type for EventListener
- Unsupported intermediate catch event type for event
- Activity needed for multi instance cannot bv found
- end event with cancelEventDefinition only supported inside…
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/83ef2ad7e4923ebf.
Report an issue: GitHub.
Appendix: source
Thrown at modules/flowable5-engine/src/main/java/org/activiti/engine/impl/bpmn/parser/handler/IntermediateThrowEventParseHandler.java:57
ActivityImpl nestedActivityImpl = createActivityOnCurrentScope(bpmnParse, intermediateEvent, BpmnXMLConstants.ELEMENT_EVENT_THROW);
EventDefinition eventDefinition = null;
if (!intermediateEvent.getEventDefinitions().isEmpty()) {
eventDefinition = intermediateEvent.getEventDefinitions().get(0);
}
nestedActivityImpl.setAsync(intermediateEvent.isAsynchronous());
nestedActivityImpl.setExclusive(!intermediateEvent.isNotExclusive());
if (eventDefinition instanceof SignalEventDefinition) {
bpmnParse.getBpmnParserHandlers().parseElement(bpmnParse, eventDefinition);
} else if (eventDefinition instanceof org.flowable.bpmn.model.CompensateEventDefinition) {
bpmnParse.getBpmnParserHandlers().parseElement(bpmnParse, eventDefinition);
} else if (eventDefinition == null) {
nestedActivityImpl.setActivityBehavior(bpmnParse.getActivityBehaviorFactory().createIntermediateThrowNoneEventActivityBehavior(intermediateEvent));
} else {
LOGGER.warn("Unsupported intermediate throw event type for throw event {}", intermediateEvent.getId());
}
}
//
// Seems not to be used anymore?
//
// protected CompensateEventDefinition createCompensateEventDefinition(BpmnParse bpmnParse, org.activiti.bpmn.model.CompensateEventDefinition eventDefinition, ScopeImpl scopeElement) {
// if (StringUtils.isNotEmpty(eventDefinition.getActivityRef())) {
// if (scopeElement.findActivity(eventDefinition.getActivityRef()) == null) {
// bpmnParse.getBpmnModel().addProblem("Invalid attribute value for 'activityRef': no activity with id '" + eventDefinition.getActivityRef() +
// "' in current scope " + scopeElement.getId(), eventDefinition);
// }
// }
//
// CompensateEventDefinition compensateEventDefinition = new CompensateEventDefinition();
// compensateEventDefinition.setActivityRef(eventDefinition.getActivityRef());
// compensateEventDefinition.setWaitForCompletion(eventDefinition.isWaitForCompletion());
//View on GitHub (pinned to d6d39ce1c6)