确保在 Fetch 中包含“Owner”和“SubmittedBy”字段以查找缺陷:
defectRequest.setFetch(new Fetch("Project", "LastUpdateDate", "FormattedId", "Owner", "SubmittedBy"));
然后每个返回的缺陷上的 Owner 和 SubmittedBy 字段(如果填充在 Rally 中且不为空)将引用 Rally 中相应的 User 对象。然后,您对此进行第二次请求的倾向就很明显了。最简单的方法是使用该 ref 并直接针对 ref 执行 GetRequest。下面以 Owner 字段为例(请原谅笨拙的 try/catch 块 - 它正在捕获空的 Owner 字段):
QueryResponse projectDefects = restApi.query(defectRequest);
if (projectDefects.wasSuccessful()) {
for (JsonElement result : projectDefects.getResults()) {
JsonObject defect = result.getAsJsonObject();
try {
JsonObject ownerJsonObject = defect.get("Owner").getAsJsonObject();
String ownerRef = ownerJsonObject.get("_ref").getAsString();
GetRequest ownerRequest = new GetRequest(ownerRef);
GetResponse ownerResponse = restApi.get(ownerRequest);
JsonObject ownerObj = ownerResponse.getObject();
System.out.println(String.format("Read owner. EmailAddress = %s",
ownerObj.get("EmailAddress").getAsString()));
} catch (java.lang.IllegalStateException ise) {
// System.out.println("IllegalStateException caught: ");
// ise.printStackTrace();
}
}
}