2014-01-31 49 views

回答

1

Web Services API项目对象没有引用它的所有数据属性。如果整个项目指的是项目中的所有工件,迭代,发布,修订历史等,那么WS API中没有单个对象可以返回整个项目。单个请求不会这样做。如果您要导出工件,通常必须一次导出一种类型的工件。这当然可以用rally_api来完成,但是你遇到的限制并不是特定于这个ruby gem,而是WS API,它没有提供导出与项目相关的所有数据的方法。

下面是在同一工作区内将缺陷从一个项目移动到另一个项目的示例。如果原始项目和指定项目位于不同的工作空间中,这将不起作用,因为Web服务请求的范围限定在工作空间。如果要包含项目中的所有缺陷,您可以通过格式化的标识注释查询。我建议在移动它们之前在一个工件上测试代码。

config = {:base_url => "https://rally1.rallydev.com/slm"} 
config[:username] = "[email protected]" 
config[:password] = "secret" 
config[:workspace] = "W1" 
config[:project] = "Top Project" 
config[:version] = "v2.0" 

    @rally = RallyAPI::RallyRestJson.new(config) 
    query1 = RallyAPI::RallyQuery.new() 
    query1.type = :project 
    query1.fetch = "Name,ObjectID" 
    query1.workspace = {"_ref" => "https://rally1.rallydev.com/slm/webservice/v2.0/workspace/12352608129.js" } 
    query1.query_string = "(Name = \"My Project 2\")" 
    results1 = @rally.find(query1) 
    project = results1.first 
    puts project 

    query2 = RallyAPI::RallyQuery.new() 
    query2.type = :defect 
    query2.fetch = "Name,FormattedID,Project" 
    query2.workspace = {"_ref" => "https://rally1.rallydev.com/slm/webservice/v2.0/workspace/12352608129.js" } 
    query2.query_string = "(FormattedID = DE74)" 
    results2 = @rally.find(query2) 
    results2.each do |d| 
     d.read 
     field_updates = {"Project" => project} 
     d.update(field_updates) 
     puts "Defect #{d["FormattedID"]} was moved to project: #{d["Project"]}" 
    end 

如果您想要将工件导出拉力赛,到一个csv文件使用rally_api这也是可能的,但我没有一个工作的例子。

+0

如何导出某人,例如所有的用户故事?那可能吗? –

+0

是的,这是可能的。我用一个将缺陷从一个Rally项目移到另一个项目的例子更新了这篇文章。 – nickm