[OGSA-BES-WG] BES Faults

Christopher Smith csmith at platform.com
Wed Nov 29 16:24:23 CST 2006


Hi all,

Just wanted to start some discussion on how to render faults for BES.


The first thing to state is that I'm assuming the use of SOAP 1.1 for
messaging, as this is the version referenced in the WS-I BP version 1.1.
Please correct me if I'm wrong....

The second is that for now I'm ignoring WS-BaseFaults, as I think it would
be very difficult to reach consensus on it's use in a short amount of time.


The BES specification defines a few faults:

(contained in SOAP Fault element in response)
- NotAcceptingNewActivities
- UnsupportedJSDLVersionFault
- UnsupportedFeatureFault

(contained in a response body)
- ActivityDoesNotExistFault
- CantApplyOperationToCurrentState   <-- implied in doc as a todo


We can render these in one of two ways:

1. We define new faultcode elements for these faults, and the detail can
provide a higher level of information if needed. I'm not clear on how easy
this is for most people from the tooling point of view. It would also
require the WSDL to reflect the new fault codes (is this true?).

2. We define a set of fault elements that can either be used in the detail
element, or on their own in some response elements. These fault elements
wouldn't be "anyType", but would just be empty complexTypes.

I prefer number 2 as this is quite straightforward from a tooling support
point of view. Here are some examples of the various fault messages.


Actual SOAP faults:

<soap:Fault xmlns:soap="http://schemas.xmlsoap.org/soap/envelope">
  <faultcode>soap:Server</faultcode>
  <faultstring>This BES is not accepting new activites now</faultstring>
  <detail>
    <bes:NotAcceptingNewActivities xmlns:bes="..."/>
  </detail>
</soap:Fault>

<soap:Fault xmlns:soap="http://schemas.xmlsoap.org/soap/envelope">
  <faultcode>soap:Client</faultcode>
  <faultstring>Sorry ... I don't get it</faultstring>
  <detail>
    <bes:UnsupportedFeatureFault xmlns:bes="...">
      <bes:UnsupportedElement name="jsdl-posix:POSIXApplication"/>
    </bes:UnsupportedFeatureFault>
  </detail>
</soap:Fault>


Faults in responses would be done using a type like:

<xsd:complexType name="TerminateActivityResponseType">
  <xsd:sequence>
    <xsd:element ref="bes-factory:ActivityIdentifier"/>
    <xsd:element name="Cancelled" type="xsd:boolean"/>
    <xsd:element ref="soap:Fault" minOccurs="0"/>        <-- SOAP 1.1 fault
  </xsd:sequence>
</xsd:complexType>

So you'd get:

<bes:TerminateActivityResponse xmlns:bes="...">
  <bes:ActivityIdentifier>EPR</bes:ActivityIdentifier>
  <bes:Cancelled>false</bes:Cancelled>
  <soap:Fault>
    <faultcode>soap:Client</faultcode>
    <faultstring>That activity doesn't exist</faultstring>
    <detail><bes:ActivityDoesNotExistFault/></detail>
  </soap:Fault>
</bes:TerminateActivityResponse>

<bes:TerminateActivityResponse xmlns:bes="...">
  <bes:ActivityIdentifier>EPR</bes:ActivityIdentifier>
  <bes:Cancelled>false</bes:Cancelled>
  <soap:Fault>
    <faultcode>soap:Client</faultcode>
    <faultstring>That activity doesn't exist</faultstring>
    <detail><bes:CantApplyOperationToCurrentState/></detail>
  </soap:Fault>
</bes:TerminateActivityResponse>


Comments?



-- Chris




More information about the ogsa-bes-wg mailing list