有用户最近提出这个需求:

通过工作项定制,新增一个字段用以保存项目Bug的“影响版本”信息,但是需要从当前团队项目的服务器生成纪录中获取版本的选项,类似默认模板中的“发现版本”和“集成版本”。

在使用TFS的工作项时,会看到两个这样的字段“发现版本”和“集成版本”,这两个字段自动获取当前团队的服务器生成历史纪录,如下图:

按照TFS的系统设计,服务器生成的历史纪录是保存在全局列表(Global List)设置中的,工作项自动读取全局列表中对应的信息。下面的代码是一个团队项目集合的全局列表数据示例:

<?xml version="1.0" encoding="utf-8"?>
<gl:GLOBALLISTS xmlns:gl="http://schemas.microsoft.com/VisualStudio/2005/workitemtracking/globallists">
  <GLOBALLIST name="Builds - Scrum2015">
    <LISTITEM value="&lt;无&gt;" />
    <LISTITEM value="TosProject/V1.03" />

</GLOBALLIST>
  <GLOBALLIST name="Builds - CMMI2015">
    <LISTITEM value="WebApplication1Main/WebApplication1Main_20150916.1" />
    <LISTITEM value="Solution1/Solution1_20150916.1" />
  </GLOBALLIST>
</gl:GLOBALLISTS>

我们再来分析下面的工作项字段定义,看看“集成版本”字段是如何以全局列表作为自己的选项的:

<FIELD name="集成版本" refname="Microsoft.VSTS.Build.IntegrationBuild" type="String" reportable="dimension">
        <SUGGESTEDVALUES expanditems="true">
          <LISTITEM value="&lt;无&gt;" />
        </SUGGESTEDVALUES>
</FIELD>

从上面的字段定义可以看到,集成版本并没有设置可选值,但是当团队项目运行了服务器生成以后,系统会自动在该字段中添加可选值,就像下面高亮部分的代码:

<FIELD name="集成版本" refname="Microsoft.VSTS.Build.IntegrationBuild" type="String" reportable="dimension"> 

        <SUGGESTEDVALUES expanditems="true" filteritems="excludegroups">
          <GLOBALLIST name="Builds - Scrum2015" />
        </SUGGESTEDVALUES>
        <SUGGESTEDVALUES expanditems="true">
          <LISTITEM value="&lt;无&gt;" />
        </SUGGESTEDVALUES>
</FIELD>

需要特别注意,这是系统自动添加的,并且根据团队项目名称的不同,在每个团队项目中所有包含了“集成版本”的的工作项,例如需求、Bug、问题等工作项中的“集成版本”字段。

通过上面的分析,可以看出“集成版本”字段依据团队项目名称,自动抽取全局列表中的对应数据,作为自己的可选项。

那么,是否可以在工作项定义中,使用团队项目名称作为变量呢?答案是不能!目前最新版本的TFS 2015并不支持在字段定义中使用变量。如果需要实现上述功能,可以使用字段定义中的规则“When”。下面介绍如何实现When实现动态读取全局变量中的数据:

例如我们新增加了一个字段”影响版本“(MyCompany.Requirements.EffectedVersion),需要为这个字段设置选项,选项的来源为当前团队项目的持续集成版本。下面是字段定义的示例代码:

<FIELD name="影响版本" refname="Microsoft.VSTS.Build.EffectedVersion" type="String" reportable="dimension">
        <WHEN field="System.TeamProject" value="CMMI2015">
          <SUGGESTEDVALUES expanditems="true">
            <GLOBALLIST name="Builds - CMMI2015" />
          </SUGGESTEDVALUES>
        </WHEN>
        <WHEN field="System.TeamProject" value="Scrum2015">
          <SUGGESTEDVALUES expanditems="true">
            <GLOBALLIST name="Builds - Scrum2015" />
          </SUGGESTEDVALUES>
        </WHEN>

        <!--需要按照上面的规律,将集合中的所有团队项目罗列出来-->
        <SUGGESTEDVALUES expanditems="true">
          <LISTITEM value="&lt;无&gt;" />
        </SUGGESTEDVALUES>
      </FIELD>

然后,通过下面的命令,将全局列表上传的TFS团队项目集合中

C:\>witadmin importgloballist /collection:http://tfs2015cn:8080/tfs/defaultcollection /f:g.xml

下面是成以后的截图示例:

http://www.cnblogs.com/danzhang/  ALM MVP 张洪君

