Identificar el estado de ejecución
El Protocolo de transferencia de hipertexto (HTTP) es un protocolo sin estado y sin conexión, lo que significa que no indica de manera automática si las diferentes solicitudes provienen del mismo cliente o si una instancia del explorador todavía está viendo una página o un sitio. Las sesiones crean una conexión lógica para mantener el estado entre el servidor y el cliente sobre HTTP. La información específica del usuario pertinente para una sesión determinada se conoce como estado de sesión.
La administración de la sesión implica poner en correlación una solicitud HTTP con otras solicitudes anteriores generadas en la misma sesión. Sin la administración de sesiones, estas solicitudes parecen no estar relacionadas con el servicio web del servidor de informes debido a la naturaleza sin conexión y sin estado del protocolo HTTP.
Reporting Services no expone un concepto holístico del estado de sesión como el expuesto a través de ASP.NET. Sin embargo, al ejecutar los informes, el servidor de informes mantiene el estado entre las llamadas al método en forma de una ejecución. Una ejecución permite al usuario interactuar con el informe de varias maneras, por ejemplo al cargar el informe del servidor de informes, establecer las credenciales y los parámetros para el informe, y representar el informe.
Mientras se comunican con un servidor de informes, los clientes utilizan la ejecución para administrar la visualización de los informes y la navegación del usuario a otras páginas de un informe, y para mostrar u ocultar las secciones de un informe. Existe solo una ejecución para cada informe que la aplicación cliente ejecuta.
En general, la duración de una ejecución se inicia cuando un usuario navega a un explorador o aplicación cliente y selecciona un informe para verlo. La ejecución se descarta después de un breve período de tiempo de espera, una vez recibida la última solicitud de ejecución (el tiempo de espera predeterminado es de 20 minutos).
Desde la perspectiva del servicio web, la duración comienza cuando se llama a los métodos LoadReport, LoadReportDefinition o Render del servicio web del servidor de informes. La aplicación puede utilizar otros métodos para manipular la ejecución activa (por ejemplo, configurar los parámetros y establecer los orígenes de datos). La ejecución se descarta después de un breve período de tiempo de espera, una vez recibida la última solicitud de ejecución (el tiempo de espera predeterminado es de 20 minutos).
Para mantener el seguimiento de varias ejecuciones activas entre las llamadas a los métodos del servicio web Render y RenderStream, una aplicación guarda el ExecutionID, que los métodos LoadReport y LoadReportDefinition devuelven en el encabezado SOAP.
El diagrama siguiente muestra el procesamiento y la representación de la ruta de acceso para los informes.
Para admitir las funciones descritas antes, el método SOAP Render actual se ha dividido en varios métodos que abarcan las fases de inicialización de la ejecución, procesamiento y representación.
Para representar mediante programación un informe, debe:
Cargar el informe o la definición de informe utilizando LoadReport o LoadReportDefinition.
Comprobar si el informe necesita credenciales o parámetros examinando los valores de las propiedades CredentialsRequired y ParametersRequired del objeto ExecutionInfo que devuelve LoadReport o LoadReportDefinition
Si es necesario, establecer las credenciales y/o parámetros mediante los métodos SetExecutionCredentials y SetExecutionParameters.
Llamar al método Render para representar el informe.
Aunque un informe esté en sesión, el informe subyacente almacenado en la base de datos del servidor de informes puede cambiar. Por ejemplo, la definición de informe puede cambiar, el informe se puede eliminar o mover, y los permisos de usuario pueden cambiar. Si el informe está en una sesión activa, los cambios realizados no afectan al informe subyacente (es decir, el informe almacenado en la base de datos del servidor de informes).
También puede administrar una sesión de informe mediante comandos de acceso URL.