on 05-07-2010 11:33 AM
Hi All,
We have a synchronous send step in BPM inside a block which throws exception.Right now we have two kinds of exception that occur.One is due to system unavailability and the other is due to the SOAP Fault response from the Supplier.
Is there any means to distinguish the SOAP Fault error from a system error within the BPM?
Thanks,
Sowmya
Hi,
Just to clarify.
From within a BPM, if you make a synchronous call, and there is a fault message in the signature of that call, you are able to define an exception branch to handle that fault separately from a system fault. Unfortunately what SAP does not provide, is a container for the fault message, so while you know that the fault occurred, you do not have access to the details of the fault. SAP also does not provide the ability for the BPM itself to return a fault message.
Stephen
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Shabarish,
We are handling exception(System Error) inside the BPM in the same way as you have mentioned.But the issue is that the SOAP Fault response we are receiving from the Supplier is also treated as a system error because of the missing <Detail> segment and hence its handled in the same way like a time out error which should not be.
Hence would like to get inputs on how can this SOAP Fault response can be distinguished from the normal system errors like time out.
Thanks,
Sowmya
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
FYI,
I have raised this issue with SAP i.e. a synchronous call from within a BPM that returns a fault does not return the fault message. The official response from SAP is that this is working as designed and that the content of the fault mesage is not available. if you look at the BPEL code you will notice that there is no "vaultVariable" attribute in the catch tag. I am currently trying to convince SAP that this is bug not a feature.
Stephen
Hi Stephen,
Thanks for your inputs.
Do you mean to say that it is not possible to catch soap-faults separately in BPM if the fault message is of type System Error?
The Soap Fault message that we get from the Supplier does not have the <detail> element in it.The fault message looks like:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<soap:Fault>
<faultcode>soap:000000</faultcode>
<faultstring>java.lang.NullPointerException</faultstring>
</soap:Fault>
</soap:Body>
</soap:Envelope>
and hence it is treated in the same way a normal time out is handled.(System Error)
Please share your valuable inputs on the same.
Thanks,
Sowmya
Hi Sowmya,
You can catch the SOAP fault message in the response by adding this parameterl -
"XMBWS.NoSOAPIgnoreStatusCode = true" in the SOAP channel -> module tab -> Module configuration.
Module Key will be "soap".
In the IP, you can put in a switch condition and check the response for //*[local-name()='faultcode'], if true, it means this is your fault message in the response. You can then handle this accordingly.
Hope this helps.
Regards,
Neetesh
Hi Sabarish,
Thanks for your reply.I was referring to the same blog.In that blog,there is a statement which says "in problem cases, the web service will return a SOAP fault message which will either result in a system error message or an application error message in XI and if its a system error there are not many options to handle the same and only application error messages can be caught and handled".
As per my understanding from the blog,if the web service response has to contain an application error message it must populate the "<detail>" tag in the soap fault message.
However the fault response which we receive looks like this.
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<soap:Fault>
<faultcode>soap:000000</faultcode>
<faultstring>java.lang.NullPointerException</faultstring>
</soap:Fault>
</soap:Body>
</soap:Envelope>
Kindly guide me if we can capture and handle this kind of soap fault messages.
Thanks,
Sowmya
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
if there is an application error, the fault message will be populated and the interface mapping will handle it and you can send the response back to the sender.
in case of a system error, do exception handling for the sync send in BPM.
If system error kicks in, you can handle the exception in the exception branch and take the required action of canceling the process, sending an alert or even creating a message to send back to the sender
if you can do the synchronous interface mapping and also involve the fault message mapping, then you can easily handle this
/people/jin.shin/blog/2007/05/21/handling-web-service-soap-fault-responses-in-sap-netweaver-xi
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
93 | |
10 | |
10 | |
9 | |
9 | |
7 | |
6 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.