It's all about the answers!

Ask a question

i havse problem about query workitem having condition state


0
1
yongkwan kim (2111) | asked Oct 13 '11, 1:25 a.m.
i havse problem about query defect workitem having condition state.
status name is "resloved".
blew code is plain java api.
result count is "0".
i don't know help me, please...



findWorkItemsState(repo,"JUnit Project",monitor);

@SuppressWarnings("unchecked")
public static void findWorkItemsState(ITeamRepository repo, String projectAreaName, IProgressMonitor monitor) throws TeamRepositoryException {


System.out.println("condition Attribute List");
IAuditableClient auditableClient= (IAuditableClient)repo.getClientLibrary(IAuditableClient.class);

IProcessClientService processClient= (IProcessClientService) repo.getClientLibrary(IProcessClientService.class);
URI uri= URI.create(projectAreaName.replaceAll(" ", "%20"));

IProjectArea projectArea= (IProjectArea) processClient.findProcessArea(uri, null, null);
IProjectAreaHandle prjAreaHandle = (IProjectAreaHandle)projectArea.getItemHandle();

if (projectArea == null) {
System.out.println("Project area not found.");
}

IItemManager itm = repo.itemManager();
IWorkItemClient service = (IWorkItemClient) repo.getClientLibrary(IWorkItemClient.class);

ICombinedWorkflowInfos wfInfo = service.findCombinedWorkflowInfos(projectArea, monitor);

Identifier<IState>[] stateIds = wfInfo.getAllStateIds();
Identifier<IState> selectedState = null;

for(Identifier<IState> s :stateIds){
if(wfInfo.getStateName(s).equalsIgnoreCase("Resolved") && s.getStringIdentifier().equals("3")) {

System.out.println("getStateName:" + wfInfo.getStateName(s));
System.out.println("getStringIdentifier:" + s.getStringIdentifier());

selectedState = s;
break;
}
}

// State = Resolved
// Identifier<IState> stateIdentifier = null;
// stateIdentifier = Identifier.create(IState.class, "Resolved");
// System.out.println(stateIdentifier.toString());

IQueryResult<IResolvedResult<IWorkItem>> result = null;
IQueryableAttributeFactory factory= QueryableAttributes.getFactory(IWorkItem.ITEM_TYPE);

IQueryableAttribute projectAreaAttribute= factory.findAttribute(prjAreaHandle, IWorkItem.PROJECT_AREA_PROPERTY, auditableClient, monitor);
IQueryableAttribute stateAttribute = factory.findAttribute(prjAreaHandle,IWorkItem.STATE_PROPERTY, auditableClient, monitor);

if (projectAreaAttribute== null || stateAttribute==null){
System.out.println("");
//return Collections.emptyList();
}

AttributeExpression projectAreaExpression= new AttributeExpression(projectAreaAttribute, AttributeOperation.EQUALS, projectArea);
AttributeExpression stateExpression = new AttributeExpression(stateAttribute, AttributeOperation.EQUALS, selectedState);

Term term = new Term(Operator.AND);
term.add(projectAreaExpression);
term.add(stateExpression);

IQueryCommon queryService= (IQueryCommon) repo.getClientLibrary(IQueryCommon.class);
result = queryService.getResolvedExpressionResults(prjAreaHandle, (Expression)term, IWorkItem.FULL_PROFILE);

System.out.println("This is total number: "+ result.getResultSize(monitor).getTotal()+"\n");

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++)
{
showWorkItems(itm, matchingWorkItems.get(y), projectArea,service, monitor);
System.out.println("---------------------------------------------------");
}

}

4 answers



permanent link
yongkwan kim (2111) | answered Nov 07 '11, 12:34 a.m.
Hi,
so do I have to use the String identifier for the state and not an Identifier<IState> object?
If correct it is a different behaviour from other property used in expressions. The javadoc in IWorkItem.STATE_PROPERTY says to use the getState2 returned object which is the Identifier, not its string conversion.

Thanks,
Michele.

The following is sample for default Story workflow...

IQueryableAttribute stateAttribute = attFactory.findAttribute(prjAreaHandle, IWorkItem.STATE_PROPERTY, auditableClient, null);
AttributeExpression inProgressStateExpression = new AttributeExpression(stateAttribute, AttributeOperation.EQUALS, "com.ibm.team.apt.story.defined");



Thank you for your opinion.

I referde to below code. to get StringIdentifier of state object.

/////////////// Get name, getStringIdentifier of state object.
ICombinedWorkflowInfos wfInfo = service.findCombinedWorkflowInfos(projectArea, monitor);
//IWorkflowInfo wfInfo = service.findWorkflowInfo(workItem, monitor);

Identifier<IState>[] stateIds = wfInfo.getAllStateIds();

Identifier<IState> selectedState = null;

