代码之家  ›  专栏  ›  技术社区  ›  sharan

如何从Rally中检索用户故事并构建模型变更集

  •  2
  • sharan  · 技术社区  · 7 年前

    我需要提取属于userstory的变更集以及构建变更集。

    // load the data
    _loadData : function(loadUi) {
    console.log('load data started');
    Ext.create('Rally.data.wsapi.Store', {
        model : ['User Story','Build']
        autoLoad : true,
        listeners : {
            load : function(myStore, data, success) {
                return this._processChangesetData(myStore, data, loadUi);
            },
        scope : this
        },
        fetch : [ 'FormattedID', 'Name', 'ScheduleState','Changesets', 'Iteration', 'Release' ,'Number', 'Status','Uri',]
    });
    },
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Kyle Morse    7 年前

    这有点复杂。故事有一个变更集集合,其中的每个变更集条目都有一个构建集合。

    因此,在伪代码中:


    2) 对于步骤1中加载的每个故事,加载变更集集合,确保获取生成
    3) 对于步骤2中加载的每个变更集,加载Builds集合

    https://help.rallydev.com/apps/2.1/doc/#!/guide/collections_in_v2-section-collection-fetching

    注意,由于回路中出现大量嵌套负载,这可能会非常缓慢。有没有一种方法可以过滤数据以避免加载所有内容?你想用这些数据回答什么问题?

    代码示例:

    Ext.create('Rally.data.wsapi.Store', {
        model: 'UserStory',
        fetch: ['Changesets'],
        autoLoad: true,
        listeners: {
            load: function(store, records) {
                records.each(function(story) {
                    story.changeSets = story.getCollection('Changesets');
                    story.changeSets.load({
                        fetch: ['Builds'],
                        callback: function(changesets) {
                            changesets.each(function(changeset) {
                                changeset.builds = changeset.getCollection('Builds');
                                changeset.builds.load({
                                    fetch: ['Number', 'Duration', 'Status', 'Uri'],
                                    callback: function(builds) {
                                        builds.each(function(build) {
                                            console.log(build);
                                        });
                                    }
                                });
                            });
                        }
                    });    
                });
            }
        }
    });  
    

    如上所述,我不建议在生产环境中运行此代码。这将是非常缓慢的。如果你能将顶层限制在一个特定的故事中,那可能不会太糟糕。