2014-01-31 52 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