This wiki is locked. Future workgroup activity and specification development must take place at our new wiki. For more information, see this blog post about the new governance model and this post about changes to the website.

Scenario: Create an Link from an AM Resource to Requirement

In this scenario the client wishses to create a new link to a requirement resource (or any externally managed resource identified with a URI) that the Architecture Management resource is on the source (subject) end. The client first GET's the OSLC AM representation of the AM resource with its ETag value. It inserts a new RDF/XML element in the <oslc_am:Resource> element that represents the link, and PUTs back the entire contents of the resource to the provider. The service provider will notice the new element and interpret it as a new property to of the resource. The removal of editable elements in the document imply the deletion of that property.

Example 1. Create a simple link to a requirement

This scenario assumes that the service provider allows the insertion of links, and that the client user has the permissions to do so. The client has a URI reference to an AM resource ( https://am.acme.com/resources/res323), and a URI of the externally managed requirement resource ( https://reqserver.acme.com/requirements/req10). The client also knows what link type (predicate) to use ( http://acme.com/links/elaborates). The client could allow the user to select the link type from a list of known types on the AM service provider using the Link Type service.

1.The client GET's the AM resource to insert a link into, and notes the ETag value.

Request
GET https://am.acme.com/resources/res323
Accept: application/x-oslc-am-resource+xml
Response
200 OK
Content-Type: application/x-oslc-am-resource+xml
ETag: "_siemvnshyu2746sakalfuy" 

<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:dc="http://purl.org/dc/terms/" 
   xmlns:oslc_am="http://open-services.net/xmlns/am/1.0/"
   rdf:about="https://acme.com/resources/res1">

    <oslc_am:Resource>
      <dc:title>ServiceInterface</dc:title>
      <dc:description>This interface is used to do service things.</dc:description>
      <dc:type rdf:resource="http://www.eclipse.org/uml2/3.0.0/UML/Interface" />
      <dc:format>application/x-uml+xml</dc:format>
    </oslc_am:resource> 

</rdf:RDF>

 

2. The client modifies the content, inserting a new link element into the body of the <oslc_am:Resource> to represent the link. The client then PUTs back the resource to the same URI with the current ETag value in the If-Match header. If the service provider permits the the insertion of link, the user has authorization, the syntax of the link is correct, the service provider will response with a 200 OK response.

Request
PUT https://am.acme.com/resources/res323
Content-Type: application/x-oslc-am-resource+xml
If-Match: "_siemvnshyu2746sakalfuy"

<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:dc="http://purl.org/dc/terms/" 
   xmlns:oslc_am="http://open-services.net/xmlns/am/1.0/"
   xmlns:acme=" =http://acme.com/links/"=
   rdf:about="https://acme.com/resources/res1">

    <oslc_am:Resource>
      <dc:title>ServiceInterface</dc:title>
      <dc:description>This interface is used to do service things.</dc:description>
      <dc:type rdf:resource="http://www.eclipse.org/uml2/3.0.0/UML/Interface" />
      <dc:format>application/x-uml+xml</dc:format>

      <acme:elaborates rdf:resource=" =https://reqserver.acme.com/requirements/req10= "/>

    </oslc_am:resource> 

</rdf:RDF> 
Response
200 OK
ETag: "_sownmds21sa92js6aloaa"

Example 2. Create a link to a requirement with properties

This scenario shows how a client can insert a link to a requirement, and associate an additional property to the link itself. This property, a short description, applies to the link. The scenario follows the same outline as adding a simple link (Example 1.), the only difference being the introduction of an additional <rdf:Description> element which augments the link property.

1.The client GET's the AM resource to insert a link into, and notes the ETag value.

Request
GET https://am.acme.com/resources/res323
Accept: application/x-oslc-am-resource+xml
Response
200 OK
Content-Type: application/x-oslc-am-resource+xml
ETag: "_siemvnshyu2746sakalfuy" 

<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:dc="http://purl.org/dc/terms/" 
   xmlns:oslc_am="http://open-services.net/xmlns/am/1.0/"
   rdf:about="https://acme.com/resources/res1">

    <oslc_am:Resource>
      <dc:title>ServiceInterface</dc:title>
      <dc:description>This interface is used to do service things.</dc:description>
      <dc:type rdf:resource="http://www.eclipse.org/uml2/3.0.0/UML/Interface" />
      <dc:format>application/x-uml+xml</dc:format>
    </oslc_am:resource> 

</rdf:RDF>

 

2. The client modifies the content, inserting a new link element into the body of the <oslc_am:Resource> to represent the link. It also inserts a new <rdf:Description> element as a sibling to the <oslc_am:Resource> containing the property to associate with the link. An rdf:Id attribute is added to the link element so that it can be referenced within the resource, and this reference is used in the rdf:about attribute of the description element.

The client then PUTs back the resource to the same URI with the current ETag value in the If-Match header. If the service provider permits the the insertion of link, the user has authorization, the syntax of the link is correct, the service provider will response with a 200 OK response.

Request
PUT https://am.acme.com/resources/res323
Content-Type: application/x-oslc-am-resource+xml
If-Match: "_siemvnshyu2746sakalfuy"

<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:dc="http://purl.org/dc/terms/" 
   xmlns:oslc_am="http://open-services.net/xmlns/am/1.0/"
   xmlns:acme="http://acme.com/links/"
   xml:base="https://acme.com/resources/res1"
   rdf:about="https://acme.com/resources/res1">

   <oslc_am:Resource>
      <dc:title>ServiceInterface</dc:title>
      <dc:description>This interface is used to do service things.</dc:description>
      <dc:type rdf:resource="http://www.eclipse.org/uml2/3.0.0/UML/Interface" />
      <dc:format>application/x-uml+xml</dc:format>

      <acme:elaborates rdf:ID="id1" rdf:resource="https://reqserver.acme.com/requirements/req10"/>

   </oslc_am:resource> 

   <rdf:Description rdf:about="#id1">
       <dc:Description>This link is valid for all use cases</dc:Description>
   </rdf:Description>

</rdf:RDF> 
Response
200 OK
ETag: "_sownmds21sa92js6aloaa"
Edit | Attach | Print version | History: r4 < r3 < r2 < r1 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r1 - 12 Jan 2010 - 15:04:06 - JimConallen
 
This site is powered by the TWiki collaboration platform Copyright � by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Contributions are governed by our Terms of Use
Ideas, requests, problems regarding this site? Send feedback