{"record":{"id":"83ef2ad7e4923ebf","repo":"flowable/flowable-engine","slug":"unsupported-intermediate-throw-event-type-for-thro","errorCode":null,"errorMessage":"Unsupported intermediate throw event type for throw event {}","messagePattern":"Unsupported intermediate throw event type for throw event (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"modules/flowable5-engine/src/main/java/org/activiti/engine/impl/bpmn/parser/handler/IntermediateThrowEventParseHandler.java","lineNumber":57,"sourceCode":"\n        ActivityImpl nestedActivityImpl = createActivityOnCurrentScope(bpmnParse, intermediateEvent, BpmnXMLConstants.ELEMENT_EVENT_THROW);\n\n        EventDefinition eventDefinition = null;\n        if (!intermediateEvent.getEventDefinitions().isEmpty()) {\n            eventDefinition = intermediateEvent.getEventDefinitions().get(0);\n        }\n\n        nestedActivityImpl.setAsync(intermediateEvent.isAsynchronous());\n        nestedActivityImpl.setExclusive(!intermediateEvent.isNotExclusive());\n\n        if (eventDefinition instanceof SignalEventDefinition) {\n            bpmnParse.getBpmnParserHandlers().parseElement(bpmnParse, eventDefinition);\n        } else if (eventDefinition instanceof org.flowable.bpmn.model.CompensateEventDefinition) {\n            bpmnParse.getBpmnParserHandlers().parseElement(bpmnParse, eventDefinition);\n        } else if (eventDefinition == null) {\n            nestedActivityImpl.setActivityBehavior(bpmnParse.getActivityBehaviorFactory().createIntermediateThrowNoneEventActivityBehavior(intermediateEvent));\n        } else {\n            LOGGER.warn(\"Unsupported intermediate throw event type for throw event {}\", intermediateEvent.getId());\n        }\n    }\n\n    //\n    // Seems not to be used anymore?\n    //\n    // protected CompensateEventDefinition createCompensateEventDefinition(BpmnParse bpmnParse, org.activiti.bpmn.model.CompensateEventDefinition eventDefinition, ScopeImpl scopeElement) {\n    // if (StringUtils.isNotEmpty(eventDefinition.getActivityRef())) {\n    // if (scopeElement.findActivity(eventDefinition.getActivityRef()) == null) {\n    // bpmnParse.getBpmnModel().addProblem(\"Invalid attribute value for 'activityRef': no activity with id '\" + eventDefinition.getActivityRef() +\n    // \"' in current scope \" + scopeElement.getId(), eventDefinition);\n    // }\n    // }\n    //\n    // CompensateEventDefinition compensateEventDefinition = new CompensateEventDefinition();\n    // compensateEventDefinition.setActivityRef(eventDefinition.getActivityRef());\n    // compensateEventDefinition.setWaitForCompletion(eventDefinition.isWaitForCompletion());\n    //","sourceCodeStart":39,"sourceCodeEnd":75,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable5-engine/src/main/java/org/activiti/engine/impl/bpmn/parser/handler/IntermediateThrowEventParseHandler.java#L39-L75","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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"],"exampleFix":"// before\n<intermediateThrowEvent id=\"t1\"><escalateEventDefinition/></intermediateThrowEvent>\n// after\n<intermediateThrowEvent id=\"t1\"><signalEventDefinition signalRef=\"mySignal\"/></intermediateThrowEvent>","handlingStrategy":"validation","validationCode":"for (IntermediateThrowEvent e : model.getFlowElementsOfType(IntermediateThrowEvent.class)) {\n    for (EventDefinition ed : e.getEventDefinitions()) {\n        if (!(ed instanceof MessageEventDefinition || ed instanceof SignalEventDefinition || ed instanceof CompensateEventDefinition)) {\n            throw new IllegalArgumentException(\"Unsupported throw event definition on \" + e.getId());\n        }\n    }\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["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"],"tags":["bpmn","parsing","throw-event","unsupported-type"],"backgroundTag":"unsupported-operation","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-18T11:17:12.947Z"}