26
Tom Maguire William Vambenepe Metadata for WS-Resources WS-Resource Metadata Descriptor OASIS WSRF F2F Tuesday, May 17 th , 2005

Tom Maguire William Vambenepe

  • Upload
    kali

  • View
    50

  • Download
    0

Embed Size (px)

DESCRIPTION

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 - PowerPoint PPT Presentation

Citation preview

Page 1: Tom Maguire William Vambenepe

Tom MaguireWilliam Vambenepe

Metadata for WS-ResourcesWS-Resource Metadata Descriptor

OASIS WSRF F2FTuesday, May 17th, 2005

Page 2: Tom Maguire William Vambenepe

2

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

Page 3: Tom Maguire William Vambenepe

3

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.

Page 4: Tom Maguire William Vambenepe

4

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

Page 5: Tom Maguire William Vambenepe

5

CanonicalportType

OperatingSystemportType

Windows2003Server descriptor

LinuxRedHat descriptior

“Canonical” manageability portTypes

Most derived manageability portType for a managed resource. Defines the schema for the resourceProperties document that represents the state of the resource.

Windows2003ServerManaged resource type

LinuxRedHatManaged resource type

WS-Resource Descriptor document for each portType

Individual resource types that implement the port type provides its own descriptor that forms a template that resources of the type will match

Windows2003ServerWS-Resource LinuxRedHat

WS-Resource

OperatingSystem descriptor

Descriptor

Combined by copy-and-paste.Combined by reference

Individual portType descriptors are combined via references into a document that specializes the description of the interface

Implements

Describes

Overview

X

Page 6: Tom Maguire William Vambenepe

6

CanonicalportType

OperatingSystemportType

Windows2003Server descriptor

LinuxRedHat descriptior

“Canonical” manageability portTypes

Most derived manageability portType for a managed resource. Defines the schema for the resourceProperties document that represents the state of the resource.

Windows2003ServerManaged resource type

LinuxRedHatManaged resource type

WS-Resource Descriptor document for each portType

Individual resource types that implement the port type provides its own descriptor that forms a template that resources of the type will match

Windows2003ServerWS-Resource LinuxRedHat

WS-Resource

OperatingSystem descriptor

Descriptor

Combined by copy-and-paste.Combined by copy-and-paste

Individual portType descriptors are combined via copy and paste into a document that specializes the description of the interface

Implements

Describes

Overview

Page 7: Tom Maguire William Vambenepe

7

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>

The portType annotation for the Resource Property GED (next page). The descriptor which corresponds

to this portType. …and where that descriptor is located.

Page 8: Tom Maguire William Vambenepe

8

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?

Page 9: Tom Maguire William Vambenepe

9

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>

Page 10: Tom Maguire William Vambenepe

10

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" />

Page 11: Tom Maguire William Vambenepe

11

(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>

Identification portType Descriptor

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 Identification portType is at this location.

The ResourceID resource property element of the id:Identification resource property document.

Will always have a constant value …and it cannot be changed by the wsrp:SetResourceProperties operation.

The ResourceType resource property element of the id:Identification resource property document.

Page 12: Tom Maguire William Vambenepe

12

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 descriptor corresponds to the OperatingSystem portType.

This descriptor specializes the Identification descriptor.

The Identification MetadataDescriptor is at this location.

Page 13: Tom Maguire William Vambenepe

13

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>

This property element augments any property element that may appear in the Identification prototype.

The set of valid values the ResourceType resource property element may contain (restrictive) associated with a WS-Resource of type OperatingSystem.

The os:numberOfProcesses resource property elements value may change over time.

XReplace not augment

Page 14: Tom Maguire William Vambenepe

14

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>

Page 15: Tom Maguire William Vambenepe

15

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>

Page 16: Tom Maguire William Vambenepe

16

Logical Model

xsd:type

xsd:element<<globalElement>>

wsrmd:Property

*

1

*

1

<<constrains/describes>>

wsrmd:Operation

ResourePropertyDocument<<globalElement>> 1..*1..*

wsrmd:MetadataDescriptor

0..*0..*

0..*0..*

wsdl:Operation

<<extends/describes>>

<<constraints/describes>>wsdl:PortType

0..10..1

<<constrains/describes>>

1..*1..*

0..*0..*

+extends

XX

Page 17: Tom Maguire William Vambenepe

17

Information Model

xsd:type

wsdl:Operation

wsdl:PortType

1..*1..*

wsrmd:Operation

idempotent

1

*

<<extends/describes>>

1

*

<<constrains/describes>>

wsrmd:Definitions

targetNamespace : anyURI

xsd:element<<globalElement>>

ValidValues StaticValues

wsrmd:MetadataDescriptor

name : NCNameinterface : QNamewsdlLocation : l ist of anyURImetadataDescriptorLocation : list of anyURIspecializes : list of QName

0..*0..*

<<specializes>>

<<extends>><<extends/describes>>

0..*0..*

0..*0..*

ValidValuesRange

wsrmd:Property

modifiablitymutabilityelementPath : Path Expression

1

*

1

*

<<constrains/describes>> 0..10..1 0..10..1

0..*0..*

0..10..1

X

Page 18: Tom Maguire William Vambenepe

18

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

Page 19: Tom Maguire William Vambenepe

Pseudo Schemas

Page 20: Tom Maguire William Vambenepe

20

Definitions<Definitions targetNamespace=”xs:anyURI” {anyAttribute}* > <documentation />? <MetadataDescriptor /> * {any}*</Definitions>

Originally had Definitions component to contain multiple

MetadataDescriptors and to establish targetNamespace. Is this still needed?

The nature of this is really just properties now so should it be PropertiesDescriptor

?

Page 21: Tom Maguire William Vambenepe

21

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….

Page 22: Tom Maguire William Vambenepe

22

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…

Page 23: Tom Maguire William Vambenepe

23

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

Page 24: Tom Maguire William Vambenepe

24

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

Page 25: Tom Maguire William Vambenepe

25

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

Page 26: Tom Maguire William Vambenepe

26

Operation

<Operation name=”xs:NCName” inputMessage=“xs:QName” ? outputMessage=”xs:QName” ? idempotent=”xs:Boolean” ? {anyAttribute}* > <documentation>? {any} </Operation>X