Histórico da Página
CONTEÚDO
Índice minLevel 2
01. VISÃO GERAL
Com o objetivo de facilitar o desenvolvimento de geração de relatórios Smart View de forma assíncrona utilizando RPW / Automação de tarefas, foi desenvolvida uma classe que centralizará as informações necessárias para execução de pedidos agendados.
02.
EXEMPLO DE UTILIZAÇÃOCLASSE GenerateReport()
A classe GenerateReport() será responsável por recuperar o ID do pedido de execução com base nos parâmetros recebidos. Com essa informação, será realizado o refresh do token de autenticação para a execução dos pedidos agendados referentes ao relatório solicitado, e, em seguida, o relatório será recuperado no endpoint do Smart View.
02.1 Parâmetros de entrada da classe
Nome | Tipo | Descrição |
---|---|---|
pOrder | INTEGER | Código do pedido de execução. |
pLayoutName | CHARACTER | Nome do relatório do Cadastro de Programas Datasul. |
pReportParams | JSONOBJECT | Objeto com os parâmetros do relatório. |
pFormat | CHARACTER | Formato do relatório. Formatos permitidos: .csv, .docx, .html, .jpeg, .mht, .pdf, .png, .rtf, .txt, .xls, .xlsx. |
Aviso | ||
---|---|---|
| ||
O nome externo do relatório cadastrado em Programas Datasul - bas_prog_dtsul será inserido utilizado no escopo de programas permitidos a utilizarem o token de autenticação do pedido agendado. Sendo assim, é de extrema importância que este cadastro esteja correto ou o relatório não será gerado. |
02.2 Definições
Para chamada da classe, utilizar as seguintes definições de bibliotecas e variáveis. A temp-table é opcional, pois vai depender do formato de retorno que o desenvolvedor utilizará no programa chamador:
USING Progress.Json.ObjectModel.JsonObject FROM PROPATH. USING com.totvs.framework.smartview.GenerateReport FROM PROPATH. DEFINE TEMP-TABLE ttLogGenerateReport NO-UNDO DEFINE VARIABLE oGenerateReport AS GenerateReport NO-UNDO. |
02.3 JSON de parâmetros do relatório
O JSON de parâmetros deve estar de acordo com os parâmetros definidos no objeto de negócio do relatório em questão:
oReportParams = NEW JsonObject(). aReportParams = NEW JsonArray(). aReportParams = NEW JsonArray(). | O JSON demonstrado ao lado, ficará neste modelo: |
Nota |
---|
O JSON repassa os parâmetros de acordo com o Objeto de Negócio do relatório, como informado acima, porém pode ser enviado vazio (NEW JsonObject()). |
02.4 Instância da classe
A instância da classe será atribuída em um objeto do tipo GenerateReport:
oGenerateReport = NEW GenerateReport(1475, "rpHistorLogin", oReportParams, "pdf"). |
02.5 Detalhamento sobre parâmetros de entrada
Informações sobre como recuperar os dados a serem repassados como parâmetro para a classe:
Valor | Descrição |
---|---|
1475 | Número do pedido de execução. Pode ser recuperado da variável global i-num-ped-exec-rpw durante a criação do agendamento ou da tabela ped_exec, campo num_ped_exec. Obrigatoriamente este pedido deve estar com ind_sit_ped_exec igual a 3 e o campo sv_uuid_token diferente de vazio para a geração do relatório. As duas ultimas informações são necessárias apenas a nível de testes da chamada da classe via editor Progress, por exemplo, pois elas são recuperadas internamente a partir do número do pedido de execução repassado como parâmetro. |
"rpHistorLogin" | Nome do layout do relatório que está sendo gerado. O mesmo deve estar cadastrado no bas_prog_dtsul - Programa Produto Datasul. |
oReportParams | Objeto contendo os parâmetros do relatório a ser gerado de acordo com objeto de negócio. Não é recuperado de banco,pode ser repassado nos parâmetros de criação do pedido de execução, bem como pode ser enviado de forma fixa na chamada da classe. Também e possível ser enviado vazio, caso queira gerar o relatório sem filtragem. |
"pdf" | Formato do relatório a ser gerado. Não é recuperado de banco, pode ser repassado nos parâmetros de criação do pedido de execução, bem como pode ser enviado de forma fixa na chamada da classe. |
02.6
FormasComo recuperar objeto de
recuperarsaída
de execuçãoda classe
A saída da classe consiste num em um objeto do tipo JsonObject e pode ser recuperado da forma que melhor atender a necessidade do desenvolvedorde acordo com a necessidade de retorno para o usuário, utilizando a biblioteca Progress.Json.ObjectModel.JsonObject:
Método | Utilização |
Write( ) method (JsonObject) | // Conversão do retorno para LONGCHAR oGenerateReport:getReport():WRITE(lLogGenerateReport). |
WriteFile( ) method (JsonObject) | // Escrita do retorno para arquivo em diretório definido oGenerateReport:getReport():WriteFile("c:\temp\logJsonReport.json"). |
READ-JSON( ) method | // Conversão de retorno para TEMP-TABLE BUFFER ttLogGenerateReport:READ-JSON("JsonObject", oGenerateReport:getReport()). |
02.7 Programa exemplo
|
02.7.1
Retorno da classeA classe irá retornar um objeto JSON com logs de erros ou de sucesso ocorridos durante a execução. Esse JSON poderá ser utilizado de acordo com a necessidade de retorno para o usuário. No exemplo acima é convertido para temp-table, mas permite também converter para longchar, jogar diretamente num arquivo texto, etc. As possibilidades de conversão podem ser consultadas na documentação Progress.
02.7.2Formato JSON
|
02.8 Diretório de saída do relatório
O diretório de saída dos relatórios será o spool do usuário responsável pelo agendamento de execução dos pedidos, cadastrado no programa SEC000AA e é retornada a string do diretório em que o relatório foi salvo.
03. PARA RELEMBRAR
Para evitar erros na execução, considerar as seguintes informações:
- O código do pedido deve existir na tabela ped_exec;
- O pedido não pode estar com situação igual a 3 (executado) e o pedido deve conter o valor de UUID do Smart View (sv_uuid_token);
- O relatório deverá estar cadastrado Smart View, bem como o programa de geração de pedido deverão estar cadastrados no Programas Datasul - bas_prog_dtsul;
- O nome externo do relatório cadastrado no Programas Datasul deve estar de acordo com o padrão de diretórios reportView: <MODULO>/reportview/<NOME_RELATORIO>.treports. Por exemplo: sec/reportview/rpHistorLogin.treports;
- O relatório deve ser criado e exportado no Smart View (http://[host]:7017/home);
- O layout do relatório exportado do Smart View, deve estar importado no programa Importação Layout SmartView - html.fwk-smartview-layout;
- O relatório será salvo no diretório spool cadastrado para o usuário responsável pelo pedido de execução;
- O nome do servidor (HOST) e porta do servidor (PORT) utilizados para a requisição do token de autenticação será recuperado do cadastro de Propriedades do Sistema > Propriedades Gerais > Configuração Servidor.