多个查询未应用

时间:2015-06-30 21:44:56

标签: rally

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

我注意到的是,只应用了最后一个查询(例如,仅适用queryConfig[2])。我知道情况就是这样,因为我仍然会遇到一些状态缺陷的问题。出现即使我想要一切关闭状态(如queryConfig[1]所示)。

我在这里做错了什么吗?以下是我的查询代码:

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

1 个答案:

答案 0 :(得分:1)

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

function sortit(&$arr) {

   // creat ordering array
   $orderarr = array();
   foreach($arr as $k => $item) {

        // Default order is by key (fallback)
        $orderval = $k;

        if(is_array($item)) {

            // Get the first item
            $itemx = current($item);

            if(is_numeric($itemx)) {

                // If its a number, thats our value! 
                $orderval = $itemx;

            } else if (is_array($itemx) && isset($itemx['order'])) {

                // Only other thing we accept is an array containing the order key
                $orderval = intval($itemx['order']);

            }

        }

        // Build the ordering array
        $orderarr[$k] = $orderval;

   }

   // Sort the original array
   array_multisort($orderarr, SORT_ASC, $arr);      

}

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

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

通过重用密钥 var processResults = function(results) { var stories = results['stories']; var defects = results['defects']; }; ,queryConfig数组中最后一个条目的结果会破坏先前的查询。

为了达到理想的结果,假设您打算将条件设置为AND,则需要实现具有多个条件的单个查询,即:

'defects'