2017-07-20 2 views
2

J'ai besoin de tirer le changeset appartient à userstory avec build changesets.Comment faire pour récupérer l'histoire de l'utilisateur et construire des changesets de modèle de 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',] 
}); 
}, 
+0

Vous devrez peut-être poster un peu plus d'informations et il semble être un peu plus orienté vers l'implémentation de RallyAPI de votre serveur (sauf si vous frappez l'API directement du client, ce que vous ne devriez pas). il serait également logique de supposer que votre modèle UserStory n'aurait pas d'espace. En plus de cela, vous devriez vérifier les relations associées entre les modèles si vous souhaitez inclure les deux dans un seul magasin .... Un peu plus d'informations sur la façon dont vous essayez de construire votre magasin de données serait utile. :) – djmm187

Répondre

1

Ceci est un peu compliqué. Les histoires ont une collection de Changesets, et chaque entrée de Changeet contient une collection Builds.

Ainsi, pseudocode:

1) histoires de charge, en vous assurant de chercher Révisions
2) Pour chaque histoire chargée à l'étape 1, chargez la collection d'historiques, en prenant soin de chercher Établit
3) chaque changeset chargé à l'étape 2, charger les builds collection

Il y a un bon guide dans la documentation sur la façon de travailler avec des collections: https://help.rallydev.com/apps/2.1/doc/#!/guide/collections_in_v2-section-collection-fetching

Notez que ce sera probablement très lent en raison du volume de loa imbriqué ds se produisant dans les boucles. Est-il possible de filtrer vos données pour éviter de tout charger? Quelle est la question à laquelle vous essayez de répondre avec toutes ces données?

Exemple de code:

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); 
            }); 
           } 
          }); 
         }); 
        } 
       });  
      }); 
     } 
    } 
}); 

Comme mentionné ci-dessus, je ne recommanderais pas d'exécuter ce code dans la production. Ce sera très lent. Si vous pouvez limiter le niveau supérieur à une histoire spécifique, ce ne sera probablement pas trop mal.

+0

@Morse merci pour l'information, il a été utile, maintenant je suis en mesure d'obtenir les builds dans changesets donc j'irirating chaque changeset et obtenir le lien de builds qui a la valeur count est égal à 1, peut s'il vous plaît aider comment puis-je faire rappeler fonction pour frapper build "_ref" lien de sorte que je peux obtenir des réponses de 'Number', 'Status', 'Uri' liés à la construction. "Builds": { "_rallyAPIMajor": "2", "_rallyAPIMinor": "0", "_ref": "https://rally1.rallydev.com/slm/webservice/v2.0/BuildDefinition/ 133668244192/Builds ", " _type ":" Build ", " Count ": 2 } – sharan

+0

@Morse merci pour la réponse, je me suis occupé de -limiter le niveau supérieur à une histoire spécifique sous la version de perticualr. Son rendement est bien maintenant. – sharan