some questions about Reportable REST API
As a follow up of https://jazz.net/forum/questions/149119/is-it-possible-to-access-work-item-history-via-plain-java-api-or-oslc
My goal is to find out the status (change) of workitem at different (changed) dates (for each workitem satisfying a query)
I was able to play around for sometime with the Reportable REST API and was able to get the worktiem history
Regarding the status I see something like this in the history
<predecessor>_AZrXQcu5EeO08OhFHLECUA</predecessor>
How can I find out to which state this _AZrXQcu5EeO08OhFHLECUA belongs to?
Also I read that the Reportable REST API is different from regular OSLC for work items. This means that I will not be able to execute a predefined query via Reportable REST API right?
Accepted answer
sorry, state and list of states (set of attributes at point in time) makes for confusing talk.
you want the text value of the status field of each workitem change in its history...
this works
https://localhost:9143/ccm/rpt/repository/workitem?fields=workitem/workItem/%28id|summary|itemId|itemHistory/%28stateId|predecessor|state/name%29%29
returns
<workItem><id>7</id><summary>fribble</summary><itemId>_1EHXgEiCEeOJEeGE8YExBw</itemId><itemHistory>
<stateId>_IMLykcxvEeOjLf0lpIM4lw</stateId>
<predecessor>_z2k6oMoZEeOjy4RglL53dA</predecessor>
<state><name>In Progress</name></state></itemHistory>
<itemHistory>
<stateId>_oVGrUnFgEeOw56cxmubVJQ</stateId>
<predecessor>_-OQw0U4-EeOhD8kQDn6qiA</predecessor>
<state><name>New</name></state>
</itemHistory>
<itemHistory>
<stateId>_-OQw0U4-EeOhD8kQDn6qiA</stateId><predecessor>_9MSYgUiCEeORtsQwGYgl8A</predecessor>
<state><name>New</name></state>
</itemHistory>
<itemHistory>
<stateId>_9MSYgUiCEeORtsQwGYgl8A</stateId>
<predecessor/>
<state><name>New</name></state>
</itemHistory>
<itemHistory>
<stateId>_z2k6oMoZEeOjy4RglL53dA</stateId>
<predecessor>_oVGrUnFgEeOw56cxmubVJQ</predecessor>
<state><name>New</name></state>
</itemHistory>
</workItem>
you want the text value of the status field of each workitem change in its history...
this works
https://localhost:9143/ccm/rpt/repository/workitem?fields=workitem/workItem/%28id|summary|itemId|itemHistory/%28stateId|predecessor|state/name%29%29
returns
<workItem><id>7</id><summary>fribble</summary><itemId>_1EHXgEiCEeOJEeGE8YExBw</itemId><itemHistory>
<stateId>_IMLykcxvEeOjLf0lpIM4lw</stateId>
<predecessor>_z2k6oMoZEeOjy4RglL53dA</predecessor>
<state><name>In Progress</name></state></itemHistory>
<itemHistory>
<stateId>_oVGrUnFgEeOw56cxmubVJQ</stateId>
<predecessor>_-OQw0U4-EeOhD8kQDn6qiA</predecessor>
<state><name>New</name></state>
</itemHistory>
<itemHistory>
<stateId>_-OQw0U4-EeOhD8kQDn6qiA</stateId><predecessor>_9MSYgUiCEeORtsQwGYgl8A</predecessor>
<state><name>New</name></state>
</itemHistory>
<itemHistory>
<stateId>_9MSYgUiCEeORtsQwGYgl8A</stateId>
<predecessor/>
<state><name>New</name></state>
</itemHistory>
<itemHistory>
<stateId>_z2k6oMoZEeOjy4RglL53dA</stateId>
<predecessor>_oVGrUnFgEeOw56cxmubVJQ</predecessor>
<state><name>New</name></state>
</itemHistory>
</workItem>
Comments
Super! Thanks a lot. Worked.
I was using this
https://localhost:9443/ccm/rpt/repository/workitem?fields=workitem/workItem[id='1234']/(id|itemHistory/|state/)
and didn't get state values..
after looking at your example this worked
https://localhost:9443/ccm/rpt/repository/workitem?fields=workitem/workItem[id='1234']/(id|itemHistory/(|state/)|state/)
Many thanks.
Also this gave me all
https://localhost:9443/ccm/rpt/repository/workitem?fields=workitem/workItem[id='1234']/(id|itemHistory/(/)|state/)
thanks.. was wondering how wildcarding would work.
1 vote
One other answer
Hi Karthik/Sam,
I have a similar requirement where I am trying to pull out history (Defect State and the date when the state was changed).
My goal is to list history for all defects that has a values "Release 8.2.05" under a custom attribute "defect.attribute.FoundinRelease".
The previous examples above passing 'id' as the parameter, how can I pass my custom attribute's value as parameter.
Here is the property of the custom attribute
<key>defect.attribute.FoundinRelease</key>
<type>smallStringValue</type>
<booleanValue/>
<integerValue/>
<longValue/>
<doubleValue>0.0</doubleValue>
<smallStringValue>enumeration.foundinrelease.literal.l11</smallStringValue>
<displayName>Found in Release</displayName>
<displayValue>Release 8.2.05</displayValue>
I have a similar requirement where I am trying to pull out history (Defect State and the date when the state was changed).
My goal is to list history for all defects that has a values "Release 8.2.05" under a custom attribute "defect.attribute.FoundinRelease".
The previous examples above passing 'id' as the parameter, how can I pass my custom attribute's value as parameter.
Here is the property of the custom attribute
<key>defect.attribute.FoundinRelease</key>
<type>smallStringValue</type>
<booleanValue/>
<integerValue/>
<longValue/>
<doubleValue>0.0</doubleValue>
<smallStringValue>enumeration.foundinrelease.literal.l11</smallStringValue>
<displayName>Found in Release</displayName>
<displayValue>Release 8.2.05</displayValue>
Comments
Also, along with the release name, I would like to filter the result only for "Defect" work item type.
I believe you cannot filter on "customAttributes" or "allExtensions" as they are both multi-valued and a filter requires a single value.
As for filtering on work item type, you can use the filter like this
?fields=workitem/workItem[type/id='defect']/*
Comments
sam detweiler
Apr 24 '14, 12:19 p.m.one of the state entries should have that tag as its itemId field. (that is the UUID of the workitem state)
https://localhost:9143/ccm/rpt/repository/workitem?fields=workitem/workItem/%28id|summary|itemId%29
returns
<workitem Version="1.0.0" rel="next" href="https://localhost:9143/ccm/rpt/repository/workitem?fields=workitem%2FworkItem%2F%28id%7Csummary%7CitemId%29&id=_DYAO8MvMEeOjLf0lpIM4lw&size=100&pos=100"><workItem><id>1</id><summary>Define a new build</summary><itemId>_tLAlEEPTEeOc2Lc7Sj4jWg</itemId></workItem><workItem><id>2</id><summary>Share code with Jazz Source Control</summary><itemId>_tlJjYEPTEeOc2Lc7Sj4jWg</itemId></workItem><workItem><id>3</id><summary>Define sprints/iterations</summary><itemId>_toVaQEPTEeOc2Lc7Sj4jWg</itemId></workItem><workItem><id>4</id><summary>Define categories and releases for work items</summary><itemId>_tqZ20EPTEeOc2Lc7Sj4jWg</itemId></workItem>
1 vote
Karthik Krishnan
Apr 24 '14, 12:37 p.m.I see the ItemID but what could I infer from this? How can I relate this to state name?
sam detweiler
Apr 24 '14, 12:39 p.m.if you add itemId as as one of the fields returned for each state, this field should match the predecessor field on a later state.
using the itemId field should allow you to build the state order tree,
1 vote
Karthik Krishnan
Apr 24 '14, 12:49 p.m.sam detweiler
Apr 24 '14, 1:13 p.m.ok, its stateid and predecessor
this
https://localhost:9143/ccm/rpt/repository/workitem?fields=workitem/workItem/%28id|summary|itemId|itemHistory/%28stateId|predecessor%29%29
yields
this
<workItem><id>7</id><summary>fribble</summary><itemId>1EHXgEiCEeOJEeGE8YExBw</itemId><itemHistory><stateId>_z2k6oMoZEeOjy4RglL53dA</stateId><predecessor>_oVGrUnFgEeOw56cxmubVJQ</predecessor></itemHistory><itemHistory><stateId>_oVGrUnFgEeOw56cxmubVJQ</stateId><predecessor>-OQw0U4-EeOhD8kQDn6qiA</predecessor></itemHistory><itemHistory><stateId>_-OQw0U4-EeOhD8kQDn6qiA</stateId><predecessor>_9MSYgUiCEeORtsQwGYgl8A</predecessor></itemHistory><itemHistory><stateId>_9MSYgUiCEeORtsQwGYgl8A</stateId><predecessor/></itemHistory></workItem>
Karthik Krishnan
Apr 25 '14, 4:07 a.m.Thanks Sam. Yes I get the stateid and predecessor. What i need is after reading predecessor I need to report this with state name like New / in Progress etc.