在应用生命周期管理(ALM)领域中,存在各种不同的管理模型,如:传统的瀑布(waterfall)模型,CMMI模型以及最近一些年开始流行的敏捷模型,Scrum模型,kanban等等。每个不同的管理模型都有一些固定的流程,角色,活动和内容模版等内容,在ALM工具中,一般会使用不同的“过程模版”来提供给团队使用,在团队创建项目的时候可以选择某个特定的模版来支持自己的应用开发过程。但实际情况是,每个团队的真实操作场景都不一样,大家都有不同的说法,不同的工作流和不同的工作习惯,比如:我曾经和一个大型开发团队聊了一个小时它们的“项目”流程,最后发现他们所说的“项目”实际是一个个的条目化需求。这种情况下,团队往往会要求在自己的模版中进行修改,以便大家可以按照自己的习惯来进行操作。也许你觉得:让他们改变一下习惯,把原来叫做“项目”的东西改叫“需求”不就完了,其实事情真的没有那么简单,让一个人改变习惯尚且需要时日,让100个人改变习惯那就是个大工程了(甚至可以上升到“组织变革”的层面了)。而且,工具永远应该是人的辅助,所以多数情况下我们需要工具来适应人,而不能被工具绑架。

在TFS/VSTS中,默认提供了3种不同的过程模版,分别是:CMMI,敏捷和Scrum。

很多团队在开始的时候都很迷惑,我到底该选择哪个模版,我现在想做敏捷,但是公司的规范是cmmi;我们有一点Scrum,但不是很规范;到底咋办?我的回答是:模版只是一个起点,一开始的时候先按模版推荐的流程操作,熟练以后慢慢引入自己的实践,这个时候你就需要对这些模版进行定制。

不过说实话,在TFS 2013及以前的版本中的模版定制真心不是件容易的事情,且不说你需要懂得这些模型的各种细节,就是搞定那些复杂的xml和工作流就够你受的。所以,模版定制改进一直是微软TFS的UserVoice上呼声最高的几个feature之一,我们等待了快10年了,现在终于来了。

添加字段

添加字段一直都是我所有客户中最需要的,基本上每个开始使用tfs的用户都会问:我要在这个需求工作项的页面上添加一个“预期完成时间”该怎么办,我之前的回答是这样的:
1. 用Visual Studio下载当前项目的过程模版
2. 安装TFS Power Tools
3. 用TFS Power Tools打开下载的模版
4. 找到你的需求工作项类型,在里面添加字段;哦,别忘了还要添加到页面的布局里面,这个xml应该这么写…
5. 上传到项目中

基本上我还没说完,人家就睡着了 zzz

好吧,看看现在怎么做

  1. 随便打开一个你要添加字段的工作项,点击右上角的…,选择“定制”
  2. 在后台的“过程定制”中点击“新字段”,并填写字段名称和类型
  3. 切换到“布局”,选择显示的位置
  4. 回到原来的工作项页面,刷新页面,搞定

是不是很简单,以后你不用找我这个顾问了,自己搞定吧!(看来我要失业了)

模版的继承关系

看了上面的演示你会觉得很简单,对吧。要实现这个看似简单的功能,tfs后台的改动可不小。首先一个问题,如果我添加了字段,但是希望新创建的项目也可以使用这个字段怎么做,如果我希望在一个项目中的修改可以让其他部分项目使用,另外一部分项目不使用怎么办?

在 TFS 2013及之前版本中,项目模版是存储在项目级数据中的,所以对于一个项目的定制不会影响其他项目的模版,这样带来的好处是不同的项目可以使用不同的流程。不过有些企业希望统一所有的项目流程,在这种架构下就比较麻烦了,你必须一个个项目的更新模版。

新的模版定制功能中考虑到了这个问题,增加了模版继承机制。你可以从内置的Agile/CMMI/Scrum模版中选择一个创建子模版:
– 父模版的改动会自动影响子模版的项目,
– 子模版的改动不会影响父模版,
– 支持父子模版的切换,你可以把使用子模版的项目再切换回父模版;如果之前有些字段中有数据的话,这些数据仍然可以在工作项的历史纪录中找到

下图是后台的“模版定制”界面,你可以看到模版间的继承关系以及每个模版的版本和影响的项目数量。

选择模版后,我们可以将已有的项目迁移到有继承关系的子模版上

也可以对每个模版设置不同的权限,允许部分用户使用特定的模版,或者干脆停用

其他模版定制能力

当然,在工作项中添加字段只是最简单的场景,我们还需要修改字段的内容,比如:添加下拉菜单;修改工作流程,创建全新的工作项类型等等。这些内容在后续的TFS/VSTS更新中会以2-3周的迭代速度按照以下优先级提供

1. 添加字段修改布局(已经发布)
2. 添加下拉菜单和identity字段
3. 修改工作流
4. 添加新的工作项类型
5. 在字段上添加验证规则
6. 导入/导出定制过程模版

这些功能会首先提供给在线版vsts,按照企业版tfs每3个月一次更新速度,如果你自己部署了tfs,也可以更新到你的环境中。

参考:

ALM 博客:Adding a custom field to a work item
http://blogs.msdn.com/b/visualstudioalm/archive/2015/12/10/adding-a-custom-field-to-a-work-item.aspx

ALM博客:Visual Studio Online Process Customization – Update
http://blogs.msdn.com/b/visualstudioalm/archive/2015/07/27/visual-studio-online-process-customization-update.aspx

VSTS在线版
https://www.visualstudio.com

