在集会中验证用户故事

时间:2014-10-07 14:25:27

标签: rally

我们要求强制用户将用户故事ID放在每个SVN提交注释中。将有一个precommit钩子,它将检查注释是否以User Story编号开头(只是一个正则表达式模式匹配)。验证结束后,我们必须验证此用户故事是否确实存在于集会中。

我试图从集会宁静的API指南中获得一些有用的想法,但无法成功。我无力地认识到它与HierarchialRequirement有关,但这种知识还不够。

请告诉我如何说出用户故事编号(格式为US12345)对于给定工作区是否有效。

@nickm使用restful服务检索故事信息存在问题。 如果我给出正确的用户故事ID,例如US12345,它可以通过获取信息按预期工作。 但是当我给出像US123451111111这样的无效用户ID时,它会抛出解析错误("无法解析US123451111111")。对于提供给restful服务的所有无效故事ID,情况并非如此。如果我给出US12345cccccc(一个有效的storyID后跟aplhabets),我仍然得到正确的用户故事US12345的回复。

请告知如何解决此问题。

谢谢, VENU

1 个答案:

答案 0 :(得分:0)

以下是基于Rally REST toolkit for Ruby的Ruby脚本示例,您可以对其进行自定义,以便precommit挂钩调用它来查看故事是否实际存在于工作空间中

编写时,需要运行命令行参数,例如

ruby​​ find_story.rb US123

require 'rally_api'

headers = RallyAPI::CustomHttpHeader.new()
headers.name = "find story"
headers.vendor = "Nick M RallyLab"
headers.version = "1.0"

config = {:base_url => "https://rally1.rallydev.com/slm"}
config[:api_key] = "_abc123"
config[:workspace] = "W1"
config[:project] = "Sample Project"
config[:version] = "v2.0"
config[:headers] = headers #from RallyAPI::CustomHttpHeader.new()

unless ARGV.length == 1
  puts "enter one argument, e.g. US123, with no spaces"
  exit
end

story = nil
story_id = ARGV[0]
puts "find story by FormattedID: #{story_id}"

@rally = RallyAPI::RallyRestJson.new(config)

query = RallyAPI::RallyQuery.new()
query.type = :story
query.fetch = "Name,FormattedID,ScheduleState"
query.workspace = {"_ref" => "https://rally1.rallydev.com/slm/webservice/v2.0/workspace/111" } 
query.query_string = "(FormattedID = \"#{story_id}\")"  
result = @rally.find(query)

if(result.length > 0)
    puts "found the story"
    story = result.first
    puts "FormattedID: #{story["FormattedID"]}, Name: #{story["Name"]}, ScheduleState: #{story["ScheduleState"]}"
else
   puts "did not find a story with FormattedID #{story_id}" 
end

该工具包提供了一个语法糖,但下面有hierarchicalrequirement端点,通过FormattedID查询

(FormattedID = US123)

其中1111应替换为/workspace/1111中工作区的对象ID:

https://rally1.rallydev.com/slm/webservice/v2.0/hierarchicalrequirement?workspace=https://rally1.rallydev.com/slm/webservice/v2.0/workspace/1111&query=(FormattedID%20%3D%20US123)&start=1&pagesize=20

您可以直接在浏览器中测试此网址。如果您当前未在同一浏览器的另一个选项卡中登录Rally,系统将提示您登录。