在新建团队项目的过程中,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的过程模板中添加报表的更多相关文章

  1. 如何在ChemDraw 15.1 Pro中添加模板

    ChemDraw化学绘图工具为了方便用户的使用,特地开发了众多的各种类型模板.用户在绘制一些简单或复杂的化学结构式时,可以直接从ChemDraw模板库里直接调用使用,虽然ChemDraw模板非常的丰富 ...

  2. 如何在github的README.md中添加图片

    如何在github的README.md中添加图片 总结: 链接引用:![Image text](图片的链接地址) 简介: 1.在github上的仓库建立一个存放图片的文件夹,文件夹名字随意.如:img ...

  3. WPF ListBoxItem模板中添加CheckBox选中问题

    原文:WPF ListBoxItem模板中添加CheckBox选中问题 是这样的,需要一个ListBox来展示照片,并添加一个选中的CheckBox.这就需要对ListBox的ItemTemplate ...

  4. (转)如何在maven的pom.xml中添加本地jar包

    1 maven本地仓库认识 maven本地仓库中的jar目录一般分为三层:图中的1 2 3分别如下所示: 1 groupId 2 artifactId 3 version 4 jar包的依赖 如果要将 ...

  5. 在django模板中添加jquery

    路径 /project_name /app_name /templates /index.html /project_name setting.py /static /js jquery.js 导入方 ...

  6. (转)如何在maven的pom.xml中添加本地jar包

    转载自: https://www.cnblogs.com/lixuwu/p/5855031.html 1 maven本地仓库认识 maven本地仓库中的jar目录一般分为三层:图中的1 2 3分别如下 ...

  7. 如何在Windows 10 IoT Core中添加其他语言的支持,如中文

    目前很多开发者已经开始使用Windows 10 IoT来做物联网领域的开发了,目前Windows 10 IoT Core的版本支持树莓派2(以及新出的树莓派3).Minnowboard Max以及Dr ...

  8. django模板中变更数据库信息后,如何把变更后的信息同步更新到数据库

    我们在基于django开发项目的过程中,经常会遇到数据库表字段增加,删除,或者修改的情况,以及字段属性更改的情况,因为django基于ORM模式来操作数据库的, 传统上如果django项目中的数据库m ...

  9. LoadRunner测试场景中添加负载生成器

    如何在LoadRunner测试场景中添加负载生成器 本文对如何在LoadRunner的测试场景中添加负载生成器,如何使用负载生成器的方法,总结形成操作指导手册,以指导测试人员指导开展相关工作. 1.什 ...

随机推荐

  1. NopCommerce中的单例

    项目中经常会遇到单例的情况.大部分的单例代码都差不多像这样定义: internal class SingletonOne { private static SingletonOne _singleto ...

  2. HTML5 Wijmo:控制 Wijmo Grid 插件的编辑模式

    Wijmo jQuery 插件经常应用于在财务类网站中创建平滑和良好用户体验的交互表格.WijGrid 插件用于显示.排序.分组和编辑数据.今天我们来分享下如何控件WijGrid插件的编辑模式. 在本 ...

  3. mysql select语句解析

    select语句用于从一个或多个数据表选出特定行.特定列的交集 最简单的select语句的语法格式如下: select column1,column2 ........      (列) from 数 ...

  4. 【poj 2185】Milking Grid(字符串--KMP+问题分解)

    题意:给定一个由字符组成的矩阵,求出它的面积最小的覆盖矩阵.(感觉应该是可重叠的......* (・ω・)っ) 解法:KMP.行列互不影响,可以问题分解.先求出每一行的最小重复串,利用kmp中的nex ...

  5. 数据库的sacle-up和scale-out与sharding技术区分

    scale 英文是扩展的意思. 数据库要进行扩展,指的是存储系统不够,或者性能不够,要提升的时候,就要进行扩展. 分为向上扩展和横向扩展,这就像一个人往上面发展与横向发展两种思路. scale-up: ...

  6. 【OpenCV】选择ROI区域

    问题描述:在测试目标跟踪算法时,需要选择不同区域作为目标,进行目标跟踪,测试目标跟踪的效果. 解决思路: 1.OpenCV中提供了鼠标交互控制,利用setMouseCallback()给固定的窗口设置 ...

  7. ASP.NET Web API默认支持的媒体类型(SupportedMediaTypes)

    JsonMediaTypeFormatter XmlMediaTypeFormatter ( application/xml  text/xml) FormUrlEncodedMediaTypeFor ...

  8. [HTML5] 飞龙天惊-HTML5学习系列

    飞龙天惊 cnblog URL:http://www.cnblogs.com/fly_dragon/ Html5 学习系列(一)认识HTML5 http://www.cnblogs.com/fly_d ...

  9. .NET WinForm画树叶小程序

    看了一片文章(http://keleyi.com/a/bjac/nurox416.htm),是使用分型画树叶,代码是Java的,因为Java很久没弄了,改用C#实现,下载地址: 画树叶小程序下载 核心 ...

  10. JavaScript 之垃圾回收和内存管理

    JavaScript 具有自动垃圾收集机制(GC:Garbage Collecation),也就是说,执行环境会负责管理代码执行过程中使用的内存.而在 C 和 C++ 之类的语言中,开发人员的一项基本 ...