Identifier l’état d’exécution
Le protocole HTTP (Hypertext Transfer Protocol) est un protocole sans connexion et sans état. Être sans connexion et sans état signifie qu’il n’indique pas automatiquement si différentes requêtes proviennent du même client ou même si une seule instance de navigateur affiche toujours activement une page ou un site. Les sessions créent une connexion logique pour maintenir l'état entre le serveur et le client sur HTTP. Les informations spécifiques à l'utilisateur relatives à une session particulière sont appelées l'état de session.
La gestion des sessions implique de mettre en corrélation une requête HTTP avec d'autres requêtes précédentes générées à partir de la même session. Sans gestion des sessions, ces requêtes apparaissent non liées pour le service Web Report Server en raison de la nature sans connexion et sans état du protocole HTTP.
Reporting Services n’expose pas un concept holistique d’état de session tel que celui exposé par ASP.NET. Toutefois, lors de l'exécution de rapports, le serveur de rapports maintient l'état entre les appels de méthode sous la forme d'une exécution. Une exécution permet à l'utilisateur d'interagir de plusieurs façons avec le rapport, notamment en chargeant le rapport à partir du serveur de rapports, en définissant des informations d'identification et des paramètres pour le rapport et en effectuant son rendu.
Pendant qu’ils communiquent avec un serveur de rapports, les clients utilisent l’exécution pour gérer l’affichage des rapports et la navigation utilisateur vers d’autres pages d’un rapport et pour afficher ou masquer des sections d’un rapport. Une exécution unique existe pour chaque rapport que l'application cliente exécute.
En général, la durée de vie d'une exécution commence lorsqu'un utilisateur accède à un navigateur ou à une application cliente et qu'il sélectionne un rapport à afficher. L’exécution est ignorée après un court délai d’attente après la dernière requête à l’exécution reçue (le délai d’attente par défaut est de 20 minutes).
Du point de vue d'un service Web, la durée de vie commence lorsque les méthodes LoadReport, LoadReportDefinition ou Render du service Web Report Server sont appelées. L'application peut utiliser d'autres méthodes pour manipuler l'exécution active (par exemple, définir des paramètres et des sources de données). L’exécution est ignorée après un court délai d’attente après la dernière requête à l’exécution reçue (le délai d’attente par défaut est de 20 minutes).
Une application effectue le suivi de plusieurs exécutions actives entre les appels au service Render Web et RenderStream les méthodes en enregistrant le ExecutionID. L’ID d’exécution est retourné dans l’en-tête SOAP à partir des méthodes et LoadReportDefinition des LoadReport méthodes.
Le diagramme suivant illustre le chemin d'accès de traitement et de rendu des rapports.
Pour prendre en charge les fonctions décrites précédemment, la méthode SOAP Render actuelle est divisée en plusieurs méthodes englobant l’initialisation, le traitement et les phases de rendu de l’exécution.
Pour effectuer le rendu d'un rapport par programme, vous devez :
charger le rapport ou la définition de rapport à l'aide des méthodes LoadReport ou LoadReportDefinition ;
vérifier si le rapport a besoin d'informations d'identification ou de paramètres en vérifiant les valeurs des propriétés CredentialsRequired et ParametersRequired de l'objet ExecutionInfo retourné par les méthodes LoadReport ou LoadReportDefinition ;
définir, si nécessaire, les informations d'identification et/ou les paramètres à l'aide des méthodes SetExecutionCredentials et SetExecutionParameters ;
appeler la méthode Render pour effectuer le rendu du rapport.
Lorsqu'un rapport est en session, le rapport sous-jacent stocké dans la base de données du serveur de rapports peut changer. Par exemple, la définition de rapport peut changer, le rapport peut être supprimé ou déplacé et les autorisations des utilisateurs peuvent changer. Si le rapport se trouve dans une session active, les modifications apportées au rapport sous-jacent (autrement dit, le rapport stocké dans la base de données du serveur de rapports) ne l’affectent pas.
Vous pouvez également gérer une session de rapport à l'aide de commandes d'accès URL.