Rally C#:是否可以创建一个新的用户故事和附件? (避免查询用户故事参考)

时间:2016-11-30 21:52:53

标签: c# rest rally

请耐心等待我已经完成了以下示例:How to Add an Attachment to a User Story using Rally REST .NET

但是,示例代码需要查询来标识最新的用户素材参考。该示例说明了如何向现有用户素材添加附件。我想完成:创建一个新的用户故事和附件。

这是我的方法。

        public void createUsWithAttachment(string workspace, string project, 
                    string userStoryName, string userStoryDescription){

        //Authenticate with Rally 
        this.EnsureRallyIsAuthenticated();

        //UserStory Setup
        DynamicJsonObject toCreate = new DynamicJsonObject();
        toCreate[RallyField.workSpace] = workspace;
        toCreate[RallyField.project] = project;
        toCreate[RallyField.name] = userStoryName;
        toCreate[RallyField.description] = userStoryDescription;

        //get the image reference - assume that this is where the image lives after being downloaded from Outlook
        String imageFilePath = "C:\\Users\\secret\\...";
        String imageFileName = "file.png";
        String fullImageFile = imageFilePath + imageFileName;
        Image myImage = Image.FromFile(fullImageFile);

        // Convert Image to Base64 format
        string imageBase64String = imageToBase64(myImage, System.Drawing.Imaging.ImageFormat.Png);

        // Length calculated from Base64String converted back
        var imageNumberBytes = Convert.FromBase64String(imageBase64String).Length;

        // DynamicJSONObject for AttachmentContent
        DynamicJsonObject myAttachmentContent = new DynamicJsonObject();
        myAttachmentContent["Content"] = imageBase64String;

        try
        {
            //create user story
            CreateResult createUserStory = _api.Create(RallyField.hierarchicalRequirement, toCreate);

            //create attachment
            CreateResult myAttachmentContentCreateResult = _api.Create("AttachmentContent", myAttachmentContent);
            String myAttachmentContentRef = myAttachmentContentCreateResult.Reference;
            Console.WriteLine("Created: " + myAttachmentContentRef);

            // DynamicJSONObject for Attachment Container
            DynamicJsonObject myAttachment = new DynamicJsonObject();
            //Note the below commented line
            /*myAttachment["Artifact"] = ;*/ 
            myAttachment["Content"] = myAttachmentContentRef;
            myAttachment["Name"] = "AttachmentFromREST.png";
            myAttachment["Description"] = "Attachment Desc";
            myAttachment["ContentType"] = "image/png";
            myAttachment["Size"] = imageNumberBytes;

            //create attachment
            CreateResult myAttachmentCreateResult = _api.Create("Attachment", myAttachment);
        }
        catch (WebException e)
        {
            Console.WriteLine(e.Message);
        }
    }

在上面的注释行中,我需要获得对我可以做的创建的用户故事的引用,但这需要另一种方法来获取我拥有的用户故事。 但是我想知道这是否可以通过类似于我们如何使用dynamicJsonObject登台创建用户故事的方式来完成。 我觉得这样的事情会起作用,但我很难过。

        DynamicJsonObject toCreate = new DynamicJsonObject();
        toCreate[RallyField.workSpace] = workspace;
        toCreate[RallyField.project] = project;
        toCreate[RallyField.name] = userStoryName;
        toCreate[RallyField.description] = userStoryDescription;
        toCreate["Content"] = imageToBase64;
        CreateResult createUserStory = _api.Create(RallyField.hierarchicalRequirement, toCreate);

我上面的假设没有按计划进行,我想知道是否有办法用附件创建一个新的用户故事,而不必像提供的链接中的示例中那样清楚地查询用户参考。 感谢并从链接中的示例中获知作者。

1 个答案:

答案 0 :(得分:3)

您应该已经拥有了从创建结果中关联它所需的内容:

myAttachment["Artifact"] = createUserStory.Reference;