Identificar o estado de execução
O protocolo HTTP (Hypertext Transfer Protocol) é um protocolo sem conexão e sem estado. Ser sem conexão e sem estado significa que ele não indica automaticamente se solicitações diferentes vêm do mesmo cliente ou mesmo se uma única instância do navegador ainda está exibindo 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-estado do protocolo HTTP.
O Reporting Services não expõe um conceito holístico de estado de sessão, como o exposto pelo 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 estão se comunicando com um servidor de relatório, os clientes usam a execução para gerenciar a exibição do relatório e a navegação do usuário para outras páginas em 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 é descartada após um curto período de tempo limite após o recebimento da última solicitação para a execução (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 é descartada após um curto período de tempo limite após o recebimento da última solicitação para a execução (o tempo limite padrão é de 20 minutos).
Um aplicativo controla várias execuções ativas entre chamadas para o serviço Render Web e RenderStream métodos salvando o ExecutionID. A ID de execução é retornada no cabeçalho SOAP dos LoadReport métodos e LoadReportDefinition .
O diagrama a seguir mostra o processamento e a renderização do caminho para relatórios.
Para dar suporte às funções descritas anteriormente, o método SOAP Render atual é dividido em vários métodos, abrangendo fases de inicialização, processamento e renderização de execuçã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, as alterações no relatório subjacente (ou seja, o relatório armazenado no banco de dados do servidor de relatório) não o afetarão.
Você também pode gerenciar uma sessão de relatório usando os comandos de acesso da URL.