Jazz Forum Welcome to the Jazz Community Forum Connect and collaborate with IBM Engineering experts and users

Unable to fetch the list of allowed values for Defect attribute i.e priority, severity of type Enumeration .

Hi,
I have following configurations:
Jazz Server with RTC 4.0.3
I am working with the REST API of RTC 4.0.3 and trying to fetch the list of  allowed values of the attributes of type enumeration i.e severity, priority or any custom enum type through the Java Client.

As per the REST API documentation i am able to fetch the Resource Shape details for the creation factory of the type defect.
It shows the RDF/XML data like this:

<oslc:property>
<oslc:Property rdf:about="https://localhost:9443/ccm/oslc/context/_xE9Ycmk-EeOkI5-xWTQ7Fw/shapes/workitems/defect/property/internalSeverity">
<dcterms:title rdf:parseType="Literal">Severity</dcterms:title>
<oslc:readOnly rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">true</oslc:readOnly>
<oslc:representation rdf:resource="http://open-services.net/ns/core#Either"/>
<oslc:valueType rdf:resource="http://open-services.net/ns/core#Resource"/>
<oslc:allowedValues>
<oslc:AllowedValues rdf:about="https://localhost:9443/ccm/oslc/context/_xE9Ycmk-EeOkI5-xWTQ7Fw/shapes/workitems/defect/property/internalSeverity/allowedValues">
<oslc:allowedValue rdf:resource="https://localhost:9443/ccm/oslc/enumerations/_xE9Ycmk-EeOkI5-xWTQ7Fw/severity/severity.literal.l2"/>
</oslc:AllowedValues>
</oslc:allowedValues>
<oslc:name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">severity</oslc:name>
<
oslc:defaultValue rdf:resource="https://localhost:9443/ccm/oslc/enumerations/_xE9Ycmk-EeOkI5-xWTQ7Fw/severity/severity.literal.l3"/>ore#Exactly-one"/>
</
oslc:property>

Here i can see the tag
: "oslc:allowedValue" which will list the allowed values for the attribute priority which is showing the single value only

<oslc:allowedValue rdf:resource="https://localhost:9443/ccm/oslc/enumerations/_xE9Ycmk-EeOkI5-xWTQ7Fw/severity/severity.literal.l2"/>
		
		
</oslc:AllowedValues>

But when i am seeing the RTC Web UI i am able to see the all the 4 items in the drop down box.
RTC Serverity Enum

Question : 01 Why i am unable to fetch the all the enum values for the attribute of type enum(i.e severity) from the resource shape of the creation factory?

Question :02 When i have set the external value from the enumeration settings as shown in the below snapshot , it starts showing the list in the allowed values field in the resource shape . Why is it like this?

Enum Settings Priority

Any pointer regarding this issue will we highly appreciated.

Thanks & Regards,
Rahul

0 votes



7 answers

Permanent link
  Hello Rahul,
not sure I follow you here.
In the above comment:
- OSLC request shows you look for internalPriority
- screen cap shows severity

In OOTB SCRUM PA - we don't have any external values both both attributes.

The doubt I have is about your concern / problem.
Are you saying:
1 - if I add external values to enum, then I can not fetch all values - but only get the default one
Or 
2 - if I remove external values to enum, then I can not fetch all values - but only get the default one
(which implicitly means - you are able to fetch values if you have external values)

As per your questions:

Q: Are you able to fetch the all allowed values after removing the External Value for any enum type attribute?
A: yes

Q: why should i provide these external values?  it's even not mandatory to add. 
A: you don't need to provide them - https://jazz.net/library/article/1003
External values can be used for accessing attributes via RTC's REST API, such as the OSLC implementation.

1 vote

Comments

 Hello Rahul,

so the difference between your env and my env is RTC version.
You are using 4.0.3
I am using 4.0.5

Any possibility for you to test 4.0.5?
Did you check ccm log and search for error?

Thanks


Permanent link
Hello Rahul,

I first fetched shapes (for defect):
ccm/oslc/context/_fzVScHhOEeOaco7oIGRnEg/shapes/workitems/defect

