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.