如何使用Rally .NET工具包访问用户故事的任务集合?

时间:2013-07-08 20:06:11

标签: c# .net rest rally

我明白了:

  

未处理的异常:System.Collections.Generic.KeyNotFoundException:给定的   密钥没有出现在字典中。

在迭代用户素材查询结果并尝试访问故事[“任务”]

foreach (var story in queryStoryResults.Results)
       {
           Console.WriteLine("FormattedID: " + story["FormattedID"]);
           Console.WriteLine("Name: " + story["Name"]);
           Console.Write("Tasks: " + story["Tasks"]);

}

1 个答案:

答案 0 :(得分:1)

首先,确保正在提取任务,以及要提取的任务特定字段,例如州。 接下来,循环内部需要一个嵌套循环,迭代用户故事结果。 这是代码示例。它查询当前迭代中的用户故事,并打印出与查询结果关联的FormattedID和任务状态:

namespace RESTexample_storiesFromIteration
{
    class Program
    {
        static void Main(string[] args)
        {

            //Initialize the REST API
            RallyRestApi restApi;
            restApi = new RallyRestApi("user@domain.com", "1984", "https://rally1.rallydev.com", "1.43");

            //Set our Workspace and Project scopings
            String workspaceRef = "/workspace/1111";
            String projectRef = "/project/2222";
            bool projectScopingUp = false;
            bool projectScopingDown = true;

            DateTime now = DateTime.Today;
            String nowString = now.ToString("yyyy-MM-dd");

            Request iterationRequest = new Request("Iteration");
            iterationRequest.Workspace = workspaceRef;
            iterationRequest.Project = projectRef;

            iterationRequest.Fetch = new List<string>()
                {
                    "Name",
                    "StartDate",
                    "EndDate",
                    "Project",
                    "State"
                };

            String iterationQueryString = "((StartDate <= \"" + nowString + "\") AND (EndDate >= \"" + nowString + "\"))";
            iterationRequest.Query = new Query(iterationQueryString);

            QueryResult queryIterationResults = restApi.Query(iterationRequest);

            var myIteration = queryIterationResults.Results.First();
            var myIterationName = myIteration["Name"];
            var myIterationProject = myIteration["Project"];
            var myIterationProjectName = myIterationProject["Name"];

            Console.WriteLine("Name: " + myIterationName);
            Console.WriteLine("Project Ref: " + myIterationProjectName);
            Console.WriteLine("State: " + myIteration["State"]);

            // Query for Stories

            Request storyRequest = new Request("hierarchicalrequirement");
            storyRequest.Workspace = workspaceRef;
            storyRequest.Project = projectRef;
            storyRequest.ProjectScopeUp = projectScopingUp;
            storyRequest.ProjectScopeDown = projectScopingDown;
            storyRequest.Fetch = new List<string>()
                {
                    "Name",
                    "ObjectID",
                    "ScheduleState",
                    "State",
                    "FormattedID",
                    "PlanEstimate",
                    "Iteration",
                    "Tasks"
                };

            storyRequest.Query = new Query("Iteration.Name", Query.Operator.Equals, myIterationName);
            QueryResult queryStoryResults = restApi.Query(storyRequest);

            foreach (var s in queryStoryResults.Results)
            {
                Console.WriteLine("----------");
                Console.WriteLine("FormattedID: " + s["FormattedID"]);
                Console.WriteLine("Name: " + s["Name"]);
                Console.WriteLine("PlanEstimate: " + s["PlanEstimate"]);

                var tasks = s["Tasks"];

                foreach (var t in tasks)
                 {
                     Console.WriteLine("Task: " + t["FormattedID"] + " " + t["State"]);
                 }
            }

        }
    }
}
相关问题