Árvore de páginas

Versões comparadas

Chave

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

Índice


       

Índice
exclude.*ndice
printablefalse

Objetivo


     O objetivo deste documento é detalhar o funcionamento do Consumo consumo de Licenças licenças pelo TReports, quando os recursos são consumidos por ERPs, e explicar quais informações devem ser enviadas para o TReports a fim de forma a permitir o abono das licenças.

Introdução


     Para Para realizar a pré-visualização e exibição de relatórios, ou o design e visualização dos demais recursos via interface, é necessária a disponibilidade de uma   Licença TOTVS I. Essa exigência também ocorre quando é solicitada a geração de relatórios via API pública. Dessa forma, quando os recursos do TReports são consumidos pelo ERP que implementou a integração, é necessário que enviar algumas informações sejam enviadas para o TReports para a fim de possibilitar o abono de licenças , evitando assim um e evitar consumo duplicado.

Abono de Licença

    O ERP, quando consumir as APIs públicas de geração de Relatórios, deverá passar via cabeçalho da requisição as seguintes informações:

HeaderValue

Para realizar o abono de licenças é necessário enviar algumas informações para o TReports, a fim de evitar consumo duplicado de licenças. Existem três formas de realizar esse processo: via API, via corpo da requisição(Relatório Legado) e através do Hyperlink de integração com Viewer Externo.

Representação JSON do contexto de licença

X-License-ContextLicense Context codificado em base64

Bloco de código
languagejs
themeRDark
titleLicense Context
{
      "federalId": "11111111111111",
      "mainThreadId": <MainThread do Produto TOTVS>,
      "threadId": 999999,
      "moduleId": "<Modulo do Produto TOTVS>",
      "actionName": "<Rotina do Produto TOTVS>",
      "licenseServer": {
            "hostname": "<Ip do License Server>",
            "port": <Porta do License Server>
      },
      "client": {
            "hostname": "<Ip do Produto TOTVS>",
            "port": <Porta do Produto TOTVS>
      },
      "user": {
            "name": "<Usuário do Produto TOTVS>",
             "isFullDeterminado": false,
             "credentials": null
      }
}
  O abono se dá pela combinação do
Bloco de código
languagejs
themeRDark
titleContexto de Licença em base64
eyJmZWRlcmFsSWQiOiIxMTExMTExMTExMTExMSIsIm1haW5UaHJlYWRJZCI6IjxNYWluVGhyZWFkIGRvIFByb2R1dG8gVE9UVlM+IiwidGhyZWFkSWQiOjk5OTk5OSwibW9kdWxlSWQiOiI8TW9kdWxvIGRvIFByb2R1dG8gVE9UVlM+IiwiYWN0aW9uTmFtZSI6IjxSb3RpbmEgZG8gUHJvZHV0byBUT1RWUz4iLCJsaWNlbnNlU2VydmVyIjp7Imhvc3RuYW1lIjoiPElwIGRvIExpY2Vuc2UgU2VydmVyPiIsInBvcnQiOiI8UG9ydGEgZG8gTGljZW5zZSBTZXJ2ZXI+In0sImNsaWVudCI6eyJob3N0bmFtZSI6IjxJcCBkbyBQcm9kdXRvIFRPVFZTPiIsInBvcnQiOiI8UG9ydGEgZG8gUHJvZHV0byBUT1RWUz4ifSwidXNlciI6eyJuYW1lIjoiPFVzdeFyaW8gZG8gUHJvZHV0byBUT1RWUz4iLCJpc0Z1bGxEZXRlcm1pbmFkbyI6ZmFsc2UsImNyZWRlbnRpYWxzIjpudWxsfX0===
Informações
titleComo é concedido o abono?

O abono é concedido pela combinação do mainThreadId + moduleId + client:hostname + client:port + user:name. Esses valores devem ser preenchidos com os mesmos valores utilizados pelo ERP que está solicitando a geração/visualização do

relatório

recurso para que ocorra o abono pelo License Server.

Exemplo

Abono de licença via API


Quando o ERP consumir as APIs públicas de geração de relatórios, deverá passar as seguintes informações via cabeçalho da requisição:

HeaderValue
X-License-ContextLicense Context codificado em base64

