如何从 Rally 检索用户故事和构建模型变更集
How to retrieve the user story and build model changesets from Rally
我需要拉取属于用户故事的变更集以及构建变更集。
// 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',]
});
},
这有点复杂。故事有一个 Changesets 集合,其中的每个 Changeset 条目都有一个 Builds 集合。
所以,在伪代码中:
1) 加载故事,确保获取变更集
2) 对于第 1 步中加载的每个故事,加载 Changesets 集合,确保获取 Builds
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);
});
}
});
});
}
});
});
}
}
});
如上所述,我不建议 运行 在生产环境中使用此代码。会很慢。如果你能把顶层限制在一个特定的故事上,那可能不会太糟糕。
我需要拉取属于用户故事的变更集以及构建变更集。
// 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',]
});
},
这有点复杂。故事有一个 Changesets 集合,其中的每个 Changeset 条目都有一个 Builds 集合。
所以,在伪代码中:
1) 加载故事,确保获取变更集
2) 对于第 1 步中加载的每个故事,加载 Changesets 集合,确保获取 Builds
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);
});
}
});
});
}
});
});
}
}
});
如上所述,我不建议 运行 在生产环境中使用此代码。会很慢。如果你能把顶层限制在一个特定的故事上,那可能不会太糟糕。