Fetch fortheDefectsに「Owner」と「SubmittedBy」のフィールドを必ず含めてください。
defectRequest.setFetch(new Fetch("Project", "LastUpdateDate", "FormattedId", "Owner", "SubmittedBy"));
次に、返された各欠陥のOwnerフィールドとSubmitedByフィールド(Rallyに入力され、nullでない場合)には、Rallyの対応するUserオブジェクトへの参照があります。次に、これに対して2番目の要求を実行する傾向があります。その参照を使用して、参照に対して直接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();
}
}
}