在先前的Rally Java REST WebService API SDK版本1.37中,我可以查询一个Defect,并且其子Task(一个Defect的一对多字段,表示Defect可以有许多Task)的ObjectIDs也将包含在其中。结果。
但是,似乎在API 2.0版中,返回的结果不包括任何子对多对象的ObjectID,而是仅提及有多少个(键=任务,值= {“ _rallyAPIMajor”:“ 2“,” _ rallyAPIMinor“:” 0“,” _ ref“:” https://rally1.rallydev.com/slm/webservice/v2.0/Defect/1234567890/Tasks“,” _ type“:” Task“,” Count“:5})。
是否有一种简单的方法来查找所有一对多子代的ObjectID,即与该Defect相关联的Tasks的所有ObjectID,作为我的Defect查询的一部分?我宁愿不必使用每个返回的_ref,并使用它来进行查找(将会有很多请求,每个孩子一个)。
谢谢。
最佳答案
现在,您可以以查询根级别类型相同的方式查询子集合。
我修改了以下代码示例,以完成您要查找的内容:
https://github.com/RallyTools/RallyRestToolkitForJava/blob/master/src/main/resources/examples/com/rallydev/rest/CollectionQueryExample.java
//Assumes you have a defect retrieved already
JsonObject taskInfo = defect.getAsJsonObject("Tasks");
int taskCount = taskInfo.get("Count").getAsInt();
System.out.println(String.format("\nTotal tasks: %d", taskInfo));
if(taskCount > 0) {
QueryRequest taskRequest = new QueryRequest(taskInfo);
taskRequest.setFetch(new Fetch("FormattedID", "Name", "State"));
QueryResponse queryResponse = restApi.query(taskRequest);
if (queryResponse.wasSuccessful()) {
for (JsonElement result : queryResponse.getResults()) {
JsonObject task = result.getAsJsonObject();
System.out.println(String.format("\t%s - %s: State=%s",
task.get("FormattedID").getAsString(),
task.get("Name").getAsString(),
task.get("State").getAsString()));
}
}
}