2013-08-12 1 views
0

자세한 내용은 here으로 lbapi의 제한으로 인해 lbapi에 대한 쿼리의 크기가 크게 증가했습니다 (LBAPI에 작업 항목을 반환하는 "가시적 인"프로젝트 배열을 전달 중입니다. 내가 볼 수있는 프로젝트) "요청 엔티티가 너무 크다"라는 오류가 발생합니다.랠리 요청 엔티티가 너무 큼

시간이 지나면 일부 보이는 프로젝트 만 사용하여 쿼리를 분해해야한다는 것을 알고 있습니다. 나는 이것을 프로그램 적으로하고 싶었습니다 - 보이는 모든 100 개의 프로젝트에 대해 쿼리를 수행하고 돌아온 레코드를 가져 와서 배열로 던지려고했습니다.

그러나 이것은 계속할 때를 결정하려고 할 때 좀 번거롭게됩니다. 모든 쿼리를 다시 가져 와서 합계 배열을 채 웁니까? 누구나 이런 일이 일어날 수있는 깨끗한 방법을 생각할 수 있습니까?

for (var i = 0; i < Math.ceil(App.visibleTeams.length/100); i++) { 
    console.log('i',i); 
    var tempProj = []; 
    for (var j = i * 100; j < Math.min((i + 1) * 100, App.visibleTeams.length); j++) { 
     tempProj.push(App.visibleTeams[j]); 
    } 
    console.log('tempProj.length',tempProj.length); 
    // query 
    App.completeRecords = []; 
    Ext.create('Rally.data.lookback.SnapshotStore', { 
     pageSize : 10000, 
     fetch : ['Parent','Name','_UnformattedID','PortfolioItemType','PercentDoneByStoryPlanEstimate','ObjectID','PlannedStartDate','PlannedEndDate','ActualStartDate','ActualEndDate','LeafStoryPlanEstimateTotal'], 
     filters : [{ 
      property : '__At', 
      value : 'current' 
     },{ 
      property : '_TypeHierarchy', 
      value : 'PortfolioItem' 
     },{ 
      property : '_ItemHierarchy', 
      operator : 'in', 
      value : node.ObjectID 
     },{ 
      property : 'Project', 
      operator : 'in', 
      value : tempProj 
     },{ 
      property : 'LeafStoryPlanEstimateTotal', 
      operator : '>', 
      value : 0 
     }] 
    }).load({ 
     callback: function(records, operation, success) { 
      if (!success) { 
       Ext.getBody().unmask(); 
       Ext.Msg.alert('Error ' + operation.error.status + ': ' + operation.error.statusText, operation.error.errors[0]); 
      } else { 
       App.completeRecords.push.apply(App.completeRecords, records); 
       // if done, callback(), else, do nothing 
      } 
     } 
    }); 
} 
+0

이 솔루션은 잘 작동하지 않습니다. 봐 주셔서 감사합니다! –

답변

0

이 문제를 해결할 수있는 몇 가지 새로운 기능이 추가되었습니다. 다른 질문에 대한보다 자세한 답변을 추가했습니다. referenced.