多个查询不适用

Multiple Queries Not Applying

所以我正在制作一个使用缺陷列表示例(可用 here)的自定义 HTML 应用程序。我添加了多个查询来过滤我需要的 3 queries/criterias 的结果。

我注意到只有最后一个查询被应用(例如只有 queryConfig[2] 应用)。我知道是这种情况,因为即使我想要关闭状态以外的所有内容(如 queryConfig[1] 所示),我仍然会出现状态 'Closed' 的一些缺陷。

有什么地方我做错了吗?下面是我的查询代码:

 var queryConfig = [];
 queryConfig[0] = {
  type : 'defect',
  key : 'defects',
  query: '(c_DeliveryVersionIntroduced contains "Version 1.1")',
  fetch: ['Name','State','Severity','FormattedID','Project','ObjectID']
};
queryConfig[1] = {
  type : 'defect',
  key : 'defects',
  query: '(State != Closed)',
  fetch: ['Name','State','Severity','FormattedID','Project','ObjectID']
};
queryConfig[2] = {
  type: 'defect',
  key: 'defects',
  query: '(CreationDate = "Today-3")',
  fetch: ['Name', 'State', 'Severity', 'FormattedID','Project','ObjectID']
};

var rallyDataSource = new rally.sdk.data.RallyDataSource('__WORKSPACE_OID__', 
  '__PROJECT_OID__',
  '__PROJECT_SCOPING_UP__', 
  '__PROJECT_SCOPING_DOWN__'); 
rallyDataSource.findAll(queryConfig, displayDefects);

SDK 1.0 查询配置数组不能像这样叠加工作。查询配置数组用于通过单个回调一次 运行 多个查询,并通过不同的键引用结果。例如:

 var queryConfig = [];
 queryConfig[0] = {
  type : 'HierarchicalRequirement', 
  key : 'stories',
  query: '(ScheduleState = Completed)', 
  fetch: 'Name,FormattedID'
 };
 queryConfig[1] = {
  type : 'defect',
  key : 'defects',
  query: '(State = Fixed)', 
  fetch: 'Name,FormattedID'
 };

  var rallyDataSource;
  rallyDataSource = new rally.sdk.data.RallyDataSource('__WORKSPACE_OID__', 
                           '__PROJECT_OID__',
                           '__PROJECT_SCOPING_UP__', 
                           '__PROJECT_SCOPING_DOWN__'); 
  rallyDataSource.findAll(queryConfig, processResults);
}

在这种情况下,processResults 回调将收到分组如下的结果:

  var processResults = function(results) {
    var stories = results['stories'];
    var defects = results['defects'];
  };

通过重新使用键 'defects',queryConfig 数组中最后一个条目的结果破坏了之前的查询。

为了达到您想要的结果,假设您打算将 AND 您的条件放在一起,您将需要实施具有多个条件的单个查询,即:

  queryConfig = { 
    type : 'defect',
    key : 'defects',
    query: '(((c_DeliveryVersionIntroduced contains "Version 1.1") AND (State != Closed)) AND (CreationDate = today-3))',
    fetch: 'Name,State,Severity,FormattedID,Project,ObjectID'
  };

  var rallyDataSource;
  rallyDataSource = new rally.sdk.data.RallyDataSource('__WORKSPACE_OID__', 
                           '__PROJECT_OID__',
                           '__PROJECT_SCOPING_UP__', 
                           '__PROJECT_SCOPING_DOWN__'); 
  rallyDataSource.findAll(queryConfig, processResults);
}