使用C#,如何设置Rally weblink字段?

时间:2013-08-26 17:52:10

标签: c# .net rally

以下是我正在尝试更新的字段的屏幕截图:

enter image description here

如何更新网址字段?

1 个答案:

答案 0 :(得分:0)

WebLink类型字段由两部分组成:LinkID和DisplayString。为了设置LinkID(对应于屏幕截图中的变量$ {id},DisplayString也需要设置为空字符串。

以下是使用Rally .NET REST工具包的完整代码示例:

using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using Rally.RestApi;
using Rally.RestApi.Response;

namespace aRestApp_CollectionOfTasks
{
    class Program
    {
        static void Main(string[] args)
        {
            //Initialize the REST API
            RallyRestApi restApi;
            restApi = new RallyRestApi("user@co.com", "secret", "https://rally1.rallydev.com", "v2.0");

            //Set our Workspace and Project scopings
            String workspaceRef = "/workspace/1111"; //please replace this OID with an OID of your workspace 
            String projectRef = "/project/2222";     //please replace this OID with an OID of your project
            bool projectScopingUp = false;
            bool projectScopingDown = true;

            Request storyRequest = new Request("Defect");


            storyRequest.Workspace = workspaceRef;
            storyRequest.Project = projectRef;
            storyRequest.ProjectScopeUp = projectScopingUp;
            storyRequest.ProjectScopeDown = projectScopingDown;

            storyRequest.Fetch = new List<string>()
                {
                    "Name",
                    "_ref",
                    "c_JiraLink"
                };

            storyRequest.Query = new Query("FormattedID", Query.Operator.Equals, "DE170");       
            QueryResult queryStoryResults = restApi.Query(storyRequest);

            foreach (var s in queryStoryResults.Results)
            {
               Console.WriteLine(" Name: " + s["Name"] + " JiraLink's DisplayString: " + s["c_JiraLink"]["DisplayString"] + " JiraLink's LinkID: " + s["c_JiraLink"]["LinkID"]);  
               DynamicJsonObject toUpdate = new DynamicJsonObject();
               DynamicJsonObject myLink = new DynamicJsonObject();
               myLink["LinkID"] = "NM-3";
               myLink["DisplayString"] = "";
               toUpdate["c_JiraLink"] = myLink;

               OperationResult updateResult = restApi.Update(s["_ref"], toUpdate);  
            }
        }
    }
}

请注意,这与使用浏览器的REST客户端设置WebLink类型的LinkID的更一般示例没有区别。

方法:POST

网址:

https://rally1.rallydev.com/slm/webservice/v2.0/defect/3807704995?key=abc123...

请求正文:

{
"defect":
{
"c_JiraLink":{
"DisplayString":"",
"LinkID":"NM-2"
}
}
}