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

Can we find Work item using values of custom field?

Hi everyone,

We are using Java eclipse client and are trying to find a wrokitem using values of a particular custom filed(Which will always be unique for all WI's). Is it possible to do so?We are able to find a workitem using the RTC WI ID by using following:

findWorkItemById(ID, IWorkItem.SMALL_PROFILE, null);

It would be great help if some one can share any info,input or pointer.

-Regards,
Achal

1 vote



One answer

Permanent link
Hello everyone,

I created a code to fetch WI's ID using value of custom fields. This code works fine but for one issue. At first look it looks like a refresh issue but not sure what is happening. The scenarioo is:

Suppose for value 3900 of custom1 the code return 2 Wi's with ID 101 & 102. I change custom1 of 101 to "0" and run this code and as expected WI # 101 will disappear.

But if i again make cusotm1 of 101 to "3900" and execute the code it dont comes in result. Any ideas on to this?

-Regards,
Achal

P.S: I first tested this code with field priority. So some portion might look irrelevant.

/


public static void main(String[] args) {
TeamPlatform.startup();
try {
IProgressMonitor monitor = new SysoutProgressMonitor();
ITeamRepository repo = Snippet1.login(monitor);
System.out.println("Get auditable client");
auditableClient= (IAuditableClient)repo.getClientLibrary(IAuditableClient.class);
System.out.println("Going for list");
findWorkItems(repo,"AMT IDC Project Area",monitor);
} catch (TeamRepositoryException e) {
System.out.println("Unable to login: " + e.getMessage());
} finally {
TeamPlatform.shutdown();
}
}



public static List<IWorkItem> findWorkItems(ITeamRepository repo,String projectAreaName, IProgressMonitor monitor) throws TeamRepositoryException {

//--------------------------------------------------------------------------------------
System.out.println("Inside List");
IProcessClientService processClient= (IProcessClientService) repo.getClientLibrary(IProcessClientService.class);
URI uri= URI.create(projectAreaName.replaceAll(" ", "%20"));
IProjectArea projectArea= (IProjectArea) processClient.findProcessArea(uri, null, null);
if (projectArea == null) {
System.out.println("Project area not found.");
}
ITeamAreaHandle teamAreaHandle=(ITeamAreaHandle)projectArea.getTeamAreas().get(0);
ITeamArea teamArea = (ITeamArea) repo.itemManager().fetchCompleteItem(teamAreaHandle, IItemManager.DEFAULT, monitor);
IProjectAreaHandle projectAreaHandler = teamArea.getProjectArea();
//------------------------------------------------------------------------------------


//IWorkItem.PRIORITY_PROPERTY




IQueryableAttribute attribute= findAttribute(projectAreaHandler, "com.acn.adt.risk.attribute.custom1", monitor);
if (attribute == null){
System.out.println("Attribute is null");
return Collections.emptyList();
}

Identifier<IPriority> priorityIdentifier = null;
priorityIdentifier= Identifier.create(IPriority.class,"High");

//AttributeExpression dueExpression= new AttributeExpression(attribute, AttributeOperation.EQUALS,priorityIdentifier);
AttributeExpression dueExpression= new AttributeExpression(attribute, AttributeOperation.EQUALS,"3900");

IQueryableAttribute projectAreaAttribute= findAttribute(projectAreaHandler, IWorkItem.PROJECT_AREA_PROPERTY, monitor);
AttributeExpression projectAreaExpression= new AttributeExpression(projectAreaAttribute, AttributeOperation.EQUALS, projectAreaHandler);



Term term= new Term(Operator.OR);
term.add(projectAreaExpression);
term.add(dueExpression);

//------------------------------------------------------------------------


//IQueryCommon queryService= getService(IQueryCommon.class); //getQueryCommon();
IQueryCommon queryService= getQueryCommon(repo);
ItemProfile<IWorkItem> profile= getProfile(attribute).createExtension(IWorkItem.CREATOR_PROPERTY);
//Changed term over here
IQueryResult<IResolvedResult<IWorkItem>> result= queryService.getResolvedExpressionResults(projectAreaHandler,dueExpression, profile);
List<IWorkItem> matchingWorkItems= new ArrayList<IWorkItem>(result.getResultSize(monitor).getTotalAvailable());

while (result.hasNext(monitor)) {

matchingWorkItems.add(result.next(monitor).getItem());
}


for(int y=0; y < matchingWorkItems.size();y++)
{

System.out.println("This is Work Item ID " + matchingWorkItems.get(y).getId());
System.out.println("This is HTML Summary " + matchingWorkItems.get(y).getHTMLSummary());
}

return matchingWorkItems;
}


private static IQueryableAttribute findAttribute(IProjectAreaHandle projectArea, String attributeId, IProgressMonitor monitor) throws TeamRepositoryException {

IQueryableAttributeFactory factory= QueryableAttributes.getFactory(IWorkItem.ITEM_TYPE);
return factory.findAttribute(projectArea, attributeId, auditableClient, monitor);
}

private static ItemProfile<IWorkItem> getProfile(IQueryableAttribute attribute) {
if (!attribute.isStateExtension())
return IWorkItem.SMALL_PROFILE.createExtension(attribute.getIdentifier());
return IWorkItem.SMALL_PROFILE.createExtension(IWorkItem.CUSTOM_ATTRIBUTES_PROPERTY, IExtensibleItem.TIMESTAMP_EXTENSIONS_QUERY_PROPERTY);
}

private static IQueryCommon getQueryCommon(ITeamRepository repo) {
return (IQueryCommon) repo.getClientLibrary(IQueryCommon.class);
}
}


}



Hi everyone,

We are using Java eclipse client and are trying to find a wrokitem using values of a particular custom filed(Which will always be unique for all WI's). Is it possible to do so?We are able to find a workitem using the RTC WI ID by using following:

findWorkItemById(ID, IWorkItem.SMALL_PROFILE, null);

It would be great help if some one can share any info,input or pointer.

-Regards,
Achal

									

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
× 10,950

Question asked: Sep 06 '11, 1:58 a.m.

Question was seen: 5,518 times

Last updated: Sep 06 '11, 1:58 a.m.

Confirmation Cancel Confirm