1  Documenting WSDL 1.1 PortType Derivation

WSDL 1.1 does not describe a standard means of creating new portTypes in terms of specializing other portTypes. WS-Resource Framework and various Web services based management standards are based in WSDL 1.1 and recommend creating ”most derived portTypes” by combining interfaces to Web services defined by various specifications. WS-RF recommends that designers physically copy and paste operations from existing standard portTypes as the only means to realize portType combination.

A major drawback of the copy and paste approach for operations is that a consumer of the most derived portType cannot easily detect that the portType is a specialization/aggregation of one or more other portTypes. Typically, applications are built to act upon “more generic” interfaces. Unless there is a simple means to discover that a more specialized interface is derived from a more generic interface known to the application, it is difficult for the application to find and act upon the WS-Resource.

In order to clarify the provenance of a WSDL 1.1 portType, this specification defines an additional attribute information item to be added to a WSDL 1.1 portType. An XML infoset representation of this attribute is defined as follows:

<wsdl:portType name=”ncname” ...

wsrf-rp:DerivedFrom=”list of Qname”?

...

</wsdl:portType>

The wsrf-rp:DerivedFrom attribute information item contains a list of zero or more QNames. Each QName corresponds to a WSDL 1.1 portType from which operations were copied. Note: unlike the similar extends attribute information item defined on the WSDL 2.0 interface element information item, the wsrf-rp:DerivedFrom attribute information item defined here does not imply any automatic inclusion of operation element information items in the portType (designers must still copy and paste operations to achieve this).

The semantics of the wsrf-rp:DerivedFrom attribute information item are as follows.

·  A portType defines a set of operation information element information items amongst its {children}.

·  If the portType contains an attribute information item named ”ResourceProperties” from the namespace defined in the WS-Resource Properties specification (http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd or later version) the portType is associated with a collection of resource property element information items, one for each child element defined by the global element definition referenced by the value of the ResourceProperties element information item.

·  PortType “A” is “compliant with” portType “B” if the following are all true:

1.  For every operation defined by “B”, there is an equivalent operation defined in “A”. Operations are equivalent if their component models are equivalent;

2.  For every resource property associated with “B”, there is a reference to that resource property in the set of resource properties associated with “A”.

·  We define a property of the portType element information item called {extendedPortTypes}. The {extendedPortTypes} represents the transitive closure of all the portTypes with which this portType is “compliant”. The {extendedPortTypes} of a portType element information item is the set of portTypes “extended” by a portType (or stated another way, the set of portTypes from which a portType is derived). The {extendedPortTypes} for portType “A” is defined as follows. For each QName “B” that appears in the value of the wsrf-rp:DerivedFrom attribute information item of portType “A”:

1.  If the Qname “B” does not already appear in the {extendedPortTypes} of portType “A”, add the portType referenced by that QName (portType “B”) to the {extendedPortTypes} of portType “A”.

2.  For each QName that appears in the {extendedPortTypes} of portType “B” and does not already appear in the {extendedPortTypes} of portType “A”, add that QName to the {extendedPortTypes} of portType “A”.

·  A portType MUST be “compliant” with all the portTypes within its {extendedPortTypes}.