我正在尝试在Rally的API中获取每个项目的用户列表。似乎在请求中放置项目ID并没有做任何限制结果的事情。我好像在订阅每个人。没有' WorkSpace'也不是'项目'似乎工作。 (我真的想让每个项目获得每个用户。我知道如何返回项目列表,但用户是个问题)
这是我到目前为止所拥有的:
Rally.RestApi.Request userRequest = new Request("user");
userRequest.Workspace = WebConfigurationManager.AppSettings["RallyAPIWorkspaceID"];
userRequest.Project = "https://rally1.rallydev.com/slm/webservice/v2.0/project/XXXXXXXXX";
userRequest.Query = new Query("");
QueryResult queryUserResults = restApi.Query(userRequest);
List<SelectListItem> AvailableUsers = new List<SelectListItem>();
foreach (var result in queryUserResults.Results)
{
SelectListItem selectListItem = new SelectListItem();
selectListItem.Text = result["DisplayName"]; // userName
selectListItem.Value = result["_ref"]; // Reference
AvailableUsers.Add(selectListItem);
}
答案 0 :(得分:1)
WS API中的用户对象没有Project或Workspace属性,userRequest.Query = new Query("Project", Query.Operator.Equals, someProjectRef)
或userRequest.Project
无法帮助您限制请求。
也许你想查询ProjectPermission对象。 ProjectPermission从abstract UserPermission对象继承User属性(对用户的引用)。这不是特定于Rally .NET或任何其他语言工具包。
由于ProjectPermission查询不能被Project绑定,并且将返回所有ProjectPermission对象,因此您必须迭代结果并获得您感兴趣的那些。 与大多数WSAPI端点不同,ProjectPermissions端点不接受任何查询过滤器。由于这个问题,它可能是一个危险的查询。对于拥有数千个用户和数百个项目的工作区,点击此端点最终可能会创建一个可以访问数十万行的数据库查询。