Table of Contents

Class ReportProcessor

Namespace
DocWright.Reporting.Processing
Assembly
DocWright.Reporting.dll

Runs a report definition against data: parameters, datasets, filters, sorts, groups, aggregates and variables. The result is a ReportInstance — the report bound to its data, with no geometry yet.

public static class ReportProcessor
Inheritance
ReportProcessor
Inherited Members

Remarks

Stateless. Nothing is kept between calls. A viewer that changes a parameter calls GetParameters(ReportDefinition, ReportDataProvider?, ReportRunOptions) again with every value it holds, and Process(ReportDefinition, ReportDataProvider?, ReportRunOptions) once they are all valid. Concurrent runs are safe, each with its own options.

Measured, not assumed. The rules processing follows — group order, what an aggregate reads in each scope, what a filter keeps, how a parameter's value is read and when it is valid — were each measured against Microsoft's report engine; the places DocWright deliberately differs are listed in COMPAT.md.

Failures. A parameter without a valid value, a definition error in a parameter, and a data provider that breaks its own schema raise ReportProcessingException. Anything else that fails — a filter comparing a number with text, a group expression that errors — is reported through Diagnostics and leaves what it governs empty; with StrictMode it raises the exception instead. Limits raise ResourceLimitExceededException and cancellation OperationCanceledException.

Methods

GetParameters(ReportDefinition, ReportDataProvider?, ReportRunOptions)

Works out the report's parameters without running the report.

GetParameters(ReportDefinition, ReportDataProvider?, ReportRunOptions, CancellationToken)

Works out the report's parameters without running the report.

Process(ReportDefinition, ReportDataProvider?, ReportRunOptions)

Runs the report.

Process(ReportDefinition, ReportDataProvider?, ReportRunOptions, CancellationToken)

Runs the report.