1

RallyのRESTAPIを使用して、ユーザーの電子メールアドレスを見つけるためにクエリを実行するにはどうすればよいですか?

たとえば、このクエリを使用して、それを開いたユーザーと欠陥を所有しているユーザーのフルネームを含む欠陥を取得します。

 QueryRequest defectRequest = new QueryRequest("defect");
 defectRequest.setFetch(new Fetch("Project", "LastUpdateDate", "FormattedId"));
 defectRequest.setQueryFilter(new QueryFilter("Project.Name", "=", rallyProjectName).and(new QueryFilter("LastUpdateDate", ">", defectTimestamp.getTimestamp())));
 QueryResponse projectDefects = rallyApi.query(defectRequest);

次に、Submited ByおよびOwnerユーザーを欠陥から取得し、それらの電子メールアドレスを取得したいと思います。

4

1 に答える 1

0

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();
                }
            }
        }
于 2012-09-05T01:10:26.380 に答える