260 likes | 395 Views
Metadata for WS-Resources WS-Resource Metadata Descriptor. OASIS WSRF F2F Tuesday, May 17 th , 2005. Tom Maguire William Vambenepe. Motivation. Support a broad and evolving range of WS-Resource types Need to be able to discover the descriptions of these resources
E N D
Metadata for WS-Resources WS-Resource Metadata Descriptor OASIS WSRF F2F Tuesday, May 17th, 2005 Tom Maguire William Vambenepe
Motivation • Support a broad and evolving range of WS-Resource types • Need to be able to discover the descriptions of these resources • Interfaces (described in WSDL) • Additional descriptors • The broader the range of WS-Resources to be supported, the more descriptive information required
Requirements • Define an information model representing metadata about operations, resource properties and other information associated with a WS-Resource interface. • Define a standard annotation for associating meta data descriptions with other description artifacts of the WS-Resource, particularly its WSDL 1.1 portType and its resource properties document definition. • Define the standard schema for representing the aspects of the information model.
WS-Resource Metadata Descriptor • Defines a mechanism for providing additional description on interfaces and WS-Resource implementations: • Properties • Operations • Extensibility for other descriptions • Description is required at both: • design time • No WS-Resources available (install, provisioning) • Development of support for new WS-Resources • execution time • Introspection of WS-Resources
Overview X WS-Resource Descriptor document for each portType “Canonical” manageability portTypes Descriptor Canonical portType Combined by reference Combined by copy-and-paste. Most derived manageability portType for a managed resource. Defines the schema for the resourceProperties document that represents the state of the resource. Describes Individual portType descriptors are combined via references into a document that specializes the description of the interface OperatingSystem descriptor OperatingSystem portType Implements Windows2003Server descriptor Windows2003Server Managed resource type Individual resource types that implement the port type provides its own descriptor that forms a template that resources of the type will match LinuxRedHat descriptior LinuxRedHat Managed resource type Windows2003Server WS-Resource LinuxRedHat WS-Resource
Overview WS-Resource Descriptor document for each portType “Canonical” manageability portTypes Descriptor Canonical portType Combined by copy-and-paste. Combined by copy-and-paste Most derived manageability portType for a managed resource. Defines the schema for the resourceProperties document that represents the state of the resource. Describes Individual portType descriptors are combined via copy and paste into a document that specializes the description of the interface OperatingSystem descriptor OperatingSystem portType Implements Windows2003Server descriptor Windows2003Server Managed resource type Individual resource types that implement the port type provides its own descriptor that forms a template that resources of the type will match LinuxRedHat descriptior LinuxRedHat Managed resource type Windows2003Server WS-Resource LinuxRedHat WS-Resource
The portType annotation for the Resource Property GED (next page). …and where that descriptor is located. The descriptor which corresponds to this portType. Operating System portType … xmlns:os=”http://example.com/ns/OperatingSystem” … <portType name="OperatingSystem“ wsrf-rp:ResourceProperties="os:OSResourceProperties" ..wsrmd:metadataDescriptor=”os:OperatingSystemDescriptor” ..wsrmd:metadataDescriptorLocation=”http://example.com/ns/OperatingSystem http://example.com/prototypes/OperatingSystem.wsrmd”> … </portType>
Operating System portType … xmlns:os=”http://example.com/ns/OperatingSystem” … <portType name="OperatingSystem“ wsrf-rp:ResourceProperties="os:OSResourceProperties" ..wsrmd:metadataDescriptor=”os:OperatingSystemDescriptor” ..wsrmd:metadataDescriptorLocation=”http://example.com/ns/OperatingSystem http://example.com/prototypes/OperatingSystem.wsrmd”> … </portType> But if we use WS-MetadataExchange like thing it would only be…… But we lose the design time introspection capability (when starting from the portType). Is this a concern?
Operating System Property definitions … xmlns:os="… <element name="OSResourceProperties"> <complexType> <sequence> <element ref="os:numberOfProcesses" minOccurs="0" maxOccurs="1"/> <element ref="os:totalSwapSpaceSize" minOccurs="0" maxOccurs="1"/> <element ref="os:processor" minOccurs="1" maxOccurs="unbounded"/> </sequence> </complexType> </element> <element name="numberOfProcesses" type="xsd:int" /> <element name="totalSwapSpaceSize" type="xsd:unsignedLong" /> <element name="processor" type="os:Processor" /> <complexType name="Processor"> <sequence> <element name="processorFamily" type="xsd:string" minOccurs="1" maxOccurs="1" /> <element name="manufacturer" type="xsd:string" minOccurs="1" maxOccurs="1" /> <element name="serialNumber" type="xsd:string" minOccurs="1" maxOccurs="1" /> </sequence> </complexType>
Identification Property definitions <element name="Identification"> <complexType> <sequence> <element ref="ResourceType" minOccurs="0" maxOccurs="1"/> <element ref="ResourceID" minOccurs="0" maxOccurs="1"/> </sequence> </complexType> </element> <element name="ResourceType" type="list of xs:anyURI" /> <element name="ResourceID" type="xsd:string" />
The Definitions component is a container for a set of MetadataDescriptor components. The Definitions component defines a targetNamespace which forms the {namespace} property of all components it contains. The MetadataDescriptor component is a container for a set of metadata descriptions and constraints on a WS-Resource. The MetadataDescriptor component contains additional information that describes or constrains various aspects of a WS-Resource. This descriptor corresponds to the Identification portType. The ResourceID resource property element of the id:Identification resource property document. The ResourceType resource property element of the id:Identification resource property document. …and it cannot be changed by the wsrp:SetResourceProperties operation. Will always have a constant value The Identification portType is at this location. Identification portType Descriptor (001) <Definitions (002) xmlns=”http://docs.oasis-open.org/wsrf/2004/10/wsrf-WS-ResourceMetadataDescriptor-1.0-draft-01.xsd” (003) xmlns:id=”http://example.com/ns/Identification” (004) targetNamespace=”http://example.com/ns/Identification”> (005) <MetadataDescriptor (006) name=”IdentificationMetadataDescriptor” (007) interface=”id:Identification” (008) wsdlLocation=”http://example.com/ns/Identification (009) http://example.com/wsdl/Identification.wsdl” > (010) <Property path=”id:ResourceID” (011) mutability=”constant” (012) modifiability=”read-only” /> (013) <Property path=”id:ResourceType” (014) mutability=”constant” (015) modifiability=”read-only” /> (016) </MetadataDescriptor> (017)</Definitions>
This descriptor specializes the Identification descriptor. This descriptor corresponds to the OperatingSystem portType. The Identification MetadataDescriptor is at this location. Operating System portType Descriptor • (001) <Definitions • (002) xmlns=”http://docs.oasis-open.org/wsrf/2004/10/wsrf-WS-ResourceMetadataDescriptor-1.0-draft-01.xsd” • (003) xmlns:id=”http://example.com/ns/Identification” • (004) xmlns:os=”http://example.com/ns/OperatingSystem” • (005) targetNamespace=”http://example.com/ns/OperatingSystem”> • (006) <MetadataDescriptor • (007) name=”OperatingSystemMetadataDescriptor” • (008) interface=”os:OperatingSystem” • (009) wsdlLocation=”http://example.com/ns/OperatingSystem • (010) http://example.com/wsdl/OperatingSystem.wsdl” • (011) specializes=”id:IdentificationMetadataDescriptor” • (012) metadataDescriptorLocation=”http://example.com/ns/Identification • (013) http://example.com/metadataDescriptors/Identification.wsrmd” > • … • next page Property metadata descriptions • … • (037) </MetadataDescriptor> • (038) </Definitions>
This property element augments any property element that may appear in the Identification prototype. The os:numberOfProcesses resource property elements value may change over time. The set of valid values the ResourceType resource property element may contain (restrictive) associated with a WS-Resource of type OperatingSystem. Operating System Descriptor Properties (014) <Property path=”id:ResourceType”> (015) <ValidValues> (016) <id:ResourceType>OperatingSystem</id:ResourceType> (017) <id:ResourceType>SuSELinux</id:ResourceType> (018) <id:ResourceType>IBMzOS</id:ResourceType> (019) <id:ResourceType>MicrosoftWindows_XP</id:ResourceType> (020) </ValidValues> (021) </Property> (022) <Property path="os:numberOfProcesses" (023) mutability="mutable" (024) modifiability="read-only" /> (025) <Property path=”os:processor” (026) mutability=”constant” (027) modifiability=”read-only” /> (028) <Property path=”os:processor/os:processorFamily”> (029) <ValidValues> (030) <os:processorFamily>Pentium Family</os:processorFamily> (031) <os:processorFamily>Power PC 750</os:processorFamily> (032) <os:processorFamily>68xxxx Family</os:processorFamily> (033) <os:processorFamily>IBM390 Family</os:processorFamily> (034) <os:processorFamily>G5</os:processorFamily> (035) </ValidValues> (036) </Property> X Replace not augment
Windows XP WS-Resource Descriptor (001) <Definitions (002) xmlns=”http://docs.oasis-open.org/wsrf/2004/10/wsrf-WS-ResourceMetadataDescriptor-1.0-draft-01.xsd” (003) xmlns:id=”http://example.com/ns/Identification” (004) xmlns:os=”http://example.com/ns/OperatingSystem” (005) targetNamespace=”http://example.com/ns/OperatingSystem/WinXP”> (006) <MetadataDescriptor (007) name=”WindowsXPPrototype” (008) interface=”os:OperatingSystem” (009) wsdlLocation=”http://example.com/ns/OperatingSystem (010) http://example.com/ns/OperatingSystem.wsdl” (011) specializes=”os:OperatingSystemMetadataDescriptor” (012) metadataDescriptorLocation=”http://example.com/ns/OperatingSystem (013) http://example.com/metadataDescriptors/OperatingSystem.wsrmd” > … next page Property metadata descriptions … (026) </MetadataDescriptor> (027) </Definitions>
Windows XP WS-Resource Properties (014) <Property path=”id:ResourceType”> (015) <ValidValues> (016) <id:ResourceType>OperatingSystem</id:ResourceType> (017) <id:ResourceType>MicrosoftWindows_XP</id:ResourceType> (018) </ValidValues> (019) </Property> (020) <Property path=”os:processor/os:processorFamily” (021) <ValidValues> (022) <os:processorFamily>Pentium Family</os:processorFamily> (023) <os:processorFamily>AMD</os:processorFamily> (024) </ValidValues> (025) </Property>
Logical Model X X
Key design decisions • Provides templates to describe instantiated resources implementations of those interfaces • All instances of a resource conform to the same descriptor document • Exactly one ‘Descriptor’ document associated with a WSDL interface or portType • Descriptor ‘points to’ the WSDL document with which it is associated • Allows additional domain specific extensions – e.g. for notifications, relationships
Definitions <Definitions targetNamespace=”xs:anyURI” {anyAttribute}* > <documentation />? <MetadataDescriptor /> * {any}* </Definitions> The nature of this is really just properties now so should it be PropertiesDescriptor? Originally had Definitions component to contain multiple MetadataDescriptors and to establish targetNamespace. Is this still needed?
MetadataDescriptor <MetadataDescriptor name=”xs:NCName” interface=”xs:QName” specializes=”list of xs:QName”? wsdlLocation=”list of xs:anyUri”? metadataDescriptorLocation=”list of xs:anyUri”? {anyAttribute}* > <documentation /> ? <Property /> * <Operation /> * {any}* </MetadataDescriptor> Do we need this? Not doing tree walking anymore. Maybe? If not then….
Property <Property path=”xs:QName [/ [xs:QName | xs:NCName ]]* [/@[xs:QName | xs:NCName ]]?” mutability=”[constant|appendable|mutable]” ? modifiability=”[read-only|read-write]” ? subscribability=”xs:boolean” ? {anyAttribute}* > <documentation />? [ <ValidValues> {any}* </ValidValues> | <ValidValueRange lowerBound="xs:anySimpleType"? upperBound="xs:anySimpleType"? /> ] ? <StaticValues> {any}* </StaticValues> ? {any}* </Property> Would like to see this be simplified to just RPEs…
X Path of a Property component (Overlaps) • Overlapping path iff, A1 = B1. This is equivalent to saying that Property A and Property B pertain to the same Resource Property, but either or both of those components may pertain only to a descendant of the resource property. For example, if the {path} of Property A is “tns:a/b” and the {path} of Property B is “tns:a”, we say that the {path} of Property A and the {path} of Property B overlap.
X Path of a Property component (identical) • identical path iff, for each value of i, Ai = Bi. This is equivalent to saying the {path} of Property A is equivalent to the {path} of Property B.
X Path of a Property component (narrower) • “narrower” path iff the path length of Property B is less than the Path length of Property A, and for each value of i, where i is less than the path length of B, Ai = Bi. This is equivalent to saying that Property A is scoped to a more specific sub part of the resource property. For example, if the {path} of Property A is “tns:a/b” and the {path} of Property B is “tns:a”, we say that Property A has narrower scope, it describes or constrains only the descendant nodes of the resource property “tns:a” rooted at the element “b”. Property B has a “broader” (or less narrow) path, in that it pertains to the entire resource property “tns:a”.
X Operation <Operation name=”xs:NCName” inputMessage=“xs:QName” ? outputMessage=”xs:QName” ? idempotent=”xs:Boolean” ? {anyAttribute}* > <documentation>? {any} </Operation>