我正在使用Rally REST API for Java 我想获得实际迭代和发布的列表 这是片段
JsonObject projects = new JsonObject();
QueryRequest queryProjects = new QueryRequest("release");
queryProjects.setPageSize(1);
queryProjects.setLimit(1000);
queryProjects.setFetch(new Fetch("_refObjectName","Name"));
QueryResponse queryResponse;
try {
queryResponse = restApi.query(queryProjects);
} catch (IOException e) {
// TODO Auto-generated catch block
throw new ServiceException(e);
}
结果我得到的列表中有很多重复项。经过仔细检查后,似乎我得到了所有版本的对象 - 对于相同的迭代/发布我有多个版本 - 我可以看到不同的“_objectVersion”属性用于此类重复项。
为什么会这样?
请您帮我查询一下将查找不同的迭代/发布列表的查询 - 我对最新版本感兴趣。
我可以用Java过滤掉它,但感觉有更多'正确'的方法。获取具有整个对象历史记录的列表也不是最佳的代码性能。
感谢您的帮助!
答案 0 :(得分:0)
在顶层项目的Rally中创建版本和迭代时,可以选择在整个项目层次结构中传播它们。例如,如果您有具有子项目P2和孙子项目P21和P22的顶级项目P1,则可以创建具有相同名称和相同开始日期和发布日期的4个版本。它们不是完全相同的版本:它们具有ObjectID和_ref特有的。请验证这是否适用于您的方案。
将发布查询限制为特定项目集请求项目。下面是一个示例,它只返回我在顶级项目中的三个版本:R1,R2和R3。注意
String projectRef = "/project/12352608219";
稍后在代码中使用:
releaseRequest.setProject(projectRef);
另请注意注释
//String workspaceRef = "/workspace/12352608129";
和
// releaseRequest.setWorkspace(workspaceRef);
如果我切换注释:注释掉项目引用并取消注释工作区引用,我将得到你称之为duplicates:多个R1,R2和R3版本。
public class FindReleases {
public static void main(String[] args) throws URISyntaxException, IOException {
String host = "https://rally1.rallydev.com";
String username = "user@co.com";
String password = "secret";
String projectRef = "/project/12352608219";
//String workspaceRef = "/workspace/12352608129";
String applicationName = "RESTExampleFindReleasesByProject";
RallyRestApi restApi = null;
try {
restApi = new RallyRestApi(
new URI(host),
username,
password);
restApi.setApplicationName(applicationName);
System.out.println(restApi.getWsapiVersion()); //v.2.0 by default when using 2.0.2 jar and up
QueryRequest releaseRequest = new QueryRequest("Release");
releaseRequest.setFetch(new Fetch("Name"));
releaseRequest.setLimit(1000);
releaseRequest.setScopedDown(false);
releaseRequest.setScopedUp(false);
// releaseRequest.setWorkspace(workspaceRef);
releaseRequest.setProject(projectRef);
QueryResponse releaseQueryResponse = restApi.query(releaseRequest);
int numberOfReleasesInProject = releaseQueryResponse.getTotalResultCount();
System.out.println(numberOfReleasesInProject);
if(numberOfReleasesInProject >0){
for (int i=0;i<numberOfReleasesInProject;i++){
JsonObject releaseJsonObject = releaseQueryResponse.getResults().get(i).getAsJsonObject();
System.out.println(releaseJsonObject.get("Name"));
}
}
}
finally{
if (restApi != null) {
restApi.close();
}
}
}
}