Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

CONTEÚDO

Índice
minLevel2

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ÇÃO

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

NomeTipoDescrição
pOrderINTEGERCódigo do pedido de execução.
pLayoutNameCHARACTERNome do relatório do Cadastro de Programas Datasul.
pReportParamsJSONOBJECTObjeto com os parâmetros do relatório.
pFormatCHARACTERFormato do relatório. Formatos permitidos: .csv, .docx, .html, .jpeg, .mht, .pdf, .png, .rtf, .txt, .xls, .xlsx.
Aviso
titleImportante

O nome externo do relatório cadastrado em Programas Datasul - bas_prog_dtsul será inserido 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 Instância da classe

USING com.totvs.framework.smartview.GenerateReport.


DEFINE VARIABLE oGenerateReport AS GenerateReport NO-UNDO.

DEFINE VARIABLE oJsonLog             AS JsonObject         NO-UNDO.


oGenerateReport = NEW GenerateReport(pOrder, pLayoutName, pReportParams, pFormat).

02.3 Chamada do método gerador do relatório

ASSIGN oJsonLog = oGenerateReport:getReport().

02.4 Modelo JSON parâmetros do relatório

{
    "progIni":["rpHistorLogin"],
    "progFim":["rpHistorLogin"]
}
Nota

O JSON repassa os parâmetros de acordo com o Objeto de Negócio do relatório, porém pode ser enviado vazio (NEW JsonObject()). 

02.5 Programa exemplo

Bloco de código
titlegenerateReportExample.p
linenumberstrue
USING Progress.Json.ObjectModel.JsonObject FROM PROPATH.
USING Progress.Json.ObjectModel.ObjectModelParser FROM PROPATH. 
USING com.totvs.framework.smartview.GenerateReport FROM PROPATH.

DEFINE TEMP-TABLE ttLogGenerateReport NO-UNDO
    FIELD iCode  AS INTEGER
    FIELD cMsg   AS CHARACTER
    FIELD lError AS LOGICAL.

DEFINE VARIABLE oGenerateReport  AS GenerateReport    NO-UNDO.
DEFINE VARIABLE oParser          AS ObjectModelParser NO-UNDO. 
DEFINE VARIABLE oReportParams    AS JsonObject        NO-UNDO. 
DEFINE VARIABLE cMessage         AS CHARACTER         NO-UNDO.
DEF VAR oMessage AS JsonObject NO-UNDO.

oGenerateReport = NEW GenerateReport(1425, "rpHistorLogin", NEW JsonObject(), "pdf").

BUFFER ttLogGenerateReport:READ-JSON("JsonObject", oGenerateReport:getReport()).

OUTPUT TO c:\temp\ttLogGenerateReport.txt.        
FOR EACH ttLogGenerateReport:
    EXPORT ttLogGenerateReport.
END.
OUTPUT CLOSE.

FINALLY: 
    IF VALID-OBJECT(oGenerateReport) THEN DELETE OBJECT oGenerateReport.
END.

02.5.1 Retorno da classe

A 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.5.2 Formato JSON

Bloco de código
titleJSON GenerateReport
linenumberstrue
{
  "ttLogGenerateReport": [
    {
      "iCode": 57908,
      "cMsg": "A requisição de geração de token para exportação do relatório Smart View retornou erro 500.\n",
      "lError": true
    },
    {
      "iCode": 57909,
      "cMsg": "A requisição de exportação do relatório Smart View retornou erro 401. Verifique se o relatório está cadastrado no Smart View e importado no Datasul ou se os conectores estão disponíveis entre Datasul x Smart View.\n",
      "lError": true
    }
  ]
}

02.6 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. INFORMAÇÕES IMPORTANTES

Para evitar erros na execução, considerar as seguintes informações:

    • O código do pedido deve existir na tabela ped_exec;
    • O relatório deverá estar cadastrado 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: men/reportview/rpProgramasDatasul.treports;
    • O layout do relatório 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.