2012-06-22 2 views
1

랠리에서 "Feature"라는 단어가 포함 된 트리의 항목을 쿼리하려고했습니다. 부모 이름에 "Feature"라는 단어가 있는지 확인하여 쿼리 (Parent.Parent.Parent.Parent.Parent.Name에 "Feature"가 있음) 등을 시도했습니다. 내 접근 방식이 작동하지 않습니다. 이 작업을 수행하는 더 좋은 방법이 있습니까? 감사.집회 : 특정 키워드가 포함 된 상위를 찾는 방법은 무엇입니까?

+0

이야기 또는 포트폴리오 항목을 쿼리하고 있습니까? 부모 쿼리를 한꺼번에 ORing 했습니까? EX : ((Parent.Parent에는 "Feature"가 포함됨) 또는 Parent.Parent.Parent에는 "Feature"가 포함됨) –

+0

아직 Or'd가 없습니다. 그러나, 나는 (사용자 스토리, 기능 등을 포함하고있는) 계층 구조의 어떤 아이템이 부모 체인에 의해 "feature"라는 키워드를 포함하고 있는지보기 위해 노력하고있었습니다. 이야기와 포트폴리오 항목의 차이점을 모르겠습니다. 포트폴리오를 쿼리하는 데 도움이되는 리소스 나 포인터를 제공 할 수 있다면 (내가 수행중인 작업을 수행하기 위해 쿼리해야하는 것이면), 그렇게 대단히 감사하겠습니다. 감사. – user1133324

+0

랠리 포트폴리오 관리자를 사용하여 스토리를 구성하고 있습니까? 포트폴리오 관리자를 사용하는 경우이 나머지 URL은 일부 데이터를 반환합니다. https://rally1.rallydev.com/slm/webservice/x/portfolioitem.js –

답변

2

찰스 메모에 따르면 단일 집회 쿼리를 통해 상위 계층을 트래버스 할 수 없습니다. , 당신이 할 수있는 그때까지

Lookback API: Find all leaf node stories under a known parent

: 궁극적으로는 전체 계층 구조를 끌어 이름과 다른 기준이 문서에서 설명하는 것과 유사한 (현재 알파) 전환 추적 API 쿼리를 사용하여 필터링 할 수있을 것입니다 AppSDK를 사용하여 부모의 계층 구조를 탐색하고 rallyDataSource의 find() 메서드에 대한 재귀 호출. 생산, 스토리 이름에 "부모"를 포함하는 이야기가

Story Hierarchy

그리고 필터 :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html> 
<head> 
    <meta name="Name" content="App Example: Parent Name Contains Story Hierarchy"/> 
    <title>Parent Name Contains Story Hierarchy</title> 
    <script type="text/javascript" src="/apps/1.27/sdk.js"></script> 
    <script> 

    var rallyDataSource; 

    function parentNameRecursionExample() { 
     var parentStoryHierarchy = function(results) { 

     var storyInfo = ""; 
     var story = ""; 
     var parentFormattedID = ""; 
     for (i=0 ; i < results.stories.length ; i++) { 
      story = results.stories[i]; 
      if (story.Parent != null) { 
       parentName = story.Parent.Name; 

       var testContains = "Parent"; 
       if (parentName.indexOf(testContains) != -1) { 

        storyInfo += story.FormattedID + 
          ', ' + story.Name + 
          ', Parent:' + story.Parent.FormattedID + 
          ': ' + story.Parent.Name + '<br>'; 
        aDiv.innerHTML += storyInfo; 
       } 

       parentFormattedID = story.Parent.FormattedID; 

       var queryConfig = { 
       type : 'HierarchicalRequirement', 
       key : 'stories', 
       fetch: 'FormattedID,Name,Parent', 
       query: '(FormattedID = \"' + parentFormattedID + '\")' 
       }; 

       rallyDataSource.findAll(queryConfig, parentStoryHierarchy); 
      } else { 
       storyInfo += story.FormattedID + 
        ', ' + story.Name + 
        ', Parent: No Parent'; 
       aDiv.innerHTML += storyInfo; 

      } 
     } 
     }; 

     var queryConfig = { 
      type : 'HierarchicalRequirement', 
      key : 'stories', 
      fetch: 'FormattedID,Name,Parent',//, 
      query: '(FormattedID = \"US130\")' 
     }; 

     rallyDataSource = new rally.sdk.data.RallyDataSource('__WORKSPACE_OID__', 
                '__PROJECT_OID__', 
                '__PROJECT_SCOPING_UP__', 
                '__PROJECT_SCOPING_DOWN__'); 
     rallyDataSource.findAll(queryConfig, parentStoryHierarchy); 
    } 

    rally.addOnLoad(parentNameRecursionExample); 
    </script> 
</head> 
<body> 
    <div id="aDiv"></div> 
</body> 
</html> 

그것은 다음과 같습니다 스토리 계층 구조를 통과 :이 수행하는 간단한을 포함 시켰습니다 다음과 같은 출력 :

Filtered Story Hierarchy output from App

샘플 이해는, 거친 컷과 아주 예쁜하지 N 우아하고 쉬운 단일 쿼리와 비슷하지만 트리를 트래버스하고 원하는 결과를 필터링하는 방법을 보여줍니다.

관련 문제