在定制工作项时,把“团队项目”作为变量获取生成版本信息的更多相关文章

  1. 安装LR11 时,安装Microsoft Visual c++2005 sp1运行时组件,就会提示命令行选项语法错误,键入“命令/?”可获取帮肋信息

    1.进入loadrunner-11\Additional Components\IDE Add-Ins\MS Visual Studio .NET 2.安装:LRVS2005IDEAddInSetup ...

  2. 在Azure DevOps Server (TFS) 中修改团队项目名称

    概述 [团队项目]: 在Azure DevOps Server (原名TFS)中,团队项目(Team Project)是一个最基本的数据组织容器,包含了一个团队或者信息系统中的所有信息,包括源代码.文 ...

  3. #VSTS日志# 2015/12/10 – 终于可以删除工作项了

    最近的更新不少,废话少说,直接上干货 定制工作项字段 本周的更新后,所有的用户都可以在vsts上直接给工作项添加字段了,具体内容包括– 添加新字段(日期,字符串,整形,数字)– 字段显示位置配置– 过 ...

  4. TFS代码变更和工作项关联,为系统变更提供完美的跟踪轨迹

    TFS是微软的应用软件生命周期管理(ALM)的解决方案产品,相比我们常见的一些ALM产品,例如HP ALM, IBM Rational, Atlanssian Jira等,其最大的区别在于TFS将软件 ...

  5. 使用SVN+Axure RP 8.0创建团队项目

    一.使用到的工具:VisualSVN Server --SVN服务器:https://www.visualsvn.com/server/ Axure RP 8.0  :http://www.downc ...

  6. TFS中工作项的定制-修改面板

    上一篇文章我们讲到了<TFS 中工作项的订制-修改工作流>,工作流只要我们设计出来,就可以进行定制修改了.这次通过简单的案例,了解一下,工作项的面板如何定制.     1.软件准备     ...

  7. TFS 中工作项的定制-修改工作流

    我们都会用到TFS中的工作项.一般来说,最主要的会用到任务.bug这些工作流来进行项目管理里.但我们发现,实际上,有些模板中的工作流并不能完全符合我们的需要,因此我们会进行工作流的定制操作.下面就会通 ...

  8. yousa_team团队项目——兼职平台网站 工作进度

    4月31 初步设计网站界面,功能以及数据库关系图 网站包括登陆注册界面,商家和学生都有个人主页,查看兼职信息界面和反馈界面,管理员有查看反馈界面,查看兼职市场,管理后台界面 登录注册界面实现用户的登陆 ...

  9. 使用Visual Studio Team Services敏捷规划和项目组合管理(二)——VSTS中的工作项

    使用Visual Studio Team Services敏捷规划和项目组合管理(二)--VSTS中的工作项 1.通过project/team下拉菜单选择MyHealthClinic\Web,导航到W ...

随机推荐

  1. Train-Alypay-Cloud:蚂蚁大数据平台培训开课通知(第三次)

    ylbtech-Train-Alypay-Cloud:蚂蚁大数据平台培训开课通知(第三次) 1.返回顶部 1. 您好! 很高兴通知您,您已经成功报名将于蚂蚁金服计划在2018年2月28日- 2018年 ...

  2. Centos生成SSL证书的步骤

    1.yum install openssl安装openssl组件2.生成KEY的流程步骤如下 1. 创建根证书密钥文件(自己做CA)root.key: openssl genrsa -out root ...

  3. 微信JS接口汇总及使用详解

    这篇文章主要介绍了微信JS接口汇总及使用详解,十分的全面.详尽,包含分享到朋友圈,分享给朋友,分享到QQ,拍照或从手机相册中选图,识别音频并返回识别结果,使用微信内置地图查看位置等接口,有需要的小伙伴 ...

  4. php 文件缓存类

    //文件缓存类 class FileCache { private $cacheTime = 3600; //默认缓存时间 秒 private $cacheDir = './filecache'; / ...

  5. 线程等待 Join()方法

    Join()方法是让一个线程等待另一个线程的完成 下面看个例子: package project11; public class TestJoin extends Thread { public vo ...

  6. CVE-2018-8420 漏洞复现

    影响的 Windows 版本: Microsoft Windows 10 Version 1607 for 32-bit SystemsMicrosoft Windows 10 Version 160 ...

  7. Django学习---jsonp跨域请求

    jsonp跨域请求 我们通过ajax进行跨域请求的时候,请求发送过去,但是在接受返回数据的时候浏览器会进行拦截. 这是由于浏览器存在同源策略机制,同源策略阻止从一个源加载的文档或脚本获取或设置另一个源 ...

  8. IntelliJ IDEA—IDEA2018.1激活方式

    前言 以前用过2015的版本,后面就没有使用了,现在又重新用起来了,突然发现激活好难,通过网上找破解方式,总算找到了一种可以实现破解的方法了.. 破解方式 本人使用的是使用破解补丁的方式实现破解的,此 ...

  9. AndroidStudio 中怎样查看获取MD5和SHA1值(应用签名)

    曾经在Eclipse中我们获取MD5和SHA1非常easy就找到了例如以下图所看到的: 就能够在Eclipse中看到所须要调试的MD5和SHA1.可是在AndroidStudio中我找了一圈也没有发现 ...

  10. Git----时光穿梭机之撤销修改05

    自然,你是不会犯错,不过现在是凌晨两点,你正在赶一份工作报告,你在readme.txt中添加了一行: $ cat readme.txtGit is a distributed version cont ...