C# と Rally.RestAPI.dll を使用して、Rally サーバー ( https://rally1.rallydev.com)からデータを取得しています。サーバーは最近 Web サービス v2.0 にアップグレードされましたが、ユーザー ストーリーのタスクを取得する際に問題が発生しています。2.0 への移行に伴い、子コレクションの表示方法が API で変更されたことは知っていますが、私が試みていることは機能していません。
質問する
2300 次
1 に答える
1
v2.0 では、パフォーマンス上の理由から、同じ応答で子コレクションを返す機能が削除されました。コレクションをフェッチすると、コレクション データを取得するためのカウントと 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");
}
}
}
}
}
于 2013-08-23T20:56:11.967 に答える