Link Discovery
This page outlines a feature that has now been deferred from SCM 1.0 - that of link discovery.
SCM systems often work hand-in-hand with other OSLC systems, such as
Change Management and
Requirements Management. For example, a change request in CM might be related to one or more change sets in SCM, and a given baseline in SCM might include a number of change sets associated with one or more change requests in CM. Different service providers might implement these relationships in different ways, and the relationships might be owned by different systems - for example, the link between a change request and a change set might be controlled by the CM system, or the SCM system, or both.
The Service Description Document provides information on which links are provided by a given service. For example, a link between a change request and a change set might be a two-way relationship, queryable from both the CM service and the SCM service, or it might be a one-way link, implemented by only one end of the link. A two-way link is one that appears in the service descriptions of both services; a one-way link appears in the service description of only one service. A client can use the information in two or more service descriptions to direct queries for links to the appropriate service, and thus synthesize the information necessary to traverse links in both directions, even for links that are handled by only one end of a cross-service link.
Note that while a link may be queried and reported by a given service, it might or might not be possible to create, modify, or delete such a link from that service. For example, a two-way link may be owned by a specific service at only one end of that link.
An oslc_sd:Link resource describes the capabilities of one of cross-service link.
<oslc_sd:Link>
<dc:title>associated_change_set</dc:title>
<dc:description>A link from a change request to a change set, queryable from SCM</dc:description>
<oslc_sd:linkFrom>
<oslc_sd:ServiceDescriptor service=".. content type of originating OSLC service .." />
<oslc_sd:fromResource name="oslc_cm:ChangeRequest" />
</oslc_sd:linkFrom>
<oslc_sd:linkTo>
<!-- if no oslc_sd:ServiceDescriptor is provided, it implies the link is to or from an object provided by the current service type -->
<oslc_sd:toResource name="oslc_scm:ChangeSet" />
</oslc_sd:linkTo>
<oslc_sd:modifiable modifiable="false" />
</oslc_sd:Link>
Example
<?xml version="1.0" encoding="UTF-8"?>
<oslc_scm:ServiceDescriptor
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/terms/"
xmlns:oslc_scm="http://open-services.net/xmlns/scm/1.0/"
rdf:about="http://example.com/scm/service-descriptor.xml">
<dc:title>SCM Database D</dc:title>
<dc:description>My Product Name's OSLC SCM Service Description for Database D.</dc:description>
<dc:contributor>
<dc:title>My Company Name, My SCM Product</dc:title>
<dc:identifier>com.mycompany.myproduct</dc:identifier>
</dc:contributor>
<oslc_scm:baselines version="1.0">
<!-- Simple GET-based URL-encoded query -->
<oslc_scm:simpleQuery>
<dc:title>Simple GET-based Baseline Query</dc:title>
<oslc_sd:widget>./baseline_query</oslc_sd:widget>
</oslc_scm:simpleQuery>
<!-- Baseline Selection Dialog -->
<oslc_sd:Dialog oslc_sd:hintWidth="740px" oslc_sd:hintHeight="480px">
<dc:title>Web Dialog for finding and selecting Baselines.</dc:title>
<oslc_sd:widget>./ui/baselinePicker</oslc_sd:widget>
</oslc_sd:Dialog>
</oslc_scm:baselines>
<oslc_scm:changesets version="1.0">
<!-- Simple GET-based URL-encoded query -->
<oslc_scm:simpleQuery>
<dc:title>Simple GET-based Baseline Query</dc:title>
<oslc_sd:widget>./changeset_query</oslc_sd:widget>
</oslc_scm:simpleQuery>
<!-- Changeset Selection Dialog -->
<oslc_sd:Dialog oslc_sd:hintWidth="740px" oslc_sd:hintHeight="480px">
<dc:title>Web Dialog for finding and selecting change sets.</dc:title>
<oslc_sd:widget>./ui/changesetPicker</oslc_sd:widget>
</oslc_sd:Dialog>
</oslc_scm:changesets>
</oslc_scm:ServiceDescriptor>
<oslc_sd:Link>
<dc:title>associated_change_set</dc:title>
<dc:description>A link from a change request to a change set, queryable from SCM</dc:description>
<oslc_sd:linkFrom>
<oslc_sd:ServiceDescriptor service="application/x-oslc-cm-service-description" />
<oslc_sd:fromResource name="oslc_cm:ChangeRequest" />
</oslc_sd:linkFrom>
<oslc_sd:linkTo>
<oslc_sd:toResource name="oslc_scm:ChangeSet" />
</oslc_sd:linkTo>
</oslc_sd:Link>