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

How to fetch the Workitem (built-in / Custom) Attribute Id and Value?

Iam using

List<IAttributeHandle> List = sourceworkItem.getCustomAttributes;

it return StateId , UUID .

But i need "Attribute Id"

0 votes



3 answers

Permanent link
The following snippet should get you started:

com.ibm.team.workitem.common.model.IAttributeHandle handle = workItem.getCustomAttributes().get(0);
com.ibm.team.workitem.common.model.IAttribute attribute = (IAttribute) teamRepository.itemManager().fetchCompleteItem(handle, IItemManager.DEFAULT, new NullProgressMonitor());
System.out.println("The attribute id: " + attribute.getIdentifier());
System.out.println("The value of the custom attribute: " + workItem.getValue(attribute));

0 votes

Comments

Lauren , Thanks for your reply, But i could not resolve below a) "teamRepository" b) IItemManager c) NullProgressMonitor

PLease guide ?

Hi Anil,

a) How you get the team repository depends on the context--if you're using the existing UI or if you're using a plain Java client.  The following wiki page contains examples on finding the team repository:  https://jazz.net/wiki/bin/view/Main/ProgrammaticWorkItemCreation.
b) The ItemManager can be imported from com.ibm.team.repository.client.IItemManager.
c) The NullProgressMonitor can be imported from org.eclipse.core.runtime.NullProgressMonitor.


ITeamRepository is a ClientSide interface . Since iam writing code in server side , i have difficulty.

Please send me some sample code to access the Attribute id and Value from Server side

I haven't tried this myself, but I believe the following code snippet taken from https://jazz.net/forum/questions/87541/getting-custom-attributes-names-via-java-api?page=1&focusedAnswerId=87543#87543 should work for you:

IAttributeHandle handle = workItem.getCustomAttributes().get(0); IRepositoryItemService itemService = getService(IRepositoryItemService.class); IAttribute attribute = (IAttribute) itemService.fetchItem(handle, IRepositoryItemService.COMPLETE);


Permanent link
here is my code from an advisor that loops thru the previous variable states (oldstate)

                // reference the right object type (cast)
                IWorkItem workItem = (IWorkItem) auditable;
                // get the worker objects
                IAuditableCommon iac = p.getSaveOperationParameter().getAuditableCommon();
                WorkflowManager wfm = new WorkflowManager(iac);   
               
                if(false)
                {
                    IWorkItemCommon workItemCommon = iac.getPeer(IWorkItemCommon.class);
                    // loop thru all the attributes in the project
                    // attributes are project wide, not workitem specific
                    for(IAttribute ia:workItemCommon.findAttributes(p.getOldProcessArea().getProjectArea(), monitor) )
                    {
                        // if this attribute is available on this workitem
                        if(workItem.hasAttribute(ia))
                        {
                            System.out.println("processing for variable="+ia.getDisplayName()+" attrib type="+ia.getAttributeType());
                            try
                            {
                                // attempt to get the enumeration literal for this attribute
                                // will throw exception if not an enum
                                IEnumeration<ILiteral> enumeration = (IEnumeration<ILiteral>)workItemCommon.resolveEnumeration(ia, monitor);
                                if(enumeration!=null)
                                {
                                    // get the literal specifically
                                    String[] iaval = ia.getValue(iac, workItem, monitor).toString().split(":");
                                   
                                    // if present
                                    if(iaval.length>1 && iaval[1]!=null)
                                    {
                                        // loop thru the literal to value mappings                               
                                        for (ILiteral literal : enumeration.getEnumerationLiterals()) 
                                        {
                                            // if this literal matches the attribute value
                                            if(literal.getIdentifier2().getStringIdentifier().equalsIgnoreCase(iaval[1]))
                                            {
                                                // display the usable name
                                                System.out.println("attribute name="+ia.getIdentifier() +", type"+"="+ia.getAttributeType()+" literal="+literal.getIdentifier2().getStringIdentifier()+" literal name="+literal.getName());                                       
                                                break;
                                            }
                                        }
                                    }
                                }
                            }
                            catch (Exception e)
                            {
                                //System.out.println("Exception="+e.toString());
                            }                       
                        }
                    }
                }

0 votes

Comments

Sam

It is Client Side or Server side Code ?

More over getPeer method is deprecated .


Permanent link
Lauren, I replicated the same code above , IT DOESN'T WORKED. Any Sugg ?

com.ibm.team.workitem.common.model.IAttributeHandle handle = sourceworkItem.getCustomAttributes().get(0);

IRepositoryItemService itemService = getService(IRepositoryItemService.

class);

IAttribute attribute = (IAttribute) itemService.fetchItem(handle, IRepositoryItemService.

COMPLETE);

System.out.println (" Get Cust Attribute Display Name :" + attribute.getDisplayName());

System.out.println (" Get Cust Attribute Type :" + attribute.getAttributeType());

0 votes

Comments

Hi Anil,
Can you elaborate on how this doesn't work?

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
× 6,132

Question asked: Sep 07 '12, 7:03 p.m.

Question was seen: 6,855 times

Last updated: Oct 18 '12, 6:44 a.m.

Confirmation Cancel Confirm