#VSTS定制#全新的模版定制能力
在应用生命周期管理(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
好吧,看看现在怎么做
- 随便打开一个你要添加字段的工作项,点击右上角的…,选择“定制”

- 在后台的“过程定制”中点击“新字段”,并填写字段名称和类型

- 切换到“布局”,选择显示的位置

- 回到原来的工作项页面,刷新页面,搞定

是不是很简单,以后你不用找我这个顾问了,自己搞定吧!(看来我要失业了)
模版的继承关系
看了上面的演示你会觉得很简单,对吧。要实现这个看似简单的功能,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研发运维一体化的信息

#VSTS定制#全新的模版定制能力的更多相关文章
- Windows 7 封装篇(一)【母盘定制】[手动制作]定制合适的系统母盘
Windows 7 封装篇(一)[母盘定制][手动制作]定制合适的系统母盘 http://www.win10u.com/article/html/10.html Windows 7 封装篇(一)[母盘 ...
- 鹿定制|Lu Couture|鹿定制·高级西装礼服私享定制品牌|芙蓉中路明城国际1425
鹿定制|Lu Couture|鹿定制·高级西装礼服私享定制品牌|芙蓉中路明城国际1425 联系我们
- 思科WLC5508上传定制Portal展示模版
1. 登录Cisco设备,获取模板样例登录cisco WLC设备后点击help,打开帮助文档Wireless Tab-->Web Login Page-->External Web Aut ...
- 提供VR定制开发、AR定制开发(VR游戏定制、应用定制)
设置输出路径 添加烘培输出的贴图类型 添加“LightingMap”类型 设置烘培贴图大小和目标贴图位置为“自发光” 设置烘培材质,选择“输出到源” 点击“渲染”即可 24.标准材质贴图的烘培光影处理 ...
- VR定制开发、AR定制开发(长年承接虚拟现实、增强现实应用、VR游戏定制开发,北京公司,可签合同)
Cardboard SDK for Unity的使用 上一篇文章作为系列的开篇,主要是讲了一些虚拟现实的技术和原理,本篇就会带领大家去看一看谷歌的Cardboard SDK for Unity,虽然目 ...
- ArcGIS api for javascript——地图配置-定制缩放动画,定制缩放框
描述 本例展示了当用户放大或缩小地图时如何定义地图的动画.zoomDuration和zoomRate是Dojo动画属性,他们确定了动画的duration和帧刷新的rate .这些属性单位是毫秒,zoo ...
- CodeSnippet.info 开源说明 和 环境搭建 (第一版)
Github开源声明 本网站的代码开源,开源的目的如下 技术分享 希望业内同行贡献代码 希望能够让网站更加安全 开源地址: CodeSnippet开源地址 关于代码贡献 任何人都可以贡献代码,一般在 ...
- Docker Dockerfile 定制镜像
使用 Dockerfile 定制镜像 镜像的定制实际上就是定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像,那么无法重复的问题 ...
- 不可或缺的企业OA面临问题,以及解决建议 软件定制开发 森普演示平台
---恢复内容开始--- 随着信息时代的来临,企业管理也相应的信息化,各种管理软件相继而出,各行各业的信息化有过成功,也有过失败(注:是以该项目是否达到用户的预期目标而言).据统计在信息化失败的案例中 ...
随机推荐
- WinPhone学习笔记(一)——页面导航与页面相关
最近学一下Windows Phone(接下来简称“WinPhone”)的开发,在很久很久前稍探究一下WinPhone中对一些传感器的开发,那么现在就从头来学学WinPhone的开发.先从WinPhon ...
- Java总结篇系列:Java多线程(三)
本文主要接着前面多线程的两篇文章总结Java多线程中的线程安全问题. 一.一个典型的Java线程安全例子 public class ThreadTest { public static void ma ...
- 不可或缺 Windows Native (25) - C++: windows app native, android app native, ios app native
[源码下载] 不可或缺 Windows Native (25) - C++: windows app native, android app native, ios app native 作者:web ...
- X3D中Profile如何翻译
问题在哪 在计算机术语中,Profile其实是很难用中文对应的词汇来翻译的一个单词. 在X3D国际标准中,就出现了Profile.它把软件产品对X3D的功能实现范围和相应支持程度做了预先的约定,分为C ...
- JMS中的消息通信模型
1. MQ简介: 消息队列(Message Queue,简称MQ),是应用程序与应用程序之间的一种通信方法.应用程序通过发送和检索出入列队的针对应用程序的数据 - 消息来通信,而无需专用连接来链接它们 ...
- Alfresco 4 项目介绍
body{ font: 16px/1.5em 微软雅黑,arial,verdana,helvetica,sans-serif; } Alfresco 是一个开源的企业内容管理系统(ECM) ...
- SSH中的jar包讲解(1)
我们在搭建SSH框架的时候,需要引入各自的一些jar包,相信很多初学者跟我一样,搜个资料,照搬过来(当然版本还得对应),至于为什么要引入这些个jar包,引入它们的作用是啥子,一头雾水,今天我就来跟这些 ...
- 【背景建模】SOBS
SOBS(self-Organizing through artificial neural networks)是一种基于自组织神经网络的背景差分算法,主要是借鉴神经网络的特性,一个网络输入节点,对应 ...
- 使用ADO.NET执行SQL脚本
public void ExecuteSql(SqlConnection connection, string sqlFile) { string sql = ""; using ...
- Redis-持久化
Redis 持久化 Redis 提供了不同持久化范围的选项: RDB 持久化以指定的时间间隔执行数据集的即时点(point-in-time)快照. AOF 持久化在服务端记录每次收到的写操作,在服务器 ...