RallyDev - 使用Rally.RestAPI.dll和Service V2.0获取故事任务

时间:2013-08-23 20:53:36

标签: c# rally

我使用C#和Rally.RestAPI.dll将数据从https://rally1.rallydev.com拉出Rally服务器。服务器最近升级到webservice v2.0,我在为用户故事获取任务时遇到了一些问题。我知道API中的子集合的呈现方式已经改为2.0,但我正在尝试的是不起作用。

1 个答案:

答案 0 :(得分:1)

v2.0删除了返回子集合的能力 出于性能原因的回应。现在提取一个集合将返回 一个带有count的对象和从中获取集合的url 数据。需要单独的请求来获取元素 采集。 以下是迭代用户故事结果的代码,访问故事中的“任务”集合并发出单独的请求以访问单个任务属性:

using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using Rally.RestApi;
using Rally.RestApi.Response;

namespace aRestApp_CollectionOfTasks
{
    class Program
    {
        static void Main(string[] args)
        {
            //Initialize the REST API
            RallyRestApi restApi;
            restApi = new RallyRestApi("user@co.com", "secret", "https://rally1.rallydev.com", "v2.0");

            //Set our Workspace and Project scopings
            String workspaceRef = "/workspace/11111"; //please replace this OID with an OID of your workspace
            String projectRef = "/project/22222";     //please replace this OID with an OID of your project
            bool projectScopingUp = false;
            bool projectScopingDown = true;

            Request storyRequest = new Request("HierarchicalRequirement");


            storyRequest.Workspace = workspaceRef;
            storyRequest.Project = projectRef;
            storyRequest.ProjectScopeUp = projectScopingUp;
            storyRequest.ProjectScopeDown = projectScopingDown;

            storyRequest.Fetch = new List<string>()
                {
                    "Name",
                    "FormattedID",
                    "Tasks",
                    "Estimate"


                };
            storyRequest.Query = new Query("LastUpdateDate", Query.Operator.GreaterThan, "2013-08-01");      
            QueryResult queryStoryResults = restApi.Query(storyRequest);

            foreach (var s in queryStoryResults.Results)
            {
                Console.WriteLine("----------");
                Console.WriteLine("FormattedID: " + s["FormattedID"] + " Name: " + s["Name"]);
                //Console.WriteLine("Tasks ref: " + s["Tasks"]._ref);
                Request taskRequest = new Request(s["Tasks"]);
                QueryResult queryTaskResult = restApi.Query(taskRequest);
                if (queryTaskResult.TotalResultCount > 0)
                {
                    foreach (var t in queryTaskResult.Results)
                    {
                        var taskEstimate = t["Estimate"];
                        var taskName = t["Name"];
                        Console.WriteLine("Task Name: " + taskName + " Estimate: " + taskEstimate);
                    }
                }
                else
                {
                    Console.WriteLine("no tasks found");
                }
            }
        }
    }
}