RallyAPI: How do I create a UserStory and relate it to a Feature?

允我心安 提交于 2019-12-23 23:34:07

问题


So, I'm writing an app to 'flesh out' new clients in Rally. It will have tools to create templates which will add first:

  1. add a 'Feature'
  2. add 'UserStories' under that 'Feature'
  3. add 'Tasks' under those 'UserStories' individually

I have figured out step 1. But how to associate anything I can't figure out from the horrible and cryptic documentation. Here's what I have so far:

 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);
        }

Running this creates both, but no association happens. I get a warning:

Ignored JSON element hierarchicalrequirement.WorkProduct during processing of this request.

Why did it arbitrarily ignore this?...


回答1:


It ignored WorkProduct because WorkProduct is not a valid field on HierarchicalRequirement. The field you want to specify to set the feature parent of a story is called PortfolioItem.

toCreate["PortfolioItem"] = Ref.GetRelativeRef(createFeatureResult.Reference);

Also, object relationships are specified as in WSAPI as refs (/type/id) so you can just directly pass in the reference from the createFeatureResult.

Sorry you're finding the api to be frustrating. It definitely has some weird dark corners but once you use it a bit and get a feel for how the various domain objects are related I think you'll find it to be quite powerful and consistent.



来源:https://stackoverflow.com/questions/33830539/rallyapi-how-do-i-create-a-userstory-and-relate-it-to-a-feature

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!