OSLC Service Discovery and Resource Definition DRAFT
NOTE: This is a
work in progress
Overview
This intent of this specification is to identify how OSLC services are defined and can be discovered. It also will address the ability to locate a service resource, from any OSLC resource.
This will replace the
Service Resources definition in the
OSLC Core Spec DRAFT
Scenarios Supported
- Consumer has a single URL that describes enough configuration information to utilize a domain's services such as:
- query
- resource shapes
- factories
- delegated UIs
- vendor info
- authentication method
- OSLC specs supported
- Service provider has multiple levels of contexts in which discovery needs to occur. A tool has a concept of products that contain projects, which is the final configuration end-point for services.
- A single service provider supports multiple OSLC domain specifications: Reporting and CM
Service Discovery Process
TBD
Service Context
Every OSLC Resource SHOULD have a reference to an resource that provides needed context. Often this will be a resource that references it's Service Resource definition.
- Properties:
-
oslc:context
(String, only-one) - brief title of the service.
Service Resources
OSLC services are available via a Service Resource which specifies the other resources that a client needs to interact with the service.
Conceptual Models
Service Definition
A Service Provider Resource describes the resource's that enable a client to interact with an OSLC Service Provider.
- QName:
oslc:ServiceProvider
- Type URI:
http://open-services.net/xmlns/oslc#ServiceProvider
- Properties:
-
creationResource
(URI, zero-or-many) - a Service MAY have one or more creation resources.
-
queryResource
(URI, zero-or-many) - a Service MAY have one or more query resources.
-
resourceShapeResource
(URI, zero-or-many) - a Service MAY have one or more Resource Shape Resources.
- A Service Resource MAY provide other property values.
Provider Definition
- QName:
oslc:ProviderInfo
- Type URI:
http://open-services.net/xmlns/oslc#ProviderInfo
- Properties:
-
dc:title
(String, only-one) - brief title of the service.
-
dc:description
(String, only-one) - a detailed description of the provider
-
dc:contributor
(In-line, zero-or-one)
-
dc:title
(String, only-one) - title string that could be used for display
-
dc:identifier
(String, only-one) -This can be of any form but recommend to either be of URN com.{company name}.{product identifier} or URL forms. This property is to be used by a client application to identify the provider of this service.
-
oslc:icon
(URL, only-one) - URL to an icon file that represents the provider. This icon should be a favicon format and 16x16 pixels in size
- TBD
- A ProviderInfo? Resource MAY provide other property values.
Domain Definition
TBD How to define domain specific information
Service Provider Catalog
TBD Include in
OslcServiceProviderCatalogV1
Delegated Service Picker
Since this function could easily be abstracted by a service provider, it would be possible to delegate the presentation of a Web UI to allow for service discovery.
Samples
Service Discovery
<?xml version="1.0" encoding="UTF-8"?>
<oslc:Service xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/terms/" xmlns:oslc="http://open-services.net/xmlns/1.0/"
xmlns:oslc_cm="http://open-services.net/xmlns/cm/1.0/" rdf:about="http://example.com/bugs/service-descriptor.xml">
<dc:title>Project X</dc:title>
<dc:description>My Product Name's OSLC CM Service Description for
Project X.</dc:description>
<dc:contributor>
<oslc:Contributor>
<dc:title>My Company Name, My CM Product</dc:title>
<dc:identifier>com.mycompany.myproduct</dc:identifier>
<oslc:icon rdf_resource="http://example.com/icons/myprod.ico" />
</oslc:Contributor>
</dc:contributor>
<oslc_cm:changeRequests>
<oslc_cm:ChangeRequests>
<oslc:version>2.0</oslc:version>
<!-- Resource creation factory URL -->
<oslc:factory>
<oslc:Factory>
<oslc:default>true</oslc:default>
<dc:title>Location for creation of bugs</dc:title>
<oslc:service>http://example.com/bugs</oslc:service>
<oslc:shape rdf:resource="http://example.com/bugs/schema" />
</oslc:Factory>
</oslc:factory>
<!-- Alternate resource creation factory URL -->
<oslc:factory>
<oslc:Factory>
<dc:title>Location for creation of *HIGH PRIORITY* bugs</dc:title>
<oslc:service>./bug?priority=High</oslc:service>
<oslc:shape rdf:resource="http://example.com/bugs/schema?priority=High" />
</oslc:Factory>
</oslc:factory>
<!-- Simple GET-based URL-encoded query -->
<oslc:query>
<oslc:Query>
<dc:title>Simple GET-based Bug Query</dc:title>
<oslc:service>http://example.com/bugs</oslc:service>
<oslc:shape rdf:resource="http://example.com/bugs/schema" />
</oslc:Query>
</oslc:query>
<!-- Resource Selection Dialog -->
<oslc:selectionDialog>
<oslc:Dialog> <!-- TODO: Might be better called <oslc:Widget> -->
<oslc:hintWidth>740px</oslc:hintWidth>
<oslc:hintHeight>480px</oslc:hintHeight>
<dc:title>Web Dialog for finding and selecting bugs.</dc:title>
<oslc:service>http://example.com/bugs/ui/resourcePicker</oslc:service>
</oslc:Dialog>
</oslc:selectionDialog>
<!-- Resource Creation Dialog -->
<oslc:creationDialog>
<oslc:Dialog>
<oslc:hintWidth>600px</oslc:hintWidth>
<oslc:hintHeight>320px</oslc:hintHeight>
<dc:title>Bug Submit Dialog for creating bugs.</dc:title>
<oslc:label>Bug</oslc:label>
<oslc:service>http://example.com/bugs/ui/submitDialog</oslc:service>
</oslc:Dialog>
</oslc:creationDialog>
</oslc_cm:ChangeRequests>
</oslc_cm:changeRequests>
</oslc:Service>
References
- OslcServiceProviderCatalogV1?
- CmServiceDescriptionV1?
- RmServiceDescriptionV1?
Design Assumptions
- A single "service descriptor" can contain multiple domains
- A "service descriptor" can contain references to nested or other descriptors