Saturday, April 26, 2008

Bug In Oracle BPEL Process Manager Console

Last week one of my colleague was developing a synchronous BPEL process. He was using a nested XML schema to create input variable for the BPEL process. After completion of development he deployed the BPEL process on Oracle BPEL Process Manager 10.1.3.3. While testing he got a time out exception, he thought process is doing heavy processing so it might take longer to complete the execution so he increased the time out for synchronous process by setting a larger value for “syncMaxWaitTime” property. He tried so many times with no luck. Then he checked the flow on BPEL console and he found the assign activity is having SelectionFailure error so he started checking BPEL process . He checked XSD's and the XPATH expressions used in assign activity. He was wondering why he is getting SelectionFailure even though everything is correct in the BPEL process and XSD's.

After investing ample of time he has got frustrated and started looking for someone who has already faced the same issue and lucky enough to get rid of this issue.

The reason behind this issue is the wrong input XML that was generated by Oracle BPEL Process Manager. The namespace prefixes are not correct in the input XML so it was not able to find the values from input XML document.

Following input XML is generated by the BPEL Process Manager Console, see the namespace prefixes given in bold, these namespace prefixes are wrong :

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body xmlns:ns1="http://xmlns.oracle.com/schemas/employee">
<ns1:Employee>
<ns1:PersonalDetails>
<ns1:Name>Vijay</ns1:Name>
<ns1:Age>30</ns1:Age>
</ns1:PersonalDetails>
<ns1:Address xmlns:ns2="http://xmlns.oracle.com/schemas/common">
<ns2:Address1>2800 S Ashland</ns2:Address1>
<ns2:Address2>GeenBay</ns2:Address2>
</ns1:Address>
<ns1:Department xmlns:ns3="http://xmlns.oracle.com/schemas/common">
<ns3:Name>IT</ns3:Name>
<ns3:DeptType>Development</ns3:DeptType>
</ns1:Department>
</ns1:Employee>
</soap:Body>
</soap:Envelope>

So correcting the namespace prefixes solved the problem. See the modified XML schema given below.

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body xmlns:ns1="http://xmlns.oracle.com/schemas/employee">
<ns1:Employee>
<ns1:PersonalDetails>
<ns1:Name>Dan</ns1:Name>
<ns1:Age>30</ns1:Age>
</ns1:PersonalDetails>
<ns2:Address xmlns:ns2="http://xmlns.oracle.com/schemas/common">
<ns2:Address1>2800 S Ashland</ns2:Address1>
<ns2:Address2>GeenBay</ns2:Address2>
</ns2:Address>
<ns3:Department xmlns:ns3="http://xmlns.oracle.com/schemas/common">
<ns3:Name>IT</ns3:Name>
<ns3:DeptType>Development</ns3:DeptType>
</ns3:Department>
</ns1:Employee>
</soap:Body>
</soap:Envelope>

1 comment:

Hari said...

Hi,
I'm getting an error in the "Create Partner Link" dialogue when specifying an https-based wsdl url. The non-ssl wsdl url works fine, but I need it to work for ssl (https). The specific errror reads:

Error:Failed to read wsdl file at "https://serverstuff/webservice.cfc?wsdl", caused by: javax.net.ssl.SSLHandshakeException. :sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

What do I need to do to get the https wsdl to validate? I'm using jDev 10.1.3.2. When I deploy the BPEL, will I need to do anything on the app server? I've seen a lot of similar questions on this forum with no definitive answers. Also, the BPEL dev guide does not address SSL.