Это относительно просто с App SDK 2.0. Следующие примеры в документации должны быть полезными для Вас:
http://developer.rallydev.com/apps/2.0p4/doc/#!/guide/appsdk_20_data_models
http://developer.rallydev.com/apps/2.0p4/doc/#!/guide/appsdk_20_data_stores
Вот быстрый маленький фрагмент кода, чтобы получить историю изменений конкретной истории:
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.Revisions кажется, никогда не существовало. Самое близкое, что у меня есть, это story.data.RevisionHistory, который в FireBug, который я вижу, имеет свойства: _rallyAPIMajor, _rallyAPIMinor, _ref и _type. Использование поля _ref возвращает меня туда, где я начал. Нужно ли добавлять что-то к запросу, чтобы получить историю. RevisionHistory.Revisions? –
Казалось, ответил на мой вопрос. Нужно добавить строку «выборки» от первого запроса ко второй;) Спасибо, как всегда за вашу помощь Кайл! –
Упс! Хороший улов. Я обновил второй пример кода, чтобы быть правильным. –