Rally API:如何创建用户故事并将其与功能相关联?
RallyAPI: How do I create a UserStory and relate it to a Feature?
因此,我正在为 Rally 中的 'flesh out' 新客户编写一个应用程序。它将有创建模板的工具,首先添加:
- 添加一个'Feature'
- 在 'Feature' 下添加 'UserStories'
- 在 'UserStories' 下单独添加 'Tasks'
我已经弄清楚了第 1 步。但是如何关联我无法从可怕而神秘的文档中弄清楚的任何内容。这是我目前所拥有的:
var FeatureToAdd = _featureRepository.GetFeatures().FirstOrDefault(x => x.Id == 2);
// Initialize the REST API. You can specify a web service version if needed in the constructor.
RallyRestApi restApi = GetRallyRestApi();
//Create an item
DynamicJsonObject toCreate = new DynamicJsonObject();
toCreate["Name"] = FeatureToAdd.Name;
toCreate["Description"] = FeatureToAdd.Description;
// important to which this belongs, but I no ID I ever use works
//toCreate["Workspace"] = "/workspace/" + WebConfigurationManager.AppSettings["RallyAPIWorkspaceID"];
//toCreate["Project"] = "/project/XXXXX";
//toCreate["Iteration"] = "/iteration/XXXXXX";
// create feature - feature is under PortfolioItem
CreateResult createFeatureResult = restApi.Create("PortfolioItem/Feature", toCreate);
// scrape ID off the end of the reference
var pureId = createFeatureResult.Reference.Substring(createFeatureResult.Reference.LastIndexOf('/') + 1);
// add UserStories
foreach (UserStory u in FeatureToAdd.UserStories)
{
toCreate = new DynamicJsonObject();
toCreate["Name"] =u.Name;
toCreate["Description"] = u.Description;
toCreate["WorkProduct"] = "PortfolioItem/Feature/" + pureId;
//toCreate["WorkProduct"] = createFeatureResult.Reference;<- tried this too
// hierarchicalrequirement = UserStory
CreateResult createUserStoryResult = restApi.Create("hierarchicalrequirement", toCreate);
}
运行 这会创建两者,但不会发生关联。我收到警告:
Ignored JSON element hierarchicalrequirement.WorkProduct during processing of this request.
为什么它会随意忽略这个?...
它忽略了 WorkProduct,因为 WorkProduct 不是 HierarchicalRequirement 上的有效字段。您要指定以设置故事的特征父项的字段称为 PortfolioItem。
toCreate["PortfolioItem"] = Ref.GetRelativeRef(createFeatureResult.Reference);
此外,对象关系在 WSAPI 中指定为 refs (/type/id),因此您可以直接从 createFeatureResult 传入引用。
抱歉,您发现 api 令人沮丧。它肯定有一些奇怪的暗角,但是一旦你稍微使用它并了解各种域对象之间的关系,我想你会发现它非常强大且一致。
因此,我正在为 Rally 中的 'flesh out' 新客户编写一个应用程序。它将有创建模板的工具,首先添加:
- 添加一个'Feature'
- 在 'Feature' 下添加 'UserStories'
- 在 'UserStories' 下单独添加 'Tasks'
我已经弄清楚了第 1 步。但是如何关联我无法从可怕而神秘的文档中弄清楚的任何内容。这是我目前所拥有的:
var FeatureToAdd = _featureRepository.GetFeatures().FirstOrDefault(x => x.Id == 2);
// Initialize the REST API. You can specify a web service version if needed in the constructor.
RallyRestApi restApi = GetRallyRestApi();
//Create an item
DynamicJsonObject toCreate = new DynamicJsonObject();
toCreate["Name"] = FeatureToAdd.Name;
toCreate["Description"] = FeatureToAdd.Description;
// important to which this belongs, but I no ID I ever use works
//toCreate["Workspace"] = "/workspace/" + WebConfigurationManager.AppSettings["RallyAPIWorkspaceID"];
//toCreate["Project"] = "/project/XXXXX";
//toCreate["Iteration"] = "/iteration/XXXXXX";
// create feature - feature is under PortfolioItem
CreateResult createFeatureResult = restApi.Create("PortfolioItem/Feature", toCreate);
// scrape ID off the end of the reference
var pureId = createFeatureResult.Reference.Substring(createFeatureResult.Reference.LastIndexOf('/') + 1);
// add UserStories
foreach (UserStory u in FeatureToAdd.UserStories)
{
toCreate = new DynamicJsonObject();
toCreate["Name"] =u.Name;
toCreate["Description"] = u.Description;
toCreate["WorkProduct"] = "PortfolioItem/Feature/" + pureId;
//toCreate["WorkProduct"] = createFeatureResult.Reference;<- tried this too
// hierarchicalrequirement = UserStory
CreateResult createUserStoryResult = restApi.Create("hierarchicalrequirement", toCreate);
}
运行 这会创建两者,但不会发生关联。我收到警告:
Ignored JSON element hierarchicalrequirement.WorkProduct during processing of this request.
为什么它会随意忽略这个?...
它忽略了 WorkProduct,因为 WorkProduct 不是 HierarchicalRequirement 上的有效字段。您要指定以设置故事的特征父项的字段称为 PortfolioItem。
toCreate["PortfolioItem"] = Ref.GetRelativeRef(createFeatureResult.Reference);
此外,对象关系在 WSAPI 中指定为 refs (/type/id),因此您可以直接从 createFeatureResult 传入引用。
抱歉,您发现 api 令人沮丧。它肯定有一些奇怪的暗角,但是一旦你稍微使用它并了解各种域对象之间的关系,我想你会发现它非常强大且一致。