如何在TFS的过程模板中添加报表
在新建团队项目的过程中,TFS的“新建团队项目向导”会根据用户选择的过程模板类型(CMMI, Scrum,Agile等)自动为团队项目创建一个SSRS(SQL Server Reporting Service)报表站点。在大多数情况下,这些开箱即用的报表可以满足用户的基本需求。但是也有许多企业会根据自己的管理流程特点,开发和定制许多报表。用户可以在创建团队项目以后,手动将这些定制的报表发布到每个团队项目中。但是如果团队项目比较多,每次手动发布报表就比较耗时耗力,还容易出现错误。实际上TFS的过程模板支持自定义的报表,只需要通过修改过程模板,并将自己新建的报表包含在过程模板中,在新建团队项目的时,系统会自动将这些报表发布到TFS的报表站点中。下面我就来介绍如何修改过程模板,实现自定义报表的自动化部署。
过程模板结构
首先将现有的过程模板下载到本地,这里以CMMI过程模板为列。

建流程模板的所有文件添加到一个空的项目中(如下图),这样可以方便的通过Visual Studio来修改流程模板文件。
通过分析,我们发现TFS的报表文件保存在一个叫做Reports的文件夹中,其中所有的.rdl文件是报表文件,ReportsTasks.xml文件是在创建团队项目过程中,TFS执行的任务文件,用来自动创建报表站点和报表。

增加报表文件(.rdl)
将我们自定义的报表复制到Reports目录中即可。这里,用于测试,我把自己自定义开发的一个用于统计团队项目任务的报表复制到Reports目录中。

修改报表任务
在Visual Studio中打开报表任务的文件ReportsTask.xml:
1. 需要增加新的报表节点:reports,最简单的方法就是复制之前已经存在的节点。但是需要注意,如果你的报表中不需要参数ExplicitProject,应该将这个节点删除(我的示例报表就不需要这个参数)。
2. 需要指定报表的目录,如果打算放在报表站点的根目录中,保持folder属性的值为空就可以。
3. 需要指定数据源datasources,name是指报表系统中的已经存在的数据源,dsname是指报表中的数据源名称。

更新流程模板,并新建团队项目
通过团队资源管理器上传流程模板,以更新模板(如下图)。更新流程模板以后,可以使用新建的模板创建一个团队项目。在创建团队项目的过程中,如果所必须的配置没有完成,可能会出现错误,这时可以通过错误详细信息排查问题。

验证新增报表
团队项目创建成功以后,在报表站点中会看到自己定制的报表(如下图1),这是你就可以验证自己的报表了(如图2)

图1

