Javascript Rally SDK:检索缺陷的所有可用状态值

Javascript Rally SDK:检索缺陷的所有可用状态值,javascript,rally,Javascript,Rally,我想检索Rally Defect的所有可用状态值。 以下代码适用于以下功能: this.states = []; this.stateStore = Ext.create('Ext.data.Store', { fields: ['_ref', 'name'] }); Ext.create('Rally.data.wsapi.Store', { model: 'State', autoLoad: true,

我想检索Rally Defect的所有可用状态值。 以下代码适用于以下功能:

this.states = [];
    this.stateStore = Ext.create('Ext.data.Store', {
        fields: ['_ref', 'name']
    });

    Ext.create('Rally.data.wsapi.Store', {
        model: 'State',
        autoLoad: true,
        filters: [
            {
                property: 'Enabled',
                operation: '=',
                value: true
            },
            {
                property: 'TypeDef.Name',
                operation: '=',
                value: 'Feature'
            }
        ],
        listeners: {
            load: function (store, data) {
                for (var i = 0; i < data.length; i++) {
                    this.stateStore.add({ '_ref': data[i].data._ref, 'name': data[i].data.Name });
                }
                this.statesLoaded = true;
                this._initialLoad();
            },
            scope: this
        }
    });
this.states=[];
this.stateStore=Ext.create('Ext.data.Store'{
字段:[''参考','名称']
});
Ext.create('Rally.data.wsapi.Store'{
模型:“状态”,
自动加载:对,
过滤器:[
{
属性:“已启用”,
操作:'=',
值:true
},
{
属性:“TypeDef.Name”,
操作:'=',
值:“功能”
}
],
听众:{
加载:功能(存储、数据){
对于(变量i=0;i
使用这种方法,我们加载特性的所有可用状态值。然而,当我将“Feature”TypeDef.Name过滤器更改为“Defect”时,我什么也得不到,尽管定义的缺陷有许多活动状态。 有人知道为什么会发生这种情况,以及如何获取缺陷的状态值吗?
可能缺陷使用了一些其他状态,而不是功能、用户故事等?

在WS-API中,有一个完整的状态对象表示PortfolioItems的状态。它不同于缺陷或UserStory等工件的状态或ScheduleState,它们只是下拉字段中的字符串值。缺陷不存在状态。缺陷的名称

使用承诺,这可能如下所示:

launch: function(){
    this._getModel().then({
        success: this._getAllowedValues,
        scope:this
    }).then({//...})
},

 _getModel:function(){
        return Rally.data.ModelFactory.getModel({
            type:'Defect'
        });
    },

 _getAllowedValues:function(model){
        var deferred = Ext.create('Deft.Deferred');
        var allowedStateValues = [];
        model.getField('State').getAllowedValueStore().load({
            callback: function(records,operation,success){
                Ext.Array.each(records,function(allowedValue){
                    allowedStateValues.push(allowedValue.get('StringValue'));
                });
                if(success){
                    deferred.resolve(allowedStateValues);
                }
                else{
                    deferred.reject();
                }

            }
        }) ;
        return deferred.promise; 
    },//...

请参见检索缺陷优先级和严重性的允许值。因为这些允许空值,所以在这个应用程序示例中,空值被删除,但State没有空值,所以您可以跳过该步骤

谢谢!它起作用了。然而,有一点有趣的是,允许值中每个状态的ObjectID都是0,但是当我检索缺陷历史记录(带有_TypeHierarchy:Defect的常规快照存储)时,每个缺陷快照都包含状态代码。你知道在哪里可以找到这个代码吗?@MyUserName不客气。您要查找的代码是什么?如果它是我发布的,那么它不是一个完整的应用程序,我只是写了那个代码片段来提供一个例子和我的答案。就ObjectID而言,SnapshotStore从中检索数据的LookbackAPI是不同的。Lookback直接从db获取其修订版并将其存储在mongodb中-它没有像AppSDK的其余部分那样使用WS-API。回顾过去,对于大多数事情,你都会得到一个OID,你必须给它们补水,但WS-APINo不是这样的,你的例子并没有真正帮助我。这是关于我加载缺陷快照的代码。所以,状态的ID是MongoDB中的一些值,我只需要对状态进行水合处理,然后使用字符串值。再次感谢:)@MyUserName,另请参阅:“水合下拉值”