java - 集会休息 Api : QueryFilter: Get defects by timestamp

标签 java rally

有没有一种方法可以使用 QueryFilter 从时间戳开始更新缺陷?像这样:

String timeStamp = "2012-08-24T19:10:09.154Z";
QueryRequest defectRequest = new QueryRequest("defect");
defectRequest.setFetch(new Fetch("LastUpdateDate"));
defectRequest.setQueryFilter(new QueryFilter("LastUpdateDate", ">", timeStamp);
QueryResponse projectDefects = rallyApi.query(defectRequest);

最佳答案

Rally Web Services API介绍页面有一些关于编写复杂查询的陷阱的解释(请查看查询语法对象集合属性和查询 部分)。 Java 版本确实很容易处理链式表达式,但有点难读。下面是一个查询,用于整理自 8 月 1 日以来具有高严重性或优先级的开放缺陷:

String timeStamp = "2012-08-01T19:10:09.154Z";

Map<String, QueryFilter> filters = new HashMap<String, QueryFilter>();

filters.put("LastUpdateDate", new QueryFilter("LastUpdateDate", ">", timeStamp));
filters.put("State", new QueryFilter("State", "=", "Open"));
filters.put("Severity", new QueryFilter("Severity", "<=", "Major Problem"));
filters.put("Priority", new QueryFilter("Priority", "<=", "High Attention"));

// Evaluates to ((Severity <= Major Problem) OR (Priority <= High Attention)) AND ((LastUpdateDate > timeStamp) AND (State = Open))
QueryFilter complexFilter = filters.get("Severity").or(filters.get("Priority")).and(filters.get("LastUpdateDate").and(filters.get("State")));

一个大陷阱是查询作为集合的属性(如用户故事中的任务)。将查询链接在一起会使您得到错误的结果。例如,如果您正在寻找具有正在进行和被阻止的任务的用户故事,则查询会将表达式评估为 OR 语句。发生这种情况是因为查询将其转换为“在集合中查找任何处于阻塞状态的任务,然后查找任何正在进行的任务”。查询不会在第一个表达式之后缩小列表的范围;每个表达式查询集合中的所有任务。

解决此问题的一种方法是执行其中一个查询(假设我们得到所有正在进行的任务)。然后,我们过滤该列表以获取所有被阻止的任务。获得过滤后的列表后,您可以找出每个任务属于哪个用户故事。

引用资料:

上面链接的 Rally Web Services API。

http://developer.rallydev.com/help/java-toolkit-rally-rest-api (我使用页面末尾的最后一个示例作为创建上述查询过滤器的基础)。

关于java - 集会休息 Api : QueryFilter: Get defects by timestamp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12116069/

相关文章:

java - 将 ScrollView 添加到整个 Activity

java - 如何在浏览器中显示PDF文件

java - 欧拉计划 #8 的答案并不正确

java - 使用 Rally Java Rest api 使用字段名称查找引用

java - 获取特定迭代下的所有任务(符合条件)?

javascript - SDK 1 中的 Rally 查询与 SDK 2 中的存储

java - Android Studio 错误 :Error:(23, 0) 找不到根项目参数的方法 android()

java - Apache Camel : save email to file (. eml) 使用路由

extjs - record.data 和 record.raw 的区别

rest - Rally - 使用 REST(非 API)使用标签创建用户故事