图2
常见问题
1. 报表文件的XML版本不正确
在创建团队项目的过程中提示下面的错误,原因是使用Visual Studio 2015编辑或者开发报表,报表文件的Schemal自动被修改成了2016,而TFS 2013不支持这种格式。
| 异常消息: System.Web.Services.Protocols.SoapException: 此报表的定义无效或不受此版本的 Reporting Services 支持。该报表定义可能是使用以前版本的 Reporting Services 创建的,或包含格式不符合 Reporting Services 架构或无效的内容。 |
2. 必须的数据源不存在
需要在创建团队项目前,将报表的数据源创建好,并配置好数据库连接。
如何在TFS的过程模板中添加报表的更多相关文章
- 如何在ChemDraw 15.1 Pro中添加模板
ChemDraw化学绘图工具为了方便用户的使用,特地开发了众多的各种类型模板.用户在绘制一些简单或复杂的化学结构式时,可以直接从ChemDraw模板库里直接调用使用,虽然ChemDraw模板非常的丰富 ...
- 如何在github的README.md中添加图片
如何在github的README.md中添加图片 总结: 链接引用: 简介: 1.在github上的仓库建立一个存放图片的文件夹,文件夹名字随意.如:img ...
- WPF ListBoxItem模板中添加CheckBox选中问题
原文:WPF ListBoxItem模板中添加CheckBox选中问题 是这样的,需要一个ListBox来展示照片,并添加一个选中的CheckBox.这就需要对ListBox的ItemTemplate ...
- (转)如何在maven的pom.xml中添加本地jar包
1 maven本地仓库认识 maven本地仓库中的jar目录一般分为三层:图中的1 2 3分别如下所示: 1 groupId 2 artifactId 3 version 4 jar包的依赖 如果要将 ...
- 在django模板中添加jquery
路径 /project_name /app_name /templates /index.html /project_name setting.py /static /js jquery.js 导入方 ...
- (转)如何在maven的pom.xml中添加本地jar包
转载自: https://www.cnblogs.com/lixuwu/p/5855031.html 1 maven本地仓库认识 maven本地仓库中的jar目录一般分为三层:图中的1 2 3分别如下 ...
- 如何在Windows 10 IoT Core中添加其他语言的支持,如中文
目前很多开发者已经开始使用Windows 10 IoT来做物联网领域的开发了,目前Windows 10 IoT Core的版本支持树莓派2(以及新出的树莓派3).Minnowboard Max以及Dr ...
- django模板中变更数据库信息后,如何把变更后的信息同步更新到数据库
我们在基于django开发项目的过程中,经常会遇到数据库表字段增加,删除,或者修改的情况,以及字段属性更改的情况,因为django基于ORM模式来操作数据库的, 传统上如果django项目中的数据库m ...
- LoadRunner测试场景中添加负载生成器
如何在LoadRunner测试场景中添加负载生成器 本文对如何在LoadRunner的测试场景中添加负载生成器,如何使用负载生成器的方法,总结形成操作指导手册,以指导测试人员指导开展相关工作. 1.什 ...
随机推荐
- sql跨数据库转移
结构一样的话insert into 数据库A.dbo.TableAselect * from 数据库B.dbo.TableA 另外:nsert into DDD(字段1,字段2,字段3 .....)( ...
- java.lang.NullPointerException org.apache.jsp.WEB_002dINF.pages.imagecheck.test_jsp._jspInit(test_jsp.java:22)的原因
HTTP Status 500 - type Exception report message description The server encountered an internal error ...
- spring的懒加载
在spring的IOC容器中,可以通过设置<beans default-lazy-init="XXX"></beans>来设置是否为懒加载模式,懒加载的意思 ...
- 百度FIS入门
1.fis作为nodejs的模块来管理的,所以首先得安装nodejs,看我前面的安装nodejs的文章. 2.官方的案例下载包https://github.com/hefangshi/fis-quic ...
- 股票投资组合-前进优化方法(Walk forward optimization)
code{white-space: pre;} pre:not([class]) { background-color: white; }if (window.hljs && docu ...
- 开源项目Foq简介
Foq是一个轻量级-线程安全的mocking类库.使用它来mock抽象类与接口这是我们通常的做法.Foq的名字来自Moq,如果你使用过Moq的话,自然后联想到它能做什么.Foq主要是为了F#的 ...
- C#6.0语法糖剖析(二)
1.索引初始化 使用代码 ] = ] = ] = "thirteen"}; 编译器生成的代码 Dictionary<int, string> dictionary2 = ...
- php对mysql数据库简单连接操作
前些阵子忙完了公司前端静态页面的事情了之后,简单学习了下php的基础知识,今天想了想回顾一下php连接数据库的方式,写一下随笔存一下看看 php连接数据库端口和新建数据库 <?php $serv ...
- jQuery高级技巧——DOM操作篇
页面加载之DOMReady事件 所谓domReady,也就是文档就绪,我们都知道,在操作dom时必须要在dom树加载完成后才能进行操作.如何检测DOM树已经构建完成,以下是一些实现的方式: 1.使 ...
- .NET 面试基本技术整理
这篇文章主要 整理出来的大部分公司需要的技术 以及一些学习链接,进行恶补一下,以免面试官考倒你 其中也整理了一些面试题需要的可以点击链接 需要掌握的技术 基础概念需要 面向对象 OOD/OOP OOD ...