Abaixo um exemplo de envio de requisição de geração de relatório (/api/reports/v1/resources/{UidReport}v2/generate) via Postman, repassando com as informações de License Context (do contexto de licença em formato JSON convertido para base64) conforme detalhado no item anterior:

Image RemovedImage Added

Abono de

Licenças em

licenças via corpo da requisição (Relatório Legado)


     O O fluxo de geração de relatório legado via API pública (/api/trep/v1/reportsReports/{UidReportsuId}/execute) permite também o envio das informações do contexto de License Context diretamente licença no corpo da requisição no campo "licenseContext" (também em base64) do objeto "GenerateParams", conforme mostrado abaixo:

Bloco de código
languagejs
themeRDark
titleBody Corpo da requisição
{
    "user": "",
    "notificationParams": {},
    "generateParams": {
        "CustomData": "",
        "stopExecutionOnError": true,
        "licenseContext": "eyJmZWRlcmFsSWQiOiAiICAgICAgICAgICAgICAiLCJtYWluVGhyZWFkSWQiOiA1MTMwOCwidGhyZWFkSWQiOiA1MTMwOCwibW9kdWxlSWQiOiAiMiIsImFjdGlvbk5hbWUiOiAiVFJFUE9SVFNfMSIsImxpY2Vuc2VTZXJ2ZXIiOiB7Imhvc3RuYW1lIjogImxvY2FsaG9zdCIsInBvcnQiOiA1NTU1IH0sImNsaWVudCI6IHsiaG9zdG5hbWUiOiAiMTI3LjAuMC4xIiwicG9ydCI6IDEyMzUgfSwidXNlciI6IHsibmFtZSI6ICIwMDAwMDAiLCJpc0Z1bGxEZXRlcm1pbmFkbyI6IGZhbHNlLCJjcmVkZW50aWFscyI6IG51bGx9fQ==",
        "exportFileType": 0,
        "isView": false,
        "parameters": [
            {
                "type": "String",
                "name": "codigo",
                "value": "000839",
                "description": "informe o codigo do produto"
            }
        ],
        "filters": []
    },
    "id": 0,
    "scheduleParams": {
        "repeat": false,
        "type": 0,

        "repeatType": 0,
        "repeatMonthPattern": {
            "last": false,
            "day": 0
        },
        "repeatTime": "string",
        "repeatWeekPattern": {
            "sunday": false,
            "monday": false,
            "thursday": false,
            "friday": false,
            "tuesday": false,
            "wednesday": false,
            "saturday": false
        }
    }
}

Abono de licença via Hyperlink de Integração com Viewer Externo


O TReports disponibiliza uma API para cada recurso (Relatório, Tabela Dinâmica e Visão de dados) que retorna as rotas de integração por interface com as funcionalidades de cada recurso. A seguir está o link para mais detalhes sobre a integração usando hyperlink de cada recurso:

Todas essas APIs tem o parâmetro "licenseContext" para ser informado seguindo a estrutura JSON do contexto de licença codificado em base64.

Segue um exemplo da resposta de uma requisição para obter a rota de integração com o recurso Relatório informando o licenseContext:

Nota: Os demais parâmetros foram omitidos para destacar o licenseContext.

Bloco de código
languagejs
themeRDark
titleResposta API Hyperlink de Integração com Viewer Externo
{
    "viewer": "http://framework-bh.localhost:7027/reports/9ac2b84b-a6c2-46c2-b0c8-1cfd7ef92f29/view?licenseContext=contextoDeLicencaEmBase64",
    "viewer-pdf": "http://framework-bh.localhost:7027/reports/9ac2b84b-a6c2-46c2-b0c8-1cfd7ef92f29/view-pdf?licenseContext=contextoDeLicencaEmBase64"
}



Informações
iconfalse
Informações
iconfalse

Produto: Framework

Informações
iconfalse

Processo: TReports 

Informações

Versão: 1.1 e superiores

Informações
iconfalse
Informações
iconfalse

Status: Rascunho

Informações
iconfalse

Data:  

Informações
iconfalse

Autores
 Aline Cristina Braz de Oliveira 

Carlos Philippe de Farias Marques 

Cesar Henrique Silva Rodrigues_ 

Diogo Damiani Ferreira 

Usuário desconhecido (fernando.souza)

Usuário desconhecido (samuel.frederico) 

Wemerson Marcelo Martins Guimarães 


Page Tree