Invalid Nested Schema Loading Error with Oracle BPEL, AIA/PIP

brian.sipseyTechnical TipsLeave a Comment

The Issue: XML parsing failed because of an “undefined part element.”

Working with Oracle BPEL and nested schemas has given me this error a number of times when, so I thought I would share a common solution and info on where to look. This occurs a lot when moving between environments if the build scripts do not dynamically update the endpoints. It seems like a really generic error because it is widely used for any error loading schemas, and doesn’t provide exact line numbers. It is actually quite specific once you realize what the error is if you are willing to hunt line by line through the wsdls and find the line causing the problem. As a side note, if this error occurs with empty details “”, you probably just have a getVariable() xpath expression looking up an invalid variable. This can be a big issue, that is easiest to resolve by restoring an earlier history version of the code that compiled rather than doing a large hunt.

The full error:

[Error ORABPEL-10902]: compilation failed
[Description]: in "bpel.xml", XML parsing failed because "undefined part element.
In WSDL at "file:/C:/projects/ExampleProcessReqABCSImpl.wsdl", message part element "{http://xmlns.oracle.com/ExampleObject}ExampleObject" is not defined in any of the schemas.
Please make sure the spelling of the element QName is correct and the WSDL import is complete.
".
[Potential fix]: n/a.

I faced this issue in the context of building an Application Business Connector Service (ABCS) using AIA / PIP, so there was a good message design where Business Objects were in a separate schema, embedded in a schema with Message definitions, which was itself embedded into a bpel project. I encountered this right after using the utility to autogenerate the code. In the end, it turns out one of the urls on the nested schema was pointing to the wrong location. I had to hunt through all the schema tags in the wsdls. I found the schema location for the schema containing the object that was complained about was not resolving. This is pretty straight forward, but is a pain if there is a lot of nesting. The element that was changed in the WSDL was here:

1
2
3
4
<xsd:schema >
 <xsd:import namespace="http://xmlns.oracle.com/ExampleObject"
 schemaLocation="http://bpelserver:7777/AIAComponents/ApplicationObjectLibrary/DomainEBOs.xsd"/>
</xsd:schema>

Leave a Reply

Your email address will not be published. Required fields are marked *