Report Processor is an internal component of a report server instance that processes reports as well as the report models that are used for ad hoc reporting.
Report processing describes a series of processing steps that transform the static instructions inside a report definition into a rendered report that appears in a final presentation format. The following diagram shows the stages and elements of report processing.
When a report is accessed, either through on-demand or push access, the report server either performs end-to-end processing, or returns a report that was pre-processed and then saved in an intermediate format for subsequent viewing in a specific format. Report execution settings determine which outcome occurs. If a report server administrator specifies that a report be accessed from cache or as a snapshot, the intermediate format is retrieved from the report server database and then rendered for viewing. Otherwise, all stages of processing are performed.
Requests for Report Processing
The Report Processor responds to these requests:
Request for an on-demand report. The action of a user opening a report that is configured to run on demand triggers report processing on the report server. The Report Processor retrieves the report definition, sends the request for data to a data processing extension, combines the report definition with the data, sends it to a rendering extension, and returns the rendered report. On-demand report processing also occurs in response to user actions in a model-based report. A user who explores a data path in a model-based report triggers a series of requests for temporary clickthrough reports.
Request for a cached report. Processing for cached reports is a variation of on-demand reporting that is performed within the Web service. The action of a user opening a report that is configured to run from a cached copy triggers report processing if the cached copy has expired. In this case, the report is re-processed before it is added back into the cache and then sent to the user's browser.
Request from the Scheduling and Delivery Processor. Scheduled report processing is initiated by the report server and runs in the background. All push access to report processing and delivery is driven through schedules and events that are handled by the Scheduling and Delivery Processor component of the report server. When the request is received, the Report Processor retrieves the report definition, sends the request for data to a data processing extension, combines the report definition with the data, and stores the compiled report in the report server database.
Stages of Reporting Processing
During report execution, the report server processes a report in three stages: report processing, data processing, and rendering. Data and report processing are performed on a report definition, resulting in a report that is in the intermediate format. Reports that are in intermediate format are subsequently rendered to a specific viewing format.
Retrieving the Report Definition
Report processing begins with a published report definition. A report definition contains one or more queries, layout information, and code references or expressions. The Report Processor gets the report definition from the report server database, initializes parameters and variables that are in expressions, and performs other preliminary processing that prepares the report for data. The data processing extension then connects to the data source and retrieves the data.
Process the Data
Data processing occurs on a database server. If the report retrieves static data files or XML documents, data processing might be limited to getting those files and returning the data to the report server.
Merge Data and Layout into an Intermediate Format
After the data is returned, it is merged with layout information in the report definition to construct a report in an intermediate format that can be saved for fast retrieval, or directed to a rendering extension that processes it into a format that the user sees. Data is processed by row for each section. Sections include the report header and footer, group headers and footers, and detail. Aggregate functions and expressions are also processed at this time.
A report that is configured to run as a snapshot or that is retained in report history is always stored in intermediate format that includes data and layout information that was current for the report when the intermediate format was saved.
The report server can use the intermediate format in a variety of ways. Caching, snapshots, and report history are all features that use reports stored in intermediate format. The intermediate format is portable. It can be rendered in any export format that is supported by and deployed on the report server.
The intermediate format is an internal application format. To work with a report in this format in a custom application, you must use programmatic interfaces that create or retrieve snapshots.
Render the Report
After the report is in the intermediate format, reports can be rendered into a presentation format. A rendered report is compiled as a common language runtime assembly and executed on the report server.
During the rendering stage, the rendering extension paginates the report and processes expressions that cannot be processed during the execution stage. The report is then rendered in the appropriate device-specific format.
Reports can use report models as an interface to underlying data sources. Models specify metadata and include references to shared data sources that define the data connection. Model processing occurs on the report server whenever the following user actions are performed:
Exploring a model in Report Builder.
Querying model data when building a report in Report Builder.
Navigating clickthrough reports saved on a report server.
Report processing for clickthrough reports is similar to processing for report definitions, except that reports are autogenerated from models rather than report definitions published on the server. Data processing is initiated through the model to retrieve data of interest.