在新建团队项目的过程中,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. FreeBSD 10 发布

    发行注记:http://www.freebsd.org/releases/10.0R/relnotes.html 下文翻译中... 主要有安全问题修复.新的驱动与硬件支持.新的命名/选项.主要bug修 ...

  2. css中的定位和框模型问题

    和定位有关的元素属性如下 position  元素的定位类型   绝对定位会相对于最近定位的祖先元素的位置来定位,而不会影响其他框的位置 固定定位 相对定位 z-index   元素的堆叠顺序 值越大 ...

  3. Android 手机卫士12--进程管理

    1.本进程不能被选中,所以先将checkbox隐藏掉--手机卫士 不能自杀 if(getItem(position).packageName.equals(getPackageName())){ ho ...

  4. Android 手机卫士11--窗体弹出PopupWindow

    protected void showPopupWindow(View view) { View popupView = View.inflate(this, R.layout.popupwindow ...

  5. Android笔记——什么是json?json如何使用?

    什么是json 什么是json,json是什么,json如何使用 JSON是JavaScript Object Notation的缩写,可见JSON来源于JavaScript.JSON数据是一系列键值 ...

  6. JavaScript基础13——js的string对象

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. gulp入坑系列(2)——初试JS代码合并与压缩

    在上一篇里成功安装了gulp到项目中,现在来测试一下gulp的合并与压缩功能 gulp入坑系列(1)--安装gulp(传送门):http://www.cnblogs.com/YuuyaRin/p/61 ...

  8. 新著作计划:《水利水电工程施工导流 水力计算与.NET编程》

    目   录 第一篇 基础理论篇 第1章 施工导截流设计概述 第2章 基本水力计算 2.1 临界水深计算 2.2 正常水深计算 2.3 堰流水力计算 2.4 明渠流水力计算 2.5 管流水力计算 第3章 ...

  9. 【原/转】【boost】智能指针使用规则以及介绍

    智能指针机制跟Objective-C里面的retainCount引用计数有着相同的原理,当某个对象的引用计数为0是执行delete操作,类似于autorelease 初学者在使用智能指针时,很多情况下 ...

  10. IOS开发-表单控件的应用

    1. 需求描述 2. 开发环境介绍 3. 创建一个工程 4. 工程配置介绍 5. 目录结构介绍 6. 界面设置 7. 关联输入输出 8. 关联事件代码 9. 运行结果 10. UITextField ...