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

时间:2014-12-03 15:22:43

标签: 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,
        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
        }
    });

使用这种方法,我们加载功能的所有可用状态值。但是,当我更改“功能”时TypeDef.Name过滤到&#39;缺陷&#39;,尽管定义了很多有效缺陷的状态,但我什么也得不到。 有谁知道为什么会发生这种情况以及如何获得缺陷的状态值? 也许缺陷使用其他一些状态,而不是功能,故事等等?

1 个答案:

答案 0 :(得分:1)

在WS API中,有一个完整的State对象,它表示PortfolioItems的状态。它与诸如Defect或UserStory之类的工件的State或ScheduleState不同,它们只是下拉字段中的字符串值。对于缺陷,没有State.Name这样的东西。

使用promises,这可能如下所示:

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; 
    },//...

请参阅this example,检索缺陷优先级和严重性的允许值。由于这些允许空值,因此在此应用示例中删除了空值,但S​​tate没有空值,因此您可以跳过该步骤。