所以我正在制作一个使用缺陷列表示例(可用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);
答案 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'