在先前的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()));
        }
    }
}

07-26 08:56