2016-11-30 53 views
2

請耐心等待我已經通過示例:How to Add an Attachment to a User Story using Rally REST .NETRally C#:是否有可能創建一個新的用戶故事以及附件? (避免查詢用戶故事參考)

但是,示例代碼需要查詢來標識最新的用戶故事引用。該示例演示瞭如何將附件添加到現有的用戶故事。我想完成:創建一個新的用戶故事和一個附件。

這是我的方法。

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

我上面的假設是不會按計劃進行,我想知道是否有一種方式來創建帶有附件的新的用戶故事,而不必查詢的例子一樣整潔所示,將其與用戶故事參考鏈接提供。 感謝作者和鏈接中的示例。

回答

3

你應該已經有你需要把它從創建結果相關聯什麼:

myAttachment["Artifact"] = createUserStory.Reference; 
+0

謝謝先生。 。 我也在研究爲用戶故事添加不同的附件類型。 (.jpeg,.java,.sql,....) 有關如何執行此操作的任何提示? –

+0

內容都必須以base64編碼,所以你只需要正確設置Name和ContentType,你應該很好。 –

+0

Hello Kyle:關於如何上傳附件集並關聯用戶故事的任何想法。 我想遍歷包含我的附件的目錄,並將每個附件轉換爲base64。 我只是堅持如何將我的目錄中的每個附件上傳到用戶故事。 –

相關問題