Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rally:JavaRESTAPI:返回结果的限制?_Java_Api_Rest_Rally - Fatal编程技术网

Rally:JavaRESTAPI:返回结果的限制?

Rally:JavaRESTAPI:返回结果的限制?,java,api,rest,rally,Java,Api,Rest,Rally,返回结果的数量/大小是否有限制?例如,我查询了所有缺陷,得到了185个,当实数大于600时。是否有一种方法可以检测查询是否无法获得所有结果 编辑:看起来我达到了页面大小限制200。有人知道如何创建循环以获得下一组结果吗 这是我的密码: String rallyProjectOid = getRallyProjectOid(rallyApi, rallyProjectName); // Get the list of Rally defects for the project

返回结果的数量/大小是否有限制?例如,我查询了所有缺陷,得到了185个,当实数大于600时。是否有一种方法可以检测查询是否无法获得所有结果

编辑:看起来我达到了页面大小限制200。有人知道如何创建循环以获得下一组结果吗

这是我的密码:

    String rallyProjectOid = getRallyProjectOid(rallyApi, rallyProjectName);
    // Get the list of Rally defects for the project
    QueryRequest defectRequest = new QueryRequest("defect");
    defectRequest.setFetch(new Fetch("Project", "LastUpdateDate", "FormattedId", "SubmittedBy", "Owner"));
    defectRequest.setProject(rallyProjectOid);
    defectRequest.setQueryFilter(new QueryFilter("LastUpdateDate", ">", timestamp));
    QueryResponse projectDefects = rallyApi.query(defectRequest);
QueryRequest上有一个setLimit()方法,允许您设置从请求返回的最大记录数。如果未为请求对象指定此值,则行为将仅返回一页数据(200条记录)

因此,如果你这样做:

   int queryLimit = 4000;
   defectRequest.setLimit(queryLimit);
RestApi应该返回更多的结果,并自动为您分页。

尽管设置:

queryRequest.setLimit(整数最大值)

它可以处理许多类型,但并不适用于所有类型

例如,类型Defect和Iteration似乎在一个页面中返回数千个结果(对Rally的一个查询调用),而其他类型(如User和HierarchicalRequirement)忽略了该限制,而是强制我使用分页(设置开始,然后重新查询)来获取所有结果

以下是我如何处理这两个问题的示例:

// NOTE : no pagination needed for defect or iteration, but required for hierarchicalrequirement or user
QueryRequest queryRequest = new QueryRequest("hierarchicalrequirement");

queryRequest.setFetch(new Fetch(new String[] {"ObjectID", "CreationDate", "LastUpdateDate", "FormattedId"}));
queryRequest.setQueryFilter(new QueryFilter("CreationDate", ">=", "2013-01-01T07:00:00.000Z"));
queryRequest.setLimit(Integer.MAX_VALUE);

int responseTotalResultsCount = Integer.MAX_VALUE;// So we enter while loop first time
int actualResultsProcessedSoFar = 0;

// Handle both cases
while ((queryRequest.getStart()) < responseTotalResultsCount && actualResultsProcessedSoFar < responseTotalResultsCount) {

    QueryResponse queryResponse = restApi.query(queryRequest);

    responseTotalResultsCount = queryResponse.getTotalResultCount();// Set to correct value here

    JsonArray results = queryResponse.getResults();

    if (results.size() == 0) {
        return;
    } else {

        for (JsonElement jsonElement : queryResponse.getResults()) {

            // Process this particular JsonElement here

            // If no pagination required, this counter lets us exit while loop
            actualResultsProcessedSoFar++;

        }// end for loop

    }// end if (results.size() == 0)

    // Setting this to handle pagination, if required
    queryRequest.setStart(queryRequest.getStart() + queryRequest.getPageSize());

} // end while loop
//注意:缺陷或迭代不需要分页,但分层需求或用户需要分页
QueryRequest QueryRequest=新的QueryRequest(“层次要求”);
setFetch(新的Fetch(新字符串[]{“ObjectID”、“CreationDate”、“LastUpdateDate”、“FormattedId”}));
queryRequest.setQueryFilter(新的QueryFilter(“CreationDate”、“>=”、“2013-01-01T07:00:00.000Z”);
queryRequest.setLimit(整数最大值);
int responseTotalResultCount=整数。最大值;//所以我们第一次进入while循环
int actualResultsProcessedSoFar=0;
//处理这两种情况
while((queryRequest.getStart())
从2019年开始,他们将结果限制在2000个,无论您设置了多少限制。没有这方面的文件。我通过测试和设置页面和最大数量发现了这一点


这适用于JavaAPI

在这里的示例中,它们设置了页面大小和限制。您可能受到默认值的限制?从Javadoc看来,默认值是200和1页,这对Dan很有帮助。看起来200是最大页面大小,而调试我的代码,这是返回的JsonArray的大小。看起来每次增加.setStart(int)时,您都必须执行几次查询才能获得所有结果。不过我可能弄错了。
projectDefects.getTotalResultSize()
给了您什么?也有200个?大概有600个。这是决定结果是否受页面大小限制的关键因素。它不应该依赖于类型-它应该处理相同的所有分页。如果您发现故事的行为不正确,请将此报告给Rally support,以便我们可以提交缺陷并跟踪此问题。