点击上方“中兴开发者社区”,关注我们
每天读一篇一线开发者原创好文
一、问题的提出
微软TFS系统基于Web界面,提供完整的需求任务管理功能,并能提供很好的界面呈现。但是在TFS中每个人都可以去修改需求的信息,如果所有需求都根据TFS进行跟踪,很容易发生需求被误修改的情况。
为了解决这个问题,项目上继续使用Excel表进行项目需求的跟踪,此表我们称之为PB表。当有新的需求添加后,由需求管理员将需求填写到PB表中,然后通知到各领域的APO,各领域APO梳理PB表,将表中的需求添加到TFS中。
每周每个APO都需要花一两个小时时间同步PB表和TFS中的需求,保证两者的一致性,这个工作比较简单,但是却非常重要,出错就可能导致需求漏开发,影响版本进度。
一种能够简化PB表和TFS同步的工具变得非常重要。
二、解决思路
我们的解决思路就是利用TFS的RestAPI接口实现对TFS中需求任务的管理,主要实现功能:
1、能够比较TFS和PB表中的需求,给出两者之间的差异;
2、能够将PB表中的任务批量导入到TFS中;
2.1 TFS的RestAPI接口
TFS的官网中详细的描述了TFS的RestAPI接口,具体请参考:
https://www.visualstudio.com/zh-cn/docs/integrate/api/overview
分析了一下我们的需求:
1、工作项目:我们必须要知道我们的项目,也就是需要在TFS中查询出当前用户可以访问的项目列表;
2、查询需求列表:TFS提供了用户自定义查询功能,我们可以预先在TFS上创建查询项,然后让工具直接根据查询项执行查询。当然我们也可以直接使用TFS的查询接口,这个太繁琐了,不建议使用。
根据以上需求,本次主要使用到以下TFS接口:
编号 | 需求 | 实现 |
1 | 获取项目列表 | 接口参考可以从上文中的网页中找到,不赘述。通过GET方法就可以获得项目列表 |
2 | 获取用户预设的查询项 | 获取用户查询项,用户可以在程序界面中选择项目和查询项,根据指定的查询项进行任务搜索。 |
3 | 执行查询 | 执行指定的查询项,执行查询,地址格式为 :项目TFS地址+ _apis/wit/wiql/{query_id}?api-version={version} 此查询返回的是任务ID,接下来需要根据任务ID查询详情 |
4 | 查询任务详情 | 通过GET方法访问 项目TFS地址+_apis/wit/workitems?ids={id1},{id2}&api-version=1.0 可以获取到指定的任务ID对应的详情,注意每次最多只能查询100个任务。 |
2.2 应用程序提供功能
Windows的用户都比较习惯使用图形界面程序,本着傻瓜化的原则,本工具需要有图形化界面,简单起见,本程序基于wxWidgets库开发。
程序需要呈现以下功能:
1、能够让用户填写TFS服务器信息,因为每个项目对应的TFS服务器可能是不同的;
2、能够让用户填写访问TFS服务器的账号和密码;
3、能够让用户查询TFS中用户所在项目的查询项,并根据此查询项执行查询;
4、能够解析本地的PB表数据,并根据配置进行需求过滤;
5、能够比较PB表和TFS中的需求列表,明确两者之间的差异;
6、能够批量将PB表需求导入到TFS系统中。
三、实践情况
应用程序界面如下:
3.1.1 PB表选择
用户可以在PB表栏目中选择本地的需求列表,文件格式为Excel,例如本项目的PB表格式如下,每个需求都单独占用一行:
另外需要用户指定PB表配置文件,此配置文件用户描述如何从Excel表中筛选数据,
例如V6.**.**版本的配置文件内容如下:
通过以上的过滤条件,就可以得到指定领域的需求。
3.1.2 TFS参数配置
访问TFS服务器需要使用如下信息:
信息 | 说明 |
地址 | TFS服务器地址 |
工作集合 | tfs/WX |
用户密码 | 访问TFS使用的认识在线用户密码 |
项目 | 用户需要访问的项目 |
查询项 | 用户的在项目中建立的查询项 |
3.1.3 比较PB表与TFS的差异
PB表信息和TFS信息填充完成后,点击“比较”按钮,完成后会弹出对话框:
点击是查看比较结果(注意Firefox默认是能显示的,其他浏览器可能无法显示),以Web页面方式显示出PB表和TFS的需求数和不匹配的条目:
3.1.4 同步PB需求到TFS
PB表信息和TFS信息填充完成后,点击“同步到TFS”按钮,此时会执行比较,然后弹出对话框显示PB表中未更新到TFS上的需求列表:
选中需要同步的需求,点击“同步”按钮就可以完成PB表数据到TFS的同步。
4.效果评价
未使用工具前,需要找到PB表中未更新的需求,然后逐个到界面中添加,操作起来很慢,估计30个需求需要15分钟;使用工具后30秒完成同步。
另外一个工作就是比较PB表和TFS的差异,以前要么人工一个一个需求对,要么通过Excel进行进算,使用工具后,几秒钟后就可以在界面中看到PB表和TFS的差异,大大简化了工作。
5.推广建议
使用TFS的都可以通过本工具进行比较。
6.参考资料
TFS RestAPI接口文档说明:https://www.visualstudio.com/zh-cn/docs/integrate/api/overview