企业版Team Foundation Server下载
https://www.visualstudio.com/products/tfs-overview-vs


请关注微信公众号 devopshub,获取更多关于DevOps研发运维一体化的信息

http://devopshub.cn

#VSTS定制#全新的模版定制能力的更多相关文章

  1. Windows 7 封装篇(一)【母盘定制】[手动制作]定制合适的系统母盘

    Windows 7 封装篇(一)[母盘定制][手动制作]定制合适的系统母盘 http://www.win10u.com/article/html/10.html Windows 7 封装篇(一)[母盘 ...

  2. 鹿定制|Lu Couture|鹿定制·高级西装礼服私享定制品牌|芙蓉中路明城国际1425

    鹿定制|Lu Couture|鹿定制·高级西装礼服私享定制品牌|芙蓉中路明城国际1425 联系我们

  3. 思科WLC5508上传定制Portal展示模版

    1. 登录Cisco设备,获取模板样例登录cisco WLC设备后点击help,打开帮助文档Wireless Tab-->Web Login Page-->External Web Aut ...

  4. 提供VR定制开发、AR定制开发(VR游戏定制、应用定制)

    设置输出路径 添加烘培输出的贴图类型 添加“LightingMap”类型 设置烘培贴图大小和目标贴图位置为“自发光” 设置烘培材质,选择“输出到源” 点击“渲染”即可 24.标准材质贴图的烘培光影处理 ...

  5. VR定制开发、AR定制开发(长年承接虚拟现实、增强现实应用、VR游戏定制开发,北京公司,可签合同)

    Cardboard SDK for Unity的使用 上一篇文章作为系列的开篇,主要是讲了一些虚拟现实的技术和原理,本篇就会带领大家去看一看谷歌的Cardboard SDK for Unity,虽然目 ...

  6. ArcGIS api for javascript——地图配置-定制缩放动画,定制缩放框

    描述 本例展示了当用户放大或缩小地图时如何定义地图的动画.zoomDuration和zoomRate是Dojo动画属性,他们确定了动画的duration和帧刷新的rate .这些属性单位是毫秒,zoo ...

  7. CodeSnippet.info 开源说明 和 环境搭建 (第一版)

    Github开源声明 本网站的代码开源,开源的目的如下 技术分享 希望业内同行贡献代码 希望能够让网站更加安全 开源地址: CodeSnippet开源地址 关于代码贡献 任何人都可以贡献代码,一般在 ...

  8. Docker Dockerfile 定制镜像

    使用 Dockerfile 定制镜像  镜像的定制实际上就是定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像,那么无法重复的问题 ...

  9. 不可或缺的企业OA面临问题,以及解决建议 软件定制开发 森普演示平台

    ---恢复内容开始--- 随着信息时代的来临,企业管理也相应的信息化,各种管理软件相继而出,各行各业的信息化有过成功,也有过失败(注:是以该项目是否达到用户的预期目标而言).据统计在信息化失败的案例中 ...

随机推荐

  1. 怎么解析json串在.net中

    以前知道一种解析json串的方法,觉得有点麻烦.就从别的地方搜到了另一种 string json = vlt.getlist(); JObject jo = JObject.Parse(json); ...

  2. Entity Framework 实体框架的形成之旅--Code First模式中使用 Fluent API 配置(6)

    在前面的随笔<Entity Framework 实体框架的形成之旅--Code First的框架设计(5)>里介绍了基于Code First模式的实体框架的经验,这种方式自动处理出来的模式 ...

  3. RabbitMQ入门教程——工作队列

    什么是工作队列 工作队列是为了避免等待一些占用大量资源或时间操作的一种处理方式.我们把任务封装为消息发送到队列中,消费者在后台不停的取出任务并且执行.当运行了多个消费者工作进程时,队列中的任务将会在每 ...

  4. HTTPS能有效保护用户隐私

    HTTPS就等于HTTP加上TLS(SSL),HTTPS协议的目标主要有三个: http://hovertree.com/menu/webfront/ 数据保密性.保证内容在传输过程中不会被第三方查看 ...

  5. iOS阶段学习第二天笔记(数据类型与进制)

    iOS学习(C语言)知识点整理笔记 1.C语言32个关键字 一.存储相关 1)auto 声明自动变量 2)register 声明寄存器变量 3)volatile 声明的变量在程序执行过程中可能被隐含的 ...

  6. ScrollView与ListView冲突解决

    正 常来说,在ScrollView添加一个ListView后在真机上只会显示ListView的一行多一点,我也不理解为什么会这样,后来我把 ListView的layout_height改成400dip ...

  7. Appcelerator Titanium Studio: JNI_CreateJavaVM missing error

    Mac升级到Yosemite后,Titanium Studio启动不了,报Appcelerator Studio: JNI_CreateJavaVM missing error 之类的错误,重装了Or ...

  8. objective-c 宏定义UIAlertController公用方法

    IOS的方法经常都有更迭,以前弹出框使用 AlertView,现在使用UIAlertController AlertView的宏定义 #define showMessage(__MESSAGE__) ...

  9. Struct2

    1.MVC思想概述 Servlet作为前端控制器,负责接收客户端发送的请求,在Servlet中只包含控制逻辑和简单的前端处理:然后调用后端javabean来完成实际的逻辑处理: 最后转发到相应的jsp ...

  10. Insight API开源项目介绍

           首先,在阅读本文以前假设您已经了解比特币Bitcoin基本原理. Insight API是一个开源基于比特币Bitcoin  blockchain的REST风格的API框架.Insigh ...