flowable/flowable-engine · error · FlowableException

Unsupported import type

Error message

Unsupported import type '%s' (import type)

What it means

Flowable throws this from WebServiceActivityBehavior.fillImporterInfo when a BPMN <import> element's importType is not 'wsdl' (and the location is not treated as WSDL). The web-service activity behavior only knows how to build a WSDL importer; anything else is rejected at BPMN parse time. The exception aborts parsing of the process containing the web-service task.

Solutions

  1. Set importType on the <import> element to the WSDL namespace: http://schemas.xmlsoap.org/wsdl/
  2. Point the import's location attribute at the actual WSDL document URL of the service
  3. Remove the <import> element entirely if the web-service task does not need it and pass the WSDL location directly on the task
  4. If a non-WSDL import is genuinely required, it is unsupported by this behavior — implement a custom ServiceTask behavior instead

Example fix

<!-- before -->
<import importType="xsd" location="http://example.com/service?wsdl" />

<!-- after -->
<import importType="http://schemas.xmlsoap.org/wsdl/" location="http://example.com/service?wsdl" />
Defensive patterns

Strategy: validation

Validate before calling

String type = importElement.getImportType();
if (!"http://schemas.xmlsoap.org/wsdl/".equals(type)) {
    throw new IllegalArgumentException("Only WSDL importType is supported, got: " + type);
}

Prevention

When it happens

Trigger: A BPMN XML file defines a <serviceTask> with <import importType="..."> where importType is anything other than the supported WSDL type (e.g. 'http://schemas.xmlsoap.org/wsdl/', misspelled, or 'xsd'). Hit during process definition parsing via fillDefinitionMaps.

Common situations: Hand-written or tool-generated BPMN copied from non-Flowable examples; typos in the importType attribute; attempting to import an XSD or other schema instead of a WSDL; modeling tools emitting import elements for other import types.

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


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

Appendix: source

Thrown at modules/flowable-engine/src/main/java/org/flowable/engine/impl/bpmn/behavior/WebServiceActivityBehavior.java:286

                    XMLImporter importerInstance = processEngineConfig.getWsdlImporterFactory()
                            .createXMLImporter(theImport);

                    xmlImporterMap.put(theImport.getNamespace(), importerInstance);
                    importerInstance.importFrom(theImport, sourceSystemId);

                    structureDefinitionMap.putAll(importerInstance.getStructures());
                    wsServiceMap.putAll(importerInstance.getServices());
                    wsOperationMap.putAll(importerInstance.getOperations());

                } catch (FlowableException e) {
                    throw e;
                } catch (Exception e) {
                    throw new FlowableException(String.format("Error importing '%s' as '%s'", theImport.getLocation(),
                            theImport.getImportType()), e);
                }

            } else {
                throw new FlowableException(String.format("Unsupported import type '%s'", theImport.getImportType()));
            }
        }
    }

    protected void returnMessage(List<DataAssociation> dataOutputAssociations, DelegateExecution execution) {
        for (DataAssociation dataAssociationElement : dataOutputAssociations) {
            AbstractDataAssociation dataAssociation = createDataOutputAssociation(dataAssociationElement);
            dataAssociation.evaluate(execution);
        }
    }

    protected void fillMessage(List<DataAssociation> dataInputAssociations, DelegateExecution execution) {
        for (DataAssociation dataAssociationElement : dataInputAssociations) {
            AbstractDataAssociation dataAssociation = createDataInputAssociation(dataAssociationElement);
            dataAssociation.evaluate(execution);
        }
    }

View on GitHub (pinned to d6d39ce1c6)