2014-07-01 85 views
0

我一直在試圖查詢拉力賽只是爲了通過它的ObjectID來獲得某個對象,但後來我在許多情況下最終需要它的父項。例如,對於任務,我需要與其關聯的用戶故事以及該故事的功能。它最終是相當多的回調(公平的警告,這是醜陋的) - 任何人都可以推薦一個更有效的解決方案?通過OID進行查詢的功能非常好,但它太糟糕了,我需要的不僅僅是關於該OID的信息。 (注 - 解決方案必須使用WSAPI,而不是LBAPI)。拉力賽 - 更有效的方式來獲得項目編號

Rally.data.WsapiModelFactory.getModel({ 
     type: 'Task', 
     context: { 
      workspace: Rally.util.Ref.getRelativeUri() 
     }, 
     success: function(taskModel) { 
      taskModel.load(oid, { 
       scope: this, 
       callback: function(taskRecord, op, success) { 
        if (taskRecord && taskRecord.data.WorkProduct && taskRecord.data.WorkProduct._type == "HierarchicalRequirement") { 


         // get User Story 
         Rally.data.WsapiModelFactory.getModel({ 
          type: 'User Story', 
          context: { 
           workspace: Rally.util.Ref.getRelativeUri() 
          }, 
          success: function(userStoryModel) { 
           userStoryModel.load(taskRecord.data.WorkProduct._ref, { 
            scope: this, 
            callback: function(storyRecord, op, success) { 

             if (storyRecord && storyRecord.data && storyRecord.data.Feature) { 

              // Get Feature 
              Rally.data.WsapiModelFactory.getModel({ 
               type: 'PortfolioItem/Feature', 
               context: { 
                workspace: Rally.util.Ref.getRelativeUri() 
               }, 
               success: function(featureModel) { 
                featureModel.load(storyRecord.data.Feature._ref, { 
                 scope: this, 
                 callback: function(featureRecord) { 
                  displayTask(oid, taskRecord, storyRecord, featureRecord); 
                 } 
                }); 
               } 
              }); 
             } 
            } 
           }); 
          } 
         }); 
        } 
       } 
      }); 
     } 
    }); 

回答

2

您可以直接在單個查詢中提取工作產品父級及其關聯的功能。試試這個:

Ext.create('Rally.data.WsapiDataStore', { 
     model : 'Task', 
     fetch : ['WorkProduct','Name','Feature'], 
     filters : [{ 
      property : 'ObjectID', 
      value : OID 
     }] 
    }).load({ 
     callback : function(records, operation, success) { 
      var task  = records[0]; 
      var userStory = task.get('WorkProduct'); 
      var feature = userStory.Feature; 
     } 
    }); 
+0

我曾試過一個查詢就像這樣開始,但沒有得到任何結果。你的回答鼓勵我再試一次 - 事實證明,我只需要指定上下文,然後這完美地工作。謝謝! –

+0

很高興能幫到你! –

相關問題