Consultando revisões de histórias de usuários no Rally
Pergunta
Gostaria de recuperar o objeto JSON para o log de revisão usando o URL associado à história do usuário.Consegui isso com jQuery usando o código a seguir, embora prefira fazer isso com ferramentas integradas no Rally SDK.Não tive sorte com as solicitações Ext.Ajax ou Ext.data.JsonP, embora ache que essa é a abordagem correta.Qualquer ajuda seria apreciada.
$.ajax({
url: URL,
dataType: 'jsonp',
jsonp: 'jsonp',
success: function(response) {
$.each(response.RevisionHistory.Revisions, function(key, rev) {
//Parse Revision Log
});
}
});
Solução
Isso é relativamente simples com o App SDK 2.0.Os exemplos a seguir na documentação devem ser úteis para você:
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
Aqui está um pequeno trecho de código rápido para obter o histórico de revisão de uma história específica:
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
});
}
}
});
}
});
O bom de usar o SDK é que ele executará automaticamente o ajax vs.solicitações jsonp dependendo de como você está executando o aplicativo.O exemplo acima funciona muito bem para uma única história.Se você quiser analisar várias histórias, use uma loja em vez de 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
});
}
});
}
}
});