Search code examples
oracle-databasesoaoracle11gjdeveloperbpel

Missing type for XML Fact in JDeveloper 11g BPEL rule manager


I'm currently working on a composite for the Oracle SOA Suite 11g R1. In short, I have the following BPEL process (some activities not mentioned):

  1. File Adapter waiting for XML files (format defined in input.xsd) to start an instance. For the example, the input file contains a list of simplistic shopping orders (the XSD type is Order_Type).
  2. Transform (format defined in output.xsd)
  3. File Adapter to write output.

Both XSD's use a third common.xsd for common types.

I'd like to insert a rule right after reading my input file. From the JDeveloper (11g R1 PS2) BPEL editor, I drag a Business Rule activity below my Receive activity and use the wizard to create a new Dictionary:

  • I let JDeveloper generate XML Facts from my input.xsd. Order_Type gets marshalled to the class mypackage.OrderType with selector //xs:complexType[@name='Order_Type']
  • I create a new Ruleset, and a new rule taking an order as input.
  • I create a Decision Function to call that rule. The function has one input parameter of type OrderType

If I close the function dialog now, I have no error but cannot select the rule in my BPEL process.

On the other hand, if I select Will Be Invoked As A Webservice then close, I have the following error message:

Element not found in XML-Schema file. The element for fact type mypackage.OrderType could not be found in XML Schema file file:/C:/Jdeveloper/[...]/xsd/input.xsd [...]

aka BPM-36355 error, although that error code is not explicitly mentioned.

Of course, the type is present in the file (as I said, I let JDev generate the JAXB classes for me), so I'm at a loss as to why this error happens, or how to correct it.

I tried various combinations for the generation of XML facts, of the decision function, and I restarted JDev (don't laugh, that actually fixed a weird issue yesterday), but to no avail. The XPath expression selecting the type is correct.

Any suggestion would be appreciated. Except dropping Oracle or downgrading to pre-11g, of course. Thanks


Solution

  • My root element, Order, was a sequence of Order_Type. I solved the issue described above by using Order instead of Order_Type for my decision function parameter. The WSDL was generated successfully, and my rule is called.

    I don't know whether this is a bug or a feature so if anyone has more information, feel free to post it.