报表处理器

报表处理器是报表服务器实例的一个内部组件,它负责处理报表以及用于生成即席报表的报表模型。

报表处理概述

报表处理描述一系列处理步骤,这些步骤将报表定义内的静态指令转换为以最终显示格式显示的呈现报表。下图显示了报表处理的阶段和元素。

报表处理关系图

报表处理关系图

在按需访问报表或以推送方式访问报表时,报表服务器或者执行端对端处理,或者返回经过预处理然后以中间格式保存供随后以特定格式呈现的报表。报表处理结果由报表执行设置决定。如果报表服务器管理员指定从缓存访问报表或者将报表作为快照进行访问,则报表服务器会从报表服务器数据库检索中间格式的报表,然后呈现出来供用户查看。否则,将执行所有处理阶段。

请求报表处理

报表处理器可响应以下请求:

  • 请求按需运行的报表。用户打开配置为按需运行的报表时,将在报表服务器上触发报表处理。报表处理器将检索报表定义,然后将数据请求发送给数据处理扩展插件,之后将报表定义与数据相结合,再将其发送到呈现扩展插件,最后返回呈现的报表。为响应基于模型的报表中的用户操作,也会执行按需报表处理。用户浏览基于模型的报表中的数据路径时会触发一系列对临时的点击链接型报表的请求。

  • 请求缓存报表。处理缓存报表是在 Web 服务中执行的按需运行报表的一种变体。用户打开配置为从缓存副本运行的报表时,如果该缓存副本已过期,则会触发报表处理。在这种情况下,会重新处理报表,再将它重新添加到缓存中,然后发送到用户的浏览器。

  • 来自计划和传递处理器的请求。计划的报表处理由报表服务器启动,在后台运行。对报表处理和传递的所有推送式访问都通过由报表服务器的计划和传递处理器组件处理的计划和事件来推动。收到请求时,报表处理器将检索报表定义,之后将数据请求发送到数据处理扩展插件,再将报表定义与数据相结合,然后将编译后的报表存储在报表服务器数据库中。

报表处理的阶段

在报表执行期间,报表服务器将分三个阶段处理报表:报表处理、数据处理和呈现。数据和报表处理根据报表定义执行,生成一个采用中间格式的报表。中间格式的报表随后将呈现为特定的查看格式。

检索报表定义

报表处理从已发布的报表定义开始。报表定义包含一个或多个查询、布局信息以及代码引用或表达式。报表处理器将从报表服务器数据库获取相应的报表定义,初始化表达式中的参数和变量,再执行其他初级处理操作来准备报表以便接收数据。然后,数据处理扩展插件将连接到数据源并检索数据。

处理数据

数据处理在数据库服务器上执行。如果报表检索静态数据文件或 XML 文档,则数据处理可能限于获取这些文件并将数据返回给报表服务器。

将数据和布局结合到中间格式中

返回数据后,该数据将与报表定义中的布局信息相结合,产生一个中间格式的报表,该报表可以保存起来以供快速检索,也可以定向到呈现扩展插件,将其处理成用户所需的查看格式。每一部分的数据都逐行处理。这些部分包括报表表头和表尾、组头和组尾以及详细信息。聚合函数和聚合表达式也在这一阶段进行处理。

配置为以快照形式运行的报表或报表历史记录中保留的报表始终以中间格式存储,该中间格式包含其保存时报表当时的数据和布局信息。

报表服务器能以多种方式使用中间格式。缓存、快照和报表历史记录等功能都使用以中间格式存储的报表。中间格式是可移植的。它能以报表服务器上支持并已部署的任何导出格式呈现。

注意注意

中间格式是一种内部应用程序格式。若要在自定义应用程序中以此格式处理报表,必须使用编程接口创建或检索快照。

呈现报表

报表处理为中间格式后,可采用某种显示格式呈现报表。呈现的报表将编译为公共语言运行时程序集,然后在报表服务器上执行。

在呈现阶段中,呈现扩展插件将对报表进行分页,并处理在执行阶段无法处理的表达式。然后,报表将以适当的设备特定格式呈现。

模型处理和点击链接型报表

报表可以将报表模型用作基础数据源的接口。模型指定了元数据,并包括对定义数据连接的共享数据源的引用。一旦执行以下用户操作,报表服务器上就会发生模型处理:

  • 在报表生成器中浏览模型。

  • 在报表生成器中生成报表时,查询模型数据。

  • 导航报表服务器上保存的点击链接型报表。

点击链接型报表的报表处理与报表定义的处理方式相似,只不过报表是通过模型自动生成的,而报表定义是在服务器上发布的。数据处理通过模型启动后,即可检索所需的数据。