【问题标题】:Create Defect in Rally using REST API and C#使用 REST API 和 C# 在 Rally 中创建缺陷
【发布时间】:2018-01-26 00:00:42
【问题描述】:

我正在尝试使用 C# 以编程方式在 Rally 中创建一个缺陷。下面是我的代码,我得到的错误是

Error in creating defect!!!
Cannot parse object reference from "Unspecified"

代码:

       RallyRestApi restApi;
       restApi = new RallyRestApi(webServiceVersion: "v2.0");
       //after successful authentication...

       String workspaceRef = "/workspace/12345";
       String projectRef = "/project/78321";  


        DynamicJsonObject badDefect = new DynamicJsonObject();
        newDefect["Name"] = "Defect " + DateTime.Now;
        newDefect["Project"] = projectRef ;
        newDefect["Environment"] = "test branch";
        newDefect["c_DefectSourceNEW"] = "old";
        newDefect["Severity"] = "minor";         
        newDefect["Release"] = "Unspecificed";

        CreateResult createResult = restApi.Create("Defect", newDefect);

        if (createResult.Success == true)
        {
            Console.WriteLine("Defect created Successfully!!!");
        }
        else 
        {
            Console.WriteLine("Error in creating defect!!!");
        }

        foreach (string s in createResult.Errors)
        {
            Console.WriteLine(s);
        }

有人能建议我可能做错了什么吗?通常是正确的方法来为缺陷指定“发布”值???

【问题讨论】:

    标签: rally


    【解决方案1】:

    wsapi 中的所有对象关系都由 refs 表示。因此,您只需将值设置为其 ref 而不是其名称,就像您已经在使用工作区和项目一样。

    【讨论】:

    • 感谢凯尔的评论。你的意思是 Defect.Release 我应该像 newDefect["Release"] = "Release/Unspecifed" 那样做?还是我应该使用发布标识符?我看到有一种方法可以获取 Project ID 和 Workspace ID 但不能获取 Release ?
    • 是:newDefect["Release"] = "/release/12345";您必须事先进行查询才能找到您要查找的特定版本。
    【解决方案2】:

    感谢凯尔的意见。由于发布 ID 是强制性的,我通过以下方式解决了发布输入:

      Request reRequest = new Request("Release");
                reRequest.Workspace = workspaceRef;
                reRequest.Query = new Query("Project", Query.Operator.Equals, projectRef);
                QueryResult queryResult = restApi.Query(reRequest);
                string reprojectRef = null;
                foreach (DynamicJsonObject result in queryResult.Results)
                {
    
                    reprojectRef = result["_ref"];
                    Console.WriteLine(reprojectRef);
    
                    Console.WriteLine("Name: " + result["Name"]);
    
                    if (result["Name"] == "MyReleaseName")
                    {
                        newDefect["Release"] = result["_ref"];
    
                    }
    
                }
    

    【讨论】:

      猜你喜欢
      • 2012-01-14
      • 1970-01-01
      • 1970-01-01
      • 2013-07-29
      • 1970-01-01
      • 1970-01-01
      • 2019-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多