【问题标题】:Rally Rest Api: Get User's Email Address from DefectRally Rest Api:从缺陷中获取用户的电子邮件地址
【发布时间】:2012-09-04 22:07:44
【问题描述】:

使用 Rally 的 rest api,我如何查询以找到用户的电子邮件地址?

例如,我有这个查询来获取一个缺陷,其中包含打开它的用户的全名和拥有该缺陷的用户:

 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);

现在我想从缺陷中获取 Submitted By 和 Owner 用户并获取他们的电子邮件地址。

【问题讨论】:

  • 我认为您必须将这两个字段添加到您的提取中,然后这些属性应该可以通过您的 QueryResponse 获得。
  • 抓取正在努力获取所有者的姓名并由用户提交,但他们的姓名不包含他们的电子邮件地址;所以我假设需要一个新的查询,就在他们的名字上。我试过这个没有成功:QueryRequest userRequest = new QueryRequest("user"); userRequest.setFetch(new Fetch("Email")); userRequest.setQueryFilter(new QueryFilter("User.Name", "=", "Joe User")); QueryResponse user = rallyApi.query(userRequest);

标签: java rally


【解决方案1】:

确保在 Fetch 中包含“Owner”和“SubmittedBy”字段以查找缺陷:

   defectRequest.setFetch(new Fetch("Project", "LastUpdateDate", "FormattedId", "Owner", "SubmittedBy"));

然后每个返回的缺陷上的 Owner 和 SubmittedBy 字段(如果填充在 Rally 中且不为空)将具有对 Rally 中相应用户对象的引用。然后,您对此进行第二次请求的倾向就很明显了。最简单的方法是使用该 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();
                }
            }
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-29
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多