OSLC: How to remove subscribers with OSLC?
I was able to update/modify a subscriber using PUT method but can not figure out how to remove a users.
I could remove a user by removing the userID if there is more than 1 users in subscription but can not remove a last subscribed user. When I remove a user ID like below, I will get "500 Internal Server Error" with "Invalid Contributor User Id. Contributor userId must not be empty" message. What is a proper way to specify no subscription user for a work Item update? DATA for PUT: <rtc_cm:subscribers rdf:resource="https://win-zdjhomb8uyp:9443/jts/users/ "/> ↓ Response Status: 500 Internal Server Error Data: <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:oslc="http://open-services.net/ns/core#" > <rdf:Description rdf:nodeID="A0"> <oslc:message>Invalid Contributor User Id. Contributor userId must not be empty</oslc:message> <oslc:statusCode>500</oslc:statusCode> <rdf:type rdf:resource="http://open-services.net/ns/core#Error"/> </rdf:Description> </rdf:RDF> ============ To modify subscriber (working OK with REST client) ================== URL https://win-zdjhomb8uyp:9443/ccm/resource/itemName/com.ibm.team.workitem.WorkItem/1 Method - PUT Headers Content-Type: application/rdf+xml OSLC-Core-Version: 2.0 Accept: application/rdf+xml Data <rdf:RDF xmlns:oslc_pl="http://open-services.net/ns/pl#" xmlns:rtc_ext="http://jazz.net/xmlns/prod/jazz/rtc/ext/1.0/" xmlns:rtc_cm="http://jazz.net/xmlns/prod/jazz/rtc/cm/1.0/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:oslc_cmx="http://open-services.net/ns/cm-x#" xmlns:acp="http://jazz.net/ns/acp#" xmlns:oslc_cm="http://open-services.net/ns/cm#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:oslc="http://open-services.net/ns/core#"> <oslc_cm:ChangeRequest rdf:about="https://win-zdjhomb8uyp:9443/ccm/resource/itemName/com.ibm.team.workitem.WorkItem/1"> <rtc_cm:subscribers rdf:resource="https://win-zdjhomb8uyp:9443/jts/users/user1"/> </oslc_cm:ChangeRequest> </rdf:RDF> ===================================== |
Accepted answer
Individual properties of a change request can be modified with the "?oslc_cm.properties" URL parameter. In case of changing subscribers you would do the following:
GET https://myhost:9443/jazz/resource/itemName/com.ibm.team.workitem.WorkItem/1?oslc_cm.properties=rtc_cm:subscribers
OSLC-Core-Version: 2.0
Accept: application/rdf+xml
RTC returns the following RDF content:
<rdf:RDFRemove all the subscribers from the RDF you want to unsubscribe and PUT the resource back to the server. In case you want to remove all subscribers your resource would look like: <rdf:RDF
PUT https://myhost:9443/jazz/resource/itemName/com.ibm.team.workitem.WorkItem/1?oslc_cm.properties=rtc_cm:subscribers
OSLC-Core-Version: 2.0
content-type: application/rdf+xml
HTH,
Jan.
ryosuke oka selected this answer as the correct answer
Comments
ryosuke oka
commented Jan 10 '13, 4:17 a.m.
Hi Jan.
|
2 other answers
Hi there, I'm not sure what happened to your RDF content but mine looks a little different. When I do a GET call with the following parameters:
GET https://myhost:9443/jazz/resource/itemName/com.ibm.team.workitem.WorkItem/1
OSLC-Core-Version: 2.0
Accept: application/rdf+xml
RTC returns the following RDF content:
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:acp="http://jazz.net/ns/acp#"
xmlns:oslc="http://open-services.net/ns/core#"
xmlns:oslc_cmx="http://open-services.net/ns/cm-x#"
xmlns:dcterms="http://purl.org/dc/terms/"
xmlns:oslc_cm="http://open-services.net/ns/cm#"
xmlns:oslc_pl="http://open-services.net/ns/pl#"
xmlns:rtc_cm="http://jazz.net/xmlns/prod/jazz/rtc/cm/1.0/"
xmlns:rtc_ext="http://jazz.net/xmlns/prod/jazz/rtc/ext/1.0/">
<rdf:Description rdf:about="https://myhost:9443/jazz/resource/itemName/com.ibm.team.workitem.WorkItem/1">
<acp:accessControl rdf:resource="https://myhost:9443/jazz/oslc/access-control/_39WjkEqcEeKMdtrex543ww"/>
<dcterms:contributor rdf:resource="https://myhost:9443/jazz/users/unassigned"/>
<dcterms:created rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2012-06-23T12:00:53.026Z</dcterms:created>
<dcterms:creator rdf:resource="https://myhost:9443/jazz/users/ADMIN"/>
<dcterms:description rdf:parseType="Literal"/>
<dcterms:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#string">1</dcterms:identifier>
<dcterms:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2013-01-09T18:22:57.086Z</dcterms:modified>
<dcterms:subject rdf:datatype="http://www.w3.org/2001/XMLSchema#string"/>
<dcterms:title rdf:parseType="Literal">work item on this plan</dcterms:title>
<dcterms:type rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Task</dcterms:type>
<oslc:discussedBy rdf:resource="https://myhost:9443/jazz/oslc/workitems/_53swYEqcEeKMdtrex543ww/rtc_cm:comments"/>
<oslc:instanceShape rdf:resource="https://myhost:9443/jazz/oslc/shapes/workitems/_53swYEqcEeKMdtrex543ww"/>
<oslc:serviceProvider rdf:resource="https://myhost:9443/jazz/oslc/contexts/_39WjkEqcEeKMdtrex543ww/workitems/services"/>
<oslc:shortTitle rdf:parseType="Literal">Task 1</oslc:shortTitle>
<oslc_cm:approved rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc_cm:approved>
<oslc_cm:closed rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc_cm:closed>
<oslc_cm:fixed rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc_cm:fixed>
<oslc_cm:inprogress rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc_cm:inprogress>
<oslc_cm:reviewed rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc_cm:reviewed>
<oslc_cm:status rdf:datatype="http://www.w3.org/2001/XMLSchema#string">New</oslc_cm:status>
<oslc_cm:verified rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc_cm:verified>
<oslc_cmx:priority rdf:resource="https://myhost:9443/jazz/oslc/enumerations/_39WjkEqcEeKMdtrex543ww/priority/priority.literal.l01"/>
<oslc_cmx:project rdf:resource="https://myhost:9443/jazz/oslc/projectareas/_39WjkEqcEeKMdtrex543ww"/>
<oslc_cmx:severity rdf:resource="https://myhost:9443/jazz/oslc/enumerations/_39WjkEqcEeKMdtrex543ww/severity/severity.literal.l3"/>
<oslc_pl:schedule rdf:resource="https://myhost:9443/jazz/oslc/workitems/_53swYEqcEeKMdtrex543ww/schedule"/>
<rdf:type rdf:resource="http://open-services.net/ns/cm#ChangeRequest"/>
<rtc_cm:correctedEstimate rdf:datatype="http://www.w3.org/2001/XMLSchema#long"/>
<rtc_cm:estimate rdf:datatype="http://www.w3.org/2001/XMLSchema#long"/>
<rtc_cm:filedAgainst rdf:resource="https://myhost:9443/jazz/resource/itemOid/com.ibm.team.workitem.Category/_5i_EoEqcEeKMdtrex543ww"/>
<rtc_cm:modifiedBy rdf:resource="https://myhost:9443/jazz/users/ADMIN"/>
<rtc_cm:plannedFor rdf:resource="https://myhost:9443/jazz/oslc/iterations/_4B0M0UqcEeKwhuBpkPFD3A"/>
<rtc_cm:progressTracking rdf:resource="https://myhost:9443/jazz/oslc/workitems/_53swYEqcEeKMdtrex543ww/progressTracking"/>
<rtc_cm:repository rdf:resource="https://myhost:9443/jazz/oslc/repository"/>
<rtc_cm:resolvedBy rdf:resource="https://myhost:9443/jazz/users/unassigned"/>
<rtc_cm:state rdf:resource="https://myhost:9443/jazz/oslc/workflows/_39WjkEqcEeKMdtrex543ww/states/com.ibm.team.workitem.taskWorkflow/1"/>
<rtc_cm:subscribers rdf:resource="https://myhost:9443/jazz/users/ADMIN"/>
<rtc_cm:subscribers rdf:resource="https://myhost:9443/jazz/users/volt"/>
<rtc_cm:teamArea rdf:resource="https://myhost:9443/jazz/oslc/teamareas/_5TM8MEqcEeKMdtrex543ww"/>
<rtc_cm:timeSheet rdf:resource="https://myhost:9443/jazz/oslc/workitems/_53swYEqcEeKMdtrex543ww/rtc_cm:timeSheet"/>
<rtc_cm:timeSpent rdf:datatype="http://www.w3.org/2001/XMLSchema#long"/>
<rtc_cm:type rdf:resource="https://myhost:9443/jazz/oslc/types/_39WjkEqcEeKMdtrex543ww/task"/>
<rtc_ext:archived rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</rtc_ext:archived>
<rtc_ext:contextId>_39WjkEqcEeKMdtrex543ww</rtc_ext:contextId>
</rdf:Description>
</rdf:RDF>
PUTting the same resource back to the server, just with a removed subscriber entry will remove it from the work item. For example, when you remove the entry
<rtc_cm:subscribers rdf:resource="https://myhost:9443/jazz/users/ADMIN"/>
PUT https://myhost:9443/jazz/resource/itemName/com.ibm.team.workitem.WorkItem/1
OSLC-Core-Version: 2.0
content-type: application/rdf+xml
HTH,
Jan.
Comments Jan, does this same approach work if removing the last subscriber? I think that was the main concern of the poster is that the last subscriber couldn't be removed this way. If you repeat your example, removing the other subscriber entry (so now there are no rtc_cm:subscriber entries), would you get the error or just no longer have any subscribers? |
Millard Ellingsworth (2.5k●1●24●31)
| answered Jan 08 '13, 3:22 p.m.
FORUM ADMINISTRATOR / JAZZ DEVELOPER
I've asked the developer who has worked in this area most recently to have a look. Until he gets to it, perhaps the discussion in these work items may help:
https://jazz.net/jazz/web/projects/Rational%20Team%20Concert#action=com.ibm.team.workitem.viewWorkItem&id=134520
https://jazz.net/jazz/web/projects/Rational%20Team%20Concert#action=com.ibm.team.workitem.viewWorkItem&id=210630
https://jazz.net/jazz/web/projects/Rational%20Team%20Concert#action=com.ibm.team.workitem.viewWorkItem&id=193651
Some of the related changes went into RTC 4.x. Since you have parts of this working, I'm assuming you are using the OSLC v2 and at least RTC 4.0.
Comments
ryosuke oka
commented Jan 08 '13, 11:37 p.m.
Hi Millard, Thank you for head up. Yes, I use v4.0.1 and OSLC v2.
|
Your answer
Dashboards and work items are no longer publicly available, so some links may be invalid. We now provide similar information through other means. Learn more here.
Comments
is it possible to unsubscribe "{currentUser}" from a work item in a single HTTP command?