Consultando las revisiones de la historia de los usuarios en Rally
Pregunta
Me gustaría recuperar el objeto JSON para el registro de revisión utilizando la URL asociada con la historia del usuario.He logrado esto con jQuery usando el siguiente código, aunque preferiría hacerlo con herramientas construidas en el Rally SDK.No he tenido ninguna suerte con las solicitudes ext.ajax o ext.data.jsonp, aunque siento que es el enfoque correcto.Cualquier ayuda sería apreciada.
$.ajax({
url: URL,
dataType: 'jsonp',
jsonp: 'jsonp',
success: function(response) {
$.each(response.RevisionHistory.Revisions, function(key, rev) {
//Parse Revision Log
});
}
});
Solución
Esto es relativamente sencillo con la aplicación SDK 2.0.Los siguientes ejemplos en la documentación deben ser útiles para usted:
http://developer.rallydev.com/apps/2.0P4 / Doc / #! / Guía / AppSDK_20_DATA_MODELS
http://developer.rallydev.com/apps/2.0P4 / Doc / #! / Guía / appsdk_20_data_stores
Aquí hay un fragmento de código rápido para obtener el historial de revisión de una historia 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
});
}
}
});
}
});
Lo bueno con el uso del SDK es que automáticamente hará automáticamente las solicitudes de AJAX vs. JSONP, dependiendo de cómo esté ejecutando la aplicación.El ejemplo anterior funciona ideal para una sola historia.Si desea analizar las múltiples historias, querrá usar una tienda en lugar de modelar.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
});
}
});
}
}
});