for(Identifier<IState> s :stateIds){

System.out.println("getStateName:" + wfInfo.getStateName(s));
System.out.println("getStringIdentifier:" + s.getStringIdentifier());
System.out.println("getToString:" + s.toString());
System.out.println("--------------------------------------");

}

getStateName:Abandoned
getStringIdentifier:com.ibm.team.workitem.buildTrackingWorkflow.state.s7
getToString:com.ibm.team.workitem.common.model.IState:com.ibm.team.workitem.buildTrackingWorkflow.state.s7
--------------------------------------
getStateName:Done
getStringIdentifier:com.ibm.team.workitem.buildTrackingWorkflow.state.s3
getToString:com.ibm.team.workitem.common.model.IState:com.ibm.team.workitem.buildTrackingWorkflow.state.s3
--------------------------------------
getStateName:In Progress
getStringIdentifier:com.ibm.team.workitem.buildTrackingWorkflow.state.s2
getToString:com.ibm.team.workitem.common.model.IState:com.ibm.team.workitem.buildTrackingWorkflow.state.s2
--------------------------------------
getStateName:In Progress
getStringIdentifier:2
getToString:com.ibm.team.workitem.common.model.IState:2
--------------------------------------
getStateName:New
getStringIdentifier:1
getToString:com.ibm.team.workitem.common.model.IState:1
--------------------------------------
getStateName:Reopened
getStringIdentifier:6
getToString:com.ibm.team.workitem.common.model.IState:6
--------------------------------------
getStateName:Resolved
getStringIdentifier:3
getToString:com.ibm.team.workitem.common.model.IState:3
--------------------------------------
getStateName:Verified
getStringIdentifier:4
getToString:com.ibm.team.workitem.common.model.IState:4
--------------------------------------
getStateName:Approved
getStringIdentifier:com.ibm.team.rtc.workflow.adoption.state.s2
getToString:com.ibm.team.workitem.common.model.IState:com.ibm.team.rtc.workflow.adoption.state.s2
--------------------------------------
getStateName:Completed
getStringIdentifier:com.ibm.team.rtc.workflow.adoption.state.s4
getToString:com.ibm.team.workitem.common.model.IState:com.ibm.team.rtc.workflow.adoption.state.s4
--------------------------------------
getStateName:Proposed
getStringIdentifier:com.ibm.team.rtc.workflow.adoption.state.s1
getToString:com.ibm.team.workitem.common.model.IState:com.ibm.team.rtc.workflow.adoption.state.s1
--------------------------------------
getStateName:Rejected
getStringIdentifier:com.ibm.team.rtc.workflow.adoption.state.s3
getToString:com.ibm.team.workitem.common.model.IState:com.ibm.team.rtc.workflow.adoption.state.s3
--------------------------------------
getStateName:Done
getStringIdentifier:com.ibm.team.workitem.retrospectiveWorkflow.state.finished
getToString:com.ibm.team.workitem.common.model.IState:com.ibm.team.workitem.retrospectiveWorkflow.state.finished
--------------------------------------
getStateName:In Progress
getStringIdentifier:com.ibm.team.workitem.retrospectiveWorkflow.state.inprogress
getToString:com.ibm.team.workitem.common.model.IState:com.ibm.team.workitem.retrospectiveWorkflow.state.inprogress
--------------------------------------
getStateName:Invalid
getStringIdentifier:com.ibm.team.workitem.retrospectiveWorkflow.state.s1
getToString:com.ibm.team.workitem.common.model.IState:com.ibm.team.workitem.retrospectiveWorkflow.state.s1
--------------------------------------
getStateName:New
getStringIdentifier:com.ibm.team.workitem.retrospectiveWorkflow.state.new
getToString:com.ibm.team.workitem.common.model.IState:com.ibm.team.workitem.retrospectiveWorkflow.state.new
--------------------------------------
getStateName:Invalid
getStringIdentifier:com.ibm.team.workitem.taskWorkflow.state.s4
getToString:com.ibm.team.workitem.common.model.IState:com.ibm.team.workitem.taskWorkflow.state.s4
--------------------------------------
getStateName:Deferred
getStringIdentifier:com.ibm.team.apt.epic.workflow.state.s5
getToString:com.ibm.team.workitem.common.model.IState:com.ibm.team.apt.epic.workflow.state.s5
--------------------------------------
getStateName:Done
getStringIdentifier:com.ibm.team.apt.epic.workflow.state.s3
getToString:com.ibm.team.workitem.common.model.IState:com.ibm.team.apt.epic.workflow.state.s3
--------------------------------------
getStateName:In Progress
getStringIdentifier:com.ibm.team.apt.epic.workflow.state.s2
getToString:com.ibm.team.workitem.common.model.IState:com.ibm.team.apt.epic.workflow.state.s2
--------------------------------------
getStateName:Invalid
getStringIdentifier:com.ibm.team.apt.epic.workflow.state.s6
getToString:com.ibm.team.workitem.common.model.IState:com.ibm.team.apt.epic.workflow.state.s6
--------------------------------------
getStateName:New
getStringIdentifier:com.ibm.team.apt.epic.workflow.state.s1
getToString:com.ibm.team.workitem.common.model.IState:com.ibm.team.apt.epic.workflow.state.s1
--------------------------------------
getStateName:Invalid
getStringIdentifier:com.ibm.team.workitem.impedimentWorkflow.state.s3
getToString:com.ibm.team.workitem.common.model.IState:com.ibm.team.workitem.impedimentWorkflow.state.s3
--------------------------------------
getStateName:New
getStringIdentifier:com.ibm.team.workitem.impedimentWorkflow.state.s1
getToString:com.ibm.team.workitem.common.model.IState:com.ibm.team.workitem.impedimentWorkflow.state.s1
--------------------------------------
getStateName:Resolved
getStringIdentifier:com.ibm.team.workitem.impedimentWorkflow.state.s2
getToString:com.ibm.team.workitem.common.model.IState:com.ibm.team.workitem.impedimentWorkflow.state.s2
--------------------------------------
getStateName:Deferred
getStringIdentifier:com.ibm.team.apt.storyWorkflow.state.s1
getToString:com.ibm.team.workitem.common.model.IState:com.ibm.team.apt.storyWorkflow.state.s1
--------------------------------------
getStateName:Done
getStringIdentifier:com.ibm.team.apt.story.verified
getToString:com.ibm.team.workitem.common.model.IState:com.ibm.team.apt.story.verified
--------------------------------------
getStateName:Implemented
getStringIdentifier:com.ibm.team.apt.story.tested
getToString:com.ibm.team.workitem.common.model.IState:com.ibm.team.apt.story.tested
--------------------------------------
getStateName:In Progress
getStringIdentifier:com.ibm.team.apt.story.defined
getToString:com.ibm.team.workitem.common.model.IState:com.ibm.team.apt.story.defined
--------------------------------------
getStateName:New
getStringIdentifier:com.ibm.team.apt.story.idea
getToString:com.ibm.team.workitem.common.model.IState:com.ibm.team.apt.story.idea
--------------------------------------
getStateName:Invalid
getStringIdentifier:com.ibm.team.apt.storyWorkflow.state.s2
getToString:com.ibm.team.workitem.common.model.IState:com.ibm.team.apt.storyWorkflow.state.s2
--------------------------------------

