Identificando o estado de execução
O HTTP (Hypertext Transfer Protocol) é um protocolo sem conexão e sem pátria, o que significa que ele não indica automaticamente se diferentes solicitações provêm do mesmo cliente ou até se uma única instância de navegador ainda está visualizando ativamente uma página ou site. As sessões criam uma conexão lógica para manter o estado entre servidor e cliente por meio do HTTP. As informações específicas para o usuário, pertinentes a uma sessão específica, são conhecidas como o estado da sessão.
O gerenciamento de sessão envolve a correlação de uma solicitação de HTTP com outras solicitações anteriores geradas pela mesma sessão. Sem o gerenciamento de sessão, essas solicitações parecem não relacionadas ao serviço Web do servidor de relatório devido à natureza sem conexão e sem pátria do protocolo HTTP.
O Reporting Services não expõe um conceito holístico de estado de sessão como o que é exposto por meio do ASP.NET. Entretanto, ao executar relatórios, o servidor de relatório mantém o estado entre as chamadas de método no formulário de uma execução. A execução permite que o usuário interaja com o relatório de várias maneiras – incluindo o carregamento do relatório do servidor de relatório, configurando credenciais e parâmetros para o relatório e renderizando o relatório.
Enquanto eles estão se comunicando com um servidor de relatório, os clientes usam a execução para gerenciar a visualização de relatório e a navegação de usuário para outras páginas de um relatório e para mostrar ou ocultar seções de um relatório. Existe uma execução exclusiva para cada relatório que o aplicativo cliente está executando.
Em geral, o tempo de vida de uma execução inicia quando um usuário navega até um navegador ou aplicativo cliente e seleciona um relatório para exibição. A execução será descartada após um curto tempo limite após a última solicitação até a execução ter sido recebida (o tempo limite padrão é de 20 minutos).
A partir de uma perspectiva de serviço Web, o tempo de vida inicia quando os métodos do serviço Web do servidor de relatório LoadReport, LoadReportDefinitionou Render são chamados. O aplicativo pode usar outros métodos para manipular a execução ativa (por exemplo, definindo os parâmetros e as fontes de dados de configuração). A execução será descartada após um curto tempo limite após a última solicitação até a execução ter sido recebida (o tempo limite padrão é de 20 minutos).
Um aplicativo monitora várias execuções ativas entre as chamadas para o serviço Web Render e os métodos do RenderStream salvando o ExecutionID, que é retornado no cabeçalho SOAP do LoadReport e métodos LoadReportDefinition.
O diagrama a seguir mostra o processamento e a renderização do caminho para relatórios.
Para dar suporte às funções descritas acima, o método Processador SOAP atual foi dividido em vários métodos que abrangem a inicialização da execução, o processamento e as fases de renderização.
Para renderizar programaticamente um relatório, você deve:
Carregue o relatório ou a definição de relatório que usa LoadReport ou LoadReportDefinition.
Verifique se o relatório precisa de credenciais ou parâmetros verificando os valores do CredentialsRequired e as propriedades ParametersRequired do objeto ExecutionInfo retornado por LoadReport ou LoadReportDefinition
Se necessário, defina as credenciais e/ou parâmetros usando os métodos SetExecutionCredentials e SetExecutionParameters.
Chame o método Render para renderizar o relatório.
Enquanto um relatório estiver na sessão, o relatório subjacente armazenado no banco de dados do servidor de relatório poderá ser alterado. Por exemplo, a definição do relatório poderá ser alterada, o relatório poderá ser excluído ou movido e as permissões de usuário poderão ser alteradas. Se o relatório estiver em uma sessão ativa, ele não será afetado pelas alterações efetuadas no relatório subjacente (isto é, o relatório armazenado no banco de dados do servidor de relatório).
Você também pode gerenciar uma sessão de relatório usando os comandos de acesso da URL. Para obter mais informações, consulte Gerenciando sessões de relatório usando uma URL.
Consulte também