Checked the XML, and found:
  <rdf:Description rdf:about="https://9.37.26.38:9443/ccm/oslc/context/_fzVScHhOEeOaco7oIGRnEg/shapes/workitems/defect/property/internalPriority">
    <oslc:occurs rdf:resource="http://open-services.net/ns/core#Zero-or-one"/>
    <oslc:valueType rdf:resource="http://open-services.net/ns/core#Resource"/>
    <dcterms:title rdf:parseType="Literal">Priority</dcterms:title>
    <oslc:allowedValues rdf:resource="https://9.37.26.38:9443/ccm/oslc/context/_fzVScHhOEeOaco7oIGRnEg/shapes/workitems/defect/property/internalPriority/allowedValues"/>
    <oslc:propertyDefinition rdf:resource="http://open-services.net/ns/cm-x#priority"/>
    <oslc:representation rdf:resource="http://open-services.net/ns/core#Either"/>
    <oslc:name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">priority</oslc:name>
    <rdf:type rdf:resource="http://open-services.net/ns/core#Property"/>
    <oslc:defaultValue rdf:resource="https://9.37.26.38:9443/ccm/oslc/enumerations/_fzVScHhOEeOaco7oIGRnEg/priority/priority.literal.l01"/>
    <oslc:readOnly rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:readOnly>
  </rdf:Description>

So I used:
ccm/oslc/context/_fzVScHhOEeOaco7oIGRnEg/shapes/workitems/defect/property/internalPriority/allowedValues

and received:
<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:about="https://9.37.26.38:9443/ccm/oslc/context/_fzVScHhOEeOaco7oIGRnEg/shapes/workitems/defect/property/internalPriority/allowedValues">
    <rdf:type rdf:resource="http://open-services.net/ns/core#AllowedValues"/>
    <oslc:allowedValue rdf:resource="https://9.37.26.38:9443/ccm/oslc/enumerations/_fzVScHhOEeOaco7oIGRnEg/priority/priority.literal.l11"/>
    <oslc:allowedValue rdf:resource="https://9.37.26.38:9443/ccm/oslc/enumerations/_fzVScHhOEeOaco7oIGRnEg/priority/priority.literal.l07"/>
    <oslc:allowedValue rdf:resource="https://9.37.26.38:9443/ccm/oslc/enumerations/_fzVScHhOEeOaco7oIGRnEg/priority/priority.literal.l02"/>
    <oslc:allowedValue rdf:resource="https://9.37.26.38:9443/ccm/oslc/enumerations/_fzVScHhOEeOaco7oIGRnEg/priority/priority.literal.l01"/>
  </rdf:Description>
</rdf:RDF>

0 votes

Comments

 Reference: https://jazz.net/library/article/1001


Permanent link
 So in your context:
https://localhost:9443/ccm/oslc/context/_xE9Ycmk-EeOkI5-xWTQ7Fw/shapes/workitems/defect/property/internalSeverity/allowedValues

should fetch all values.

Hope it helps,
Eric

0 votes


Permanent link
Hi Eric,
Thanks for your answer!

As per my question:02 If i don't set the External Value for the severity via settings -> Manage Project Area ->Workitem -> Enumerations -> choose the severity enum for edit  -> Delete the External values if set
Now i am not able to fetch the list of the allowed severity values via the URL
https://localhost:9443/ccm/oslc/context/_xE9Ycmk-EeOkI5-xWTQ7Fw/shapes/workitems/defect/property/internalPriority/allowedValues
Severity Edit

