Loading ...
Sorry, an error occurred while loading the content.

WS-I and doc/lit

Expand Messages
  • fraser_goffin
    Reading through the WS-I Basic Profile I noted that recommendation R2201 states that a MAXIMUM of ONE part can be listed to be contained within the SOAP Body
    Message 1 of 3 , Jul 19, 2003
    • 0 Attachment
      Reading through the WS-I Basic Profile I noted that
      recommendation R2201 states that a MAXIMUM of ONE part can
      be listed to be contained within the SOAP Body when
      document-literal binding is being used.

      Can any explain to me why that is ??

      We have a situation where the SOAP Body is used to carry
      more than one part. The first part is a manifest which is
      used to describe and locate the part(s) which carry the
      actual business data payload(s).

      Example :-

      The following snippets would appear to be non compliant to
      the WS-I Basic profile. Can someone please explain why ??

      WSDL snippet :-

      .....
      <message name="PropertyRFP_In">
      <part name="Manifest" element="tns:Manifest"/>
      <part name="Payload" element="ppp:Transaction"/>
      </message>
      <message name="PropertyRFP_Out">
      <documentation>Response message contains an empty SOAP:Body - no
      parts defined</documentation>
      </message>
      <portType name="PropertyRFP_PT">
      <operation name="PaymentRequest">
      <input message="tns:PropertyRFP_In"/>
      <output message="tns:PropertyRFP_Out"/>
      </operation>
      </portType>
      <binding name="PropertyRFP_Bin"
      type="tns:PropertyRFP_PT">
      <soap:binding style="document"
      transport="http://schemas.xmlsoap.org/soap/http"/>
      <operation name="PaymentRequest">
      <soap:operation
      soapAction="http://www.xxx.co.uk/PropertyRFP"
      style="document"/>
      <input>
      <soap:body parts="Manifest Payload"
      use="literal"/>
      </input>
      <output>
      <soap:body use="literal"/>
      </output>
      </operation>
      </binding>
      ....

      Message snippet :-

      <SOAP:Envelope>
      ....
      <SOAP:Body>
      <Manifest>
      <Reference
      xmlns:xlink="http://www.w3.org/1999/xlink"
      xlink:href="#CDUK000001"
      xlink:role="xxx-uk.co.uk/xmlstds/RFP/role.htm">
      <Schema version="1.01"
      location="http://xxx-co.uk/ContentsRFP
      ContentsRFP.xsd"/>
      </Reference>
      <Reference
      xmlns:xlink="http://www.w3.org/1999/xlink"
      xlink:href="#CDUK000002"
      xlink:role="xxx-uk.co.uk/xmlstds/RFP/role.htm">
      <Schema version="1.01"
      location="http://xxx-co.uk/PropertyRFP
      PropertyRFP.xsd"/>
      </Reference>
      </Manifest>
      <php:Transaction
      xmlns:php="http://xxx-.co.uk/ContentsRFP"
      Id="CDUK000001"
      TransactionName="ContentsRFP"
      MessageVersion="01_01">
      <TransDate>2002-07-25</TransDate>
      <TransEffectiveDate>2002-07-25</TransEffectiveDate>
      ...
      </php:Transaction>
      <ppp:Transaction
      xmlns:ppp="http://www.xxx-co.uk/PropertyRFP"
      Id="CDUK000002"
      TransactionName="ContentsRFP"
      MessageVersion="01_01">
      <TransDate>2002-07-25</TransDate>
      <TransEffectiveDate>2002-07-25</TransEffectiveDate>
      ...
      </ppp:Transaction>
      </SOAP:Body>
      </SOAP:Envelope>
    • Anne Thomas Manes
      For a definitive explanation of WS-I reasoning, I suggest that you send this note to the WS-I comments list rather than to soapbuilders. Not speaking for WS-I,
      Message 2 of 3 , Jul 21, 2003
      • 0 Attachment
        For a definitive explanation of WS-I reasoning, I suggest that you send this
        note to the WS-I comments list rather than to soapbuilders.

        Not speaking for WS-I, I would say that the reason they established this
        constraint is that the specifications don't indicate how to interpret or
        process multiple parts in a doc/lit message:
        - Are they intended to be processed by one agent or different agents?
        - If different agents, how do you specify which agent gets which part?
        - If the same agent, do you give it both parts at one time or in sequence?
        - How do you serialize/deserialize the different parts?
        - etc

        WS-I had two choices here -- either constrain the spec to prohibit multiple
        parts or specify the expected behavior. Obviously the first choice is much
        easier, and from my perspective, much more in line with the concept of
        "basic profile". It's possible that at some point in the future WS-I might
        define a "manifest profile" that would specify how to use a manifest. In the
        mean time, I suggest that you pass your manifest as a header block in order
        to maintain WS-I compliance.

        Best regards,
        Anne

        > Date: Sat, 19 Jul 2003 15:47:51 -0000
        > From: "fraser_goffin" <goffinf@...>
        > Subject: WS-I and doc/lit
        >
        > Reading through the WS-I Basic Profile I noted that
        > recommendation R2201 states that a MAXIMUM of ONE part can
        > be listed to be contained within the SOAP Body when
        > document-literal binding is being used.
        >
        > Can any explain to me why that is ??
        >
        > We have a situation where the SOAP Body is used to carry
        > more than one part. The first part is a manifest which is
        > used to describe and locate the part(s) which carry the
        > actual business data payload(s).
        >
        > Example :-
        >
        > The following snippets would appear to be non compliant to
        > the WS-I Basic profile. Can someone please explain why ??
        >
        > WSDL snippet :-
        >
        > .....
        > <message name="PropertyRFP_In">
        > <part name="Manifest" element="tns:Manifest"/>
        > <part name="Payload" element="ppp:Transaction"/>
        > </message>
        > <message name="PropertyRFP_Out">
        > <documentation>Response message contains an empty SOAP:Body - no
        > parts defined</documentation>
        > </message>
        > <portType name="PropertyRFP_PT">
        > <operation name="PaymentRequest">
        > <input message="tns:PropertyRFP_In"/>
        > <output message="tns:PropertyRFP_Out"/>
        > </operation>
        > </portType>
        > <binding name="PropertyRFP_Bin"
        > type="tns:PropertyRFP_PT">
        > <soap:binding style="document"
        > transport="http://schemas.xmlsoap.org/soap/http"/>
        > <operation name="PaymentRequest">
        > <soap:operation
        > soapAction="http://www.xxx.co.uk/PropertyRFP"
        > style="document"/>
        > <input>
        > <soap:body parts="Manifest Payload"
        > use="literal"/>
        > </input>
        > <output>
        > <soap:body use="literal"/>
        > </output>
        > </operation>
        > </binding>
        > ....
        >
        > Message snippet :-
        >
        > <SOAP:Envelope>
        > ....
        > <SOAP:Body>
        > <Manifest>
        > <Reference
        > xmlns:xlink="http://www.w3.org/1999/xlink"
        > xlink:href="#CDUK000001"
        > xlink:role="xxx-uk.co.uk/xmlstds/RFP/role.htm">
        > <Schema version="1.01"
        > location="http://xxx-co.uk/ContentsRFP
        > ContentsRFP.xsd"/>
        > </Reference>
        > <Reference
        > xmlns:xlink="http://www.w3.org/1999/xlink"
        > xlink:href="#CDUK000002"
        > xlink:role="xxx-uk.co.uk/xmlstds/RFP/role.htm">
        > <Schema version="1.01"
        > location="http://xxx-co.uk/PropertyRFP
        > PropertyRFP.xsd"/>
        > </Reference>
        > </Manifest>
        > <php:Transaction
        > xmlns:php="http://xxx-.co.uk/ContentsRFP"
        > Id="CDUK000001"
        > TransactionName="ContentsRFP"
        > MessageVersion="01_01">
        > <TransDate>2002-07-25</TransDate>
        > <TransEffectiveDate>2002-07-25</TransEffectiveDate>
        > ...
        > </php:Transaction>
        > <ppp:Transaction
        > xmlns:ppp="http://www.xxx-co.uk/PropertyRFP"
        > Id="CDUK000002"
        > TransactionName="ContentsRFP"
        > MessageVersion="01_01">
        > <TransDate>2002-07-25</TransDate>
        > <TransEffectiveDate>2002-07-25</TransEffectiveDate>
        > ...
        > </ppp:Transaction>
        > </SOAP:Body>
        > </SOAP:Envelope>
      • fraser_goffin
        Anne, thanks for your reply. I did indeed send this question to WS-I in the first instance, but alas as with many of these sorts of things no response at all
        Message 3 of 3 , Jul 23, 2003
        • 0 Attachment
          Anne,

          thanks for your reply. I did indeed send this question to WS-I in the
          first instance, but alas as with many of these sorts of things no
          response at all was forthcoming and I couldn't find a WS-I newsgroup.

          Anyway back to your response. Toolkits today (e.g. .Net) support
          specifying multiple parts for doc/lit messages without complaint.
          Other toolkits I note will barf. The WS-I Basic Profile is still
          relatively new so perhaps all will act consistently at some point :-)

          I want to ask you opinion about the superficially hidden ebXML MS
          structure to my manifest example below (I am assuming that you are
          the same Anne that frequents that newsgroup). But I will do so on
          that newsgroup so as not to clutter this one with off topic issues.

          Fraser.

          --- In soapbuilders@yahoogroups.com, "Anne Thomas Manes" <anne@m...>
          wrote:
          > For a definitive explanation of WS-I reasoning, I suggest that you
          send this
          > note to the WS-I comments list rather than to soapbuilders.
          >
          > Not speaking for WS-I, I would say that the reason they established
          this
          > constraint is that the specifications don't indicate how to
          interpret or
          > process multiple parts in a doc/lit message:
          > - Are they intended to be processed by one agent or different
          agents?
          > - If different agents, how do you specify which agent gets which
          part?
          > - If the same agent, do you give it both parts at one time or in
          sequence?
          > - How do you serialize/deserialize the different parts?
          > - etc
          >
          > WS-I had two choices here -- either constrain the spec to prohibit
          multiple
          > parts or specify the expected behavior. Obviously the first choice
          is much
          > easier, and from my perspective, much more in line with the concept
          of
          > "basic profile". It's possible that at some point in the future WS-
          I might
          > define a "manifest profile" that would specify how to use a
          manifest. In the
          > mean time, I suggest that you pass your manifest as a header block
          in order
          > to maintain WS-I compliance.
          >
          > Best regards,
          > Anne
          >
          > > Date: Sat, 19 Jul 2003 15:47:51 -0000
          > > From: "fraser_goffin" <goffinf@h...>
          > > Subject: WS-I and doc/lit
          > >
          > > Reading through the WS-I Basic Profile I noted that
          > > recommendation R2201 states that a MAXIMUM of ONE part can
          > > be listed to be contained within the SOAP Body when
          > > document-literal binding is being used.
          > >
          > > Can any explain to me why that is ??
          > >
          > > We have a situation where the SOAP Body is used to carry
          > > more than one part. The first part is a manifest which is
          > > used to describe and locate the part(s) which carry the
          > > actual business data payload(s).
          > >
          > > Example :-
          > >
          > > The following snippets would appear to be non compliant to
          > > the WS-I Basic profile. Can someone please explain why ??
          > >
          > > WSDL snippet :-
          > >
          > > .....
          > > <message name="PropertyRFP_In">
          > > <part name="Manifest" element="tns:Manifest"/>
          > > <part name="Payload" element="ppp:Transaction"/>
          > > </message>
          > > <message name="PropertyRFP_Out">
          > > <documentation>Response message contains an empty SOAP:Body -
          no
          > > parts defined</documentation>
          > > </message>
          > > <portType name="PropertyRFP_PT">
          > > <operation name="PaymentRequest">
          > > <input message="tns:PropertyRFP_In"/>
          > > <output message="tns:PropertyRFP_Out"/>
          > > </operation>
          > > </portType>
          > > <binding name="PropertyRFP_Bin"
          > > type="tns:PropertyRFP_PT">
          > > <soap:binding style="document"
          > > transport="http://schemas.xmlsoap.org/soap/http"/>
          > > <operation name="PaymentRequest">
          > > <soap:operation
          > > soapAction="http://www.xxx.co.uk/PropertyRFP"
          > > style="document"/>
          > > <input>
          > > <soap:body parts="Manifest Payload"
          > > use="literal"/>
          > > </input>
          > > <output>
          > > <soap:body use="literal"/>
          > > </output>
          > > </operation>
          > > </binding>
          > > ....
          > >
          > > Message snippet :-
          > >
          > > <SOAP:Envelope>
          > > ....
          > > <SOAP:Body>
          > > <Manifest>
          > > <Reference
          > > xmlns:xlink="http://www.w3.org/1999/xlink"
          > > xlink:href="#CDUK000001"
          > > xlink:role="xxx-uk.co.uk/xmlstds/RFP/role.htm">
          > > <Schema version="1.01"
          > > location="http://xxx-co.uk/ContentsRFP
          > > ContentsRFP.xsd"/>
          > > </Reference>
          > > <Reference
          > > xmlns:xlink="http://www.w3.org/1999/xlink"
          > > xlink:href="#CDUK000002"
          > > xlink:role="xxx-uk.co.uk/xmlstds/RFP/role.htm">
          > > <Schema version="1.01"
          > > location="http://xxx-co.uk/PropertyRFP
          > > PropertyRFP.xsd"/>
          > > </Reference>
          > > </Manifest>
          > > <php:Transaction
          > > xmlns:php="http://xxx-.co.uk/ContentsRFP"
          > > Id="CDUK000001"
          > > TransactionName="ContentsRFP"
          > > MessageVersion="01_01">
          > > <TransDate>2002-07-25</TransDate>
          > > <TransEffectiveDate>2002-07-25</TransEffectiveDate>
          > > ...
          > > </php:Transaction>
          > > <ppp:Transaction
          > > xmlns:ppp="http://www.xxx-co.uk/PropertyRFP"
          > > Id="CDUK000002"
          > > TransactionName="ContentsRFP"
          > > MessageVersion="01_01">
          > > <TransDate>2002-07-25</TransDate>
          > > <TransEffectiveDate>2002-07-25</TransEffectiveDate>
          > > ...
          > > </ppp:Transaction>
          > > </SOAP:Body>
          > > </SOAP:Envelope>
        Your message has been successfully submitted and would be delivered to recipients shortly.