1

在 Rally 中,我试图在树中查询包含“Feature”一词的项目。我尝试通过检查任何父名称中是否包含“Feature”一词来查询 (Parent.Parent.Parent.Parent.Parent.Name contains "Feature") 等。我的方法不起作用。有一个更好的方法吗?谢谢。

4

1 回答 1

2

正如 Charles 所指出的,不可能通过单个 Rally Query 遍历父层次结构。最终,可以使用(当前为 alpha 的)Lookback API 和类似于本文中描述的查询来提取整个层次结构并过滤命名和其他条件:

Lookback API:查找已知父节点下的所有叶节点故事

在此之前,您可以使用 AppSDK 遍历父级的层次结构并递归调用 rallyDataSource 的 find() 方法。我已经包含了一个简单的方法:

<!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>

它遍历一个看起来像这样的故事层次结构:

故事层次

并过滤故事名称中包含“父母”的故事,产生以下输出:

来自 App 的过滤故事层次结构输出

理解示例是粗略的,不是很漂亮,不像单个查询那样优雅或简单,但它说明了如何遍历树并过滤您正在寻找的结果。

于 2012-06-26T19:19:08.677 回答