Rally SDK 2.0-多类型工件过滤
我试图从用户故事和缺陷中获得一个组合记录集。我对每个工作都有过滤器(例如,缺陷状态!=已关闭,用户故事直接子计数=0),但我无法使用组合查询或自定义查询。例如,下面的代码返回用户情景,但本质上过滤掉了所有缺陷 我相信有多种方法可以做到这一点,但如何获得多个类型的组合结果集,以及针对每种类型的特定过滤器?谢谢Rally SDK 2.0-多类型工件过滤,sdk,rally,Sdk,Rally,我试图从用户故事和缺陷中获得一个组合记录集。我对每个工作都有过滤器(例如,缺陷状态!=已关闭,用户故事直接子计数=0),但我无法使用组合查询或自定义查询。例如,下面的代码返回用户情景,但本质上过滤掉了所有缺陷 我相信有多种方法可以做到这一点,但如何获得多个类型的组合结果集,以及针对每种类型的特定过滤器?谢谢 _getData: function(name) { var deferred = Ext.create('Deft.Deferred'); Ext.create('Ral
_getData: function(name) {
var deferred = Ext.create('Deft.Deferred');
Ext.create('Rally.data.wsapi.artifact.Store', {
models: ['UserStory', 'Defect'],
pageSize: 2000,
fetch: ['c_MyCustomField', 'ScheduleState', 'PlanEstimate', 'Name'],
filters: [
{ property: 'ScheduleState', operator: '!=', value: 'Accepted' },
function(item){
var dirChildCountIsGood = false;
try
{
if (item.DirectChildrenCount > 0)
dirChildCountIsGood = false;
}
catch(ex) {}
return false;
},
/* or */{ property: 'DirectChildrenCount', operator: '=', value: '0' }
//{ property: 'State', operator: '!=', value: 'Closed' }
],
sorters: [
{ property: 'c_MyCustomField', direction: 'ASC'} // Same field for both User Stories and Defects
],
autoLoad: true,
listeners: {
scope: this,
load: this._onRecordsLoaded
}
});
console.log('Call to WSAPI store complete.');
return deferred;
}
对于工件端点来说,这是一种不幸的奇怪现象。您可以通过在查询中使用一个特殊的隐藏TypeDefOid属性来解决这个问题,从而使各种子句只应用于正确的类型。从长远来看,我们希望增强WSAPI查询语言,以更好地支持此类场景 按如下方式构建两个过滤器:
var nonClosedDefectsFilter = Rally.data.wsapi.Filter.and([
{
property: 'TypeDefOid',
value: 12345 //replace with your defect typedef oid
},
{
property: 'State',
operator: '!='
value: 'Closed'
}
]);
var leafStoryFilter = Rally.data.wsapi.Filter.and([
{
property: 'TypeDefOid',
value: 23456 //replace with your story typedef oid
},
{
property: 'DirectChildrenCount',
value: 0
}
]);
然后,当您在创建时将它们传递到您的商店时,将它们放在一起:
Ext.create('Rally.data.wsapi.artifact.Store', {
//other config from above omitted for brevity
filters: [nonClosedDefectsFilter.or(leafStoryFilter)]
});