permanent link
yongkwan kim (2111) | answered Nov 07 '11, 12:27 a.m.
The following is sample for default Story workflow...

IQueryableAttribute stateAttribute = attFactory.findAttribute(prjAreaHandle, IWorkItem.STATE_PROPERTY, auditableClient, null);
AttributeExpression inProgressStateExpression = new AttributeExpression(stateAttribute, AttributeOperation.EQUALS, "com.ibm.team.apt.story.defined");


thank you ^^*
this problem is resolved for your help.
i apply for defect workflow.

AttributeExpression workItemTypeExpression = new AttributeExpression(workItemAttribute, AttributeOperation.EQUALS, new String("defect"));
AttributeExpression projectAreaExpression= new AttributeExpression(projectAreaAttribute, AttributeOperation.EQUALS, projectArea);
AttributeExpression stateExpression = new AttributeExpression(stateAttribute, AttributeOperation.EQUALS, "3");

permanent link
Michele Pegoraro (1.8k14119103) | answered Nov 02 '11, 4:46 a.m.
Hi,
so do I have to use the String identifier for the state and not an Identifier<IState> object?
If correct it is a different behaviour from other property used in expressions. The javadoc in IWorkItem.STATE_PROPERTY says to use the getState2 returned object which is the Identifier, not its string conversion.

Thanks,
Michele.

The following is sample for default Story workflow...

IQueryableAttribute stateAttribute = attFactory.findAttribute(prjAreaHandle, IWorkItem.STATE_PROPERTY, auditableClient, null);
AttributeExpression inProgressStateExpression = new AttributeExpression(stateAttribute, AttributeOperation.EQUALS, "com.ibm.team.apt.story.defined");

permanent link
Dong Young Kim (1931920) | answered Nov 02 '11, 2:40 a.m.
JAZZ DEVELOPER
The following is sample for default Story workflow...

IQueryableAttribute stateAttribute = attFactory.findAttribute(prjAreaHandle, IWorkItem.STATE_PROPERTY, auditableClient, null);
AttributeExpression inProgressStateExpression = new AttributeExpression(stateAttribute, AttributeOperation.EQUALS, "com.ibm.team.apt.story.defined");

Your answer


Register or 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.