Sdk 在Rally中查询用户故事修订

Sdk 在Rally中查询用户故事修订,sdk,rally,Sdk,Rally,我想使用与用户故事相关联的URL检索修订日志的JSON对象。我使用以下代码通过jQuery实现了这一点,尽管我更愿意使用Rally SDK中的内置工具。对于Ext.Ajax或Ext.data.JsonP请求,我没有任何运气,尽管我觉得这是正确的方法。任何帮助都将不胜感激 $.ajax({ url: URL, dataType: 'jsonp', jsonp: 'jsonp', success: function(response) { $.each

我想使用与用户故事相关联的URL检索修订日志的JSON对象。我使用以下代码通过jQuery实现了这一点,尽管我更愿意使用Rally SDK中的内置工具。对于Ext.Ajax或Ext.data.JsonP请求,我没有任何运气,尽管我觉得这是正确的方法。任何帮助都将不胜感激

$.ajax({
    url: URL,
    dataType: 'jsonp',
    jsonp: 'jsonp',
    success: function(response) {
        $.each(response.RevisionHistory.Revisions, function(key, rev) {
            //Parse Revision Log
        });
    }
});

这在应用程序SDK 2.0中相对简单。文档中的以下示例应该对您有所帮助:

下面是一个快速的小代码片段,用于获取特定故事的修订历史记录:

Rally.data.ModelFactory.getModel({
    type: 'UserStory',
    success: function(storyModel) {
        var storyRef = 'https://rally1.rallydev.com/slm/webservice/1.37/hierarchicalrequirement/12345.js';
        var storyID = Rally.util.Ref.getOidFromRef(storyRef);
        storyModel.load(storyID, {
            fetch: ['Name', 'FormattedID', 'Description', 'RevisionHistory', 'Revisions'],
            callback: function(story, operation) {
                if(story && story.get('RevisionHistory') && story.get('RevisionHistory').Revisions) {
                    Ext.Array.each(story.get('RevisionHistory').Revisions, function(revision) {
                        //Parse revision log
                    });
                }
            }
        });
    }
});
使用SDK的好处在于,它会根据您运行应用程序的方式自动执行ajax和jsonp请求。上面的例子对于一个故事来说非常有用。如果要分析多个故事,则需要使用存储而不是model.load:

Ext.create('Rally.data.WsapiDataStore', {
    model: 'UserStory',
    autoLoad: true,
    fetch: ['Name', 'FormattedID', 'Description', 'RevisionHistory', 'Revisions'],    
    listeners: {
        load: function(store, stories) {
            Ext.Array.each(stories, function(story) { 
                if(story && story.get('RevisionHistory') && story.get('RevisionHistory').Revisions) {
                    Ext.Array.each(story.get('RevisionHistory').Revisions, function(revision) {
                        //Parse revision log
                    });
                }
            });
        }
    } 
});

虽然story.RevisionHistory.RevisionHistory似乎从来都不存在,但我追求的是数据存储方法。最接近我的是story.data.RevisionHistory,在FireBug中我可以看到它的属性:_rallyAPIMajor、_rallyAPIMinor、_ref和_type。使用_ref字段使我回到了开始的位置。我是否需要在查询中添加一些内容才能获得story.RevisionHistory.Revisions?似乎已经回答了我自己的问题。需要将“fetch”行从第一个查询添加到第二个查询;)一如既往地感谢你的帮助,凯尔!哎呀!抢手货我更新了第二个代码示例,使其正确。还有一个修复:story.RevisionHistory应该是story.get('RevisionHistory')或story.data.RevisionHistory