Определение состояния выполнения
Протокол передачи гипертекстов (HTTP) — это протокол без подключения и без отслеживания состояния. Без подключения и без отслеживания состояния означает, что он не указывает, приходят ли разные запросы от одного клиента или даже если один экземпляр браузера по-прежнему активно просматривает страницу или сайт. Сеансы создают логическое соединение, чтобы сохранять состояние между сервером и клиентом по протоколу HTTP. Сведения конкретного пользователя, относящиеся к определенному сеансу, называются «состоянием сеанса».
В задачи управления сеансом входит сопоставление HTTP-запроса с предыдущими запросами, созданными в том же сеансе. Без управления сеансом такие запросы оказываются не связанными с веб-службой сервера отчетов, поскольку протокол HTTP по своей природе является протоколом без установления соединения и без сохранения состояния.
Службы Reporting Services не предоставляют целостную концепцию состояния сеанса, например доступную ASP.NET. Однако во время выполнения отчетов сервер отчетов сохраняет состояние между вызовами методов в форме объекта выполнения. Объект выполнения позволяет пользователю взаимодействовать с отчетом несколькими способами, включая загрузку отчета с сервера отчетов, задание для отчета учетных данных и параметров и подготовку отчета к просмотру.
Хотя они взаимодействуют с сервером отчетов, клиенты используют выполнение для управления просмотром отчетов и навигацией пользователей на другие страницы отчета, а также для отображения или скрытия разделов отчета. Для каждого отчета во время работы приложения существует уникальный объект выполнения.
Обычно время существования объекта выполнения отсчитывается от момента, когда пользователь переходит в браузер или клиентское приложение и выбирает отчет для просмотра. Выполнение удаляется через короткий период времени ожидания после получения последнего запроса к выполнению (время ожидания по умолчанию — 20 минут).
С точки зрения веб-службы время существования отсчитывается от момента, когда вызываются методы LoadReport, LoadReportDefinition или Render веб-службы сервера отчетов. Приложение может использовать другие методы для управления активным объектом выполнения (например, для задания параметров и источников данных). Выполнение удаляется через короткий период времени ожидания после получения последнего запроса к выполнению (время ожидания по умолчанию — 20 минут).
Приложение отслеживает несколько активных выполнений между вызовами веб-службы Render и RenderStream методами путем сохранения ExecutionID. Идентификатор выполнения возвращается в заголовке SOAP из LoadReport и LoadReportDefinition методов.
На следующей диаграмме показаны пути обработки отчетов и подготовки их к просмотру.
Для поддержки функций, описанных ранее, текущий метод отрисовки SOAP разделен на несколько методов, охватывающих инициализацию выполнения, обработку и отрисовку.
Чтобы подготовить отчет к просмотру программным образом, необходимо выполнить следующие действия.
Загрузите отчет или определение отчета с помощью метода LoadReport или LoadReportDefinition.
Определите, нужны ли для отчета учетные данные или параметры, проверив значения свойств CredentialsRequired и ParametersRequired объекта ExecutionInfo, возвращенного методом LoadReport или LoadReportDefinition
В случае необходимости задайте учетные данные и параметры с помощью методов SetExecutionCredentials и SetExecutionParameters.
Вызовите метод Render, чтобы подготовить отчет к просмотру.
Пока отчет участвует в сеансе, может измениться базовый отчет, хранящийся в базе данных сервера отчетов. Например, может измениться определение отчета, сам отчет может быть удален или перемещен, а также могут измениться разрешения пользователя. Если отчет находится в активном сеансе, изменения в базовом отчете (то есть отчет, хранящийся в базе данных сервера отчетов), не влияют на него.
Сеансом отчета также можно управлять с помощь команд для доступа по URL-адресу.