It shows me only one default value
  • <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:about="https:/localhost:9443/ccm/oslc/context/_xE9Ycmk-EeOkI5-xWTQ7Fw/shapes/workitems/defect/property/internalPriority/allowedValues">
  • <rdf:type rdf:resource="http://open-services.net/ns/core#AllowedValues"/>
  • <oslc:allowedValue rdf:resource="https://localhost:9443/ccm/oslc/enumerations/_xE9Ycmk-EeOkI5-xWTQ7Fw/priority/priority.literal.l01"/>
  • </rdf:Description>
  • </rdf:RDF>
  • Are you able to fetch the all allowed values after removing the External Value for any enum type attribute?

    And why should i provide these external values?  it's even not mandatory to add.


    Thanks & Regards,

    Rahul



    0 votes


    Permanent link
     Here is what I tested, and what I fetched:
    OOTB - no external values
        <oslc:allowedvalue rdf:resource="https://9.37.26.38:9443/ccm/oslc/enumerations/_fzVScHhOEeOaco7oIGRnEg/priority/priority.literal.l11"/>;
        <oslc:allowedvalue rdf:resource="https://9.37.26.38:9443/ccm/oslc/enumerations/_fzVScHhOEeOaco7oIGRnEg/priority/priority.literal.l07"/>;
        <oslc:allowedvalue rdf:resource="https://9.37.26.38:9443/ccm/oslc/enumerations/_fzVScHhOEeOaco7oIGRnEg/priority/priority.literal.l02"/>;
        <oslc:allowedvalue rdf:resource="https://9.37.26.38:9443/ccm/oslc/enumerations/_fzVScHhOEeOaco7oIGRnEg/priority/priority.literal.l01"/>;

    with external values
        <oslc:allowedValue rdf:resource="https://9.37.26.38:9443/ccm/oslc/enumerations/_fzVScHhOEeOaco7oIGRnEg/priority/High"/>
        <oslc:allowedValue rdf:resource="https://9.37.26.38:9443/ccm/oslc/enumerations/_fzVScHhOEeOaco7oIGRnEg/priority/Medium"/>
        <oslc:allowedValue rdf:resource="https://9.37.26.38:9443/ccm/oslc/enumerations/_fzVScHhOEeOaco7oIGRnEg/priority/Low"/>
        <oslc:allowedValue rdf:resource="https://9.37.26.38:9443/ccm/oslc/enumerations/_fzVScHhOEeOaco7oIGRnEg/priority/Unassigned"/>
    removed external values
    <oslc:allowedValue rdf:resource="https://9.37.26.38:9443/ccm/oslc/enumerations/_fzVScHhOEeOaco7oIGRnEg/priority/priority.literal.l11"/>
        <oslc:allowedValue rdf:resource="https://9.37.26.38:9443/ccm/oslc/enumerations/_fzVScHhOEeOaco7oIGRnEg/priority/priority.literal.l07"/>
        <oslc:allowedValue rdf:resource="https://9.37.26.38:9443/ccm/oslc/enumerations/_fzVScHhOEeOaco7oIGRnEg/priority/priority.literal.l02"/>
        <oslc:allowedValue rdf:resource="https://9.37.26.38:9443/ccm/oslc/enumerations/_fzVScHhOEeOaco7oIGRnEg/priority/priority.literal.l01"/>

    0 votes

    Comments

     which means:

    - we fetch external values if / when set
    - we fetch internal values if / when no external values set


    Permanent link
    Hi Eric,
    Sorry for the mismatch screen shots between the priority and severity and thanks again for the explanation.

    I have tried with a new project area.
    When i have tried to fetch the value of enum it works perfect and displaying the all allowed value.

    Now i have set the external value for the enum.
    This also gives me all the allowed values.

    Now i have removed the External Values for the enum and here the issue is:
    It gives me the only one value

    For Severity
    https://localhost:9443/ccm/oslc/enumerations/_lybzUo41EeOWAuxJalNJdg/severity/severity.literal.l1
    
    For Priority

    https://localhost:9443/ccm/oslc/enumerations/_lybzUo41EeOWAuxJalNJdg/priority/priority.literal.l01
    
    As per your answer It should display the allowed values, but in my case the issue is still reproducible .

    Thanks & Regards,
    Rahul




    0 votes

    Comments

    I have encountered this issue as well, so far with RTC 4.0.0.2 and 4.0.6 but not with 5.0.x versions.
    When no external value is set, internalSeverity and internalPriority only return a single allowed value (ie priority.literal.l01). Once external values are set, the allowed values start showing up in the resource shape, but if the external values are removed, they disappear again.

    Rahul, were you ever able to find a solution for this problem?


    Permanent link

     Hi Rahul,


    Please try using this code 

    //Look at the allowed values for Priority. This is generally a required field for defects.
    Property PriorityProperty = shape.getProperty(new URI("http://open-services.net/ns/cm-x#priority"));
    if (PriorityProperty != null) {
    System.out.println("Inside not null property");
    URI allowedValuesRef8 = PriorityProperty.getAllowedValuesRef();
    ClientResponse allowedValuesResponse8 = client.getResource(allowedValuesRef8.toString(),OslcMediaType.APPLICATION_XML);
    AllowedValues allowedValues8 = allowedValuesResponse8.getEntity(AllowedValues.class);
    Object[] values8 = allowedValues8.getValues().toArray();
    for(Object val:values8) {
    System.out.println("The values of Priority literal are "+val);
    }
    //If this fails, you might need to check that the value is not "Unassigned", which is an allowed value in some RTC project areas.
    //Try the second value instead of the first, most project area processes create more than one category
    defect1.getExtendedProperties().put(new QName("http://open-services.net/ns/cm-x#", "priority"), (URI) values8[2]);
    }

    Thanks,
    Sujith Babu

    0 votes

    Your answer

    Register or log in to post 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.

    Search context
    Follow this question

    By Email: 

    Once you sign in you will be able to subscribe for any updates here.

    By RSS:

    Answers
    Answers and Comments
    Question details
    × 11,079
    × 487
    × 63

    Question asked: Feb 04 '14, 9:06 a.m.

    Question was seen: 10,160 times

    Last updated: Sep 05 '17, 9:13 a.m.

    Confirmation Cancel Confirm