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