2
votes

we use Validate activity in our BPEL processes to validate input and output messages like this:

<validate name="validateInput" variables="inputVariable"/>

It works fine, but when an validation error occurs, the consumer gets only this kind of fault:

<env:Fault xmlns:ns0="http://docs.oasis-open.org/wsbpel/2.0/process/executable">
   <faultcode>ns0:invalidVariables</faultcode>
   <faultstring>faultName: {{http://docs.oasis-open.org/wsbpel/2.0/process/executable}invalidVariables}
messageType: {{http://schemas.oracle.com/bpel/extension}RuntimeFaultMessage}</faultstring>
   <faultactor/>
   <detail>
      <exception/>
   </detail>
</env:Fault>

So my consumer knows that he sent invalid message but he gets no information at all about what exactly went wrong.

In Enterprise manager I can see the validation error message with the reason why the message failed the validation:

Invalid data: The value for variable "inputVariable", part "payload" does not match the schema definition for this part Element 'ptSrcIdx' not expected.

I need to return this validation error message to my consumer so he can see what was wrong with his message.

I will appreciate any help. Thanks!

1

1 Answers

0
votes

It seems Oracle has some patch for this issue, also it should be ok in 11.1.1.7.

In the meantime we use our own validator written in java and called from Embed Java BPEL activity. It is little slower (cca +20%) but works fine.