Índice
Índice |
---|
exclude | .*ndice |
---|
printable | false |
---|
|
Objetivo
O objetivo deste documento é detalhar o funcionamento do consumo de licenças pelo TReportsSmart View, quando os recursos são consumidos por ERPs, e explicar quais informações devem ser enviadas para o TReports Smart View a fim de permitir o abono das licenças.
Introdução
Para possibilitar a integração, o Smart View realiza consultas em APIs públicas dos ERPs, as quais, por padrão, consomem licenças do tipo TOTVS I. Como existem cenários em que o Smart View é chamado diretamente na interface dos ERPs, para que não haja exigência de licença TOTVS I, desenvolvemos uma forma de repasse de contexto de licença para permitir o abono.
De forma resumida, as chamadas do ERP devem enviar um contexto de licença para o Smart View, que por sua vez irá repassá-las no consumo das APIs de integração para que seja realizado o abono.
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 enviar algumas informações para o TReports a fim de possibilitar o abono de licenças e evitar consumo duplicado. Caso essas informações não sejam enviadas, o TReports criará uma nova licença Smart View criará um contexto sob demanda e notificará enviará para o uso ERP para o License Server, sem que ocorra o abono.que seja feito a tratativa de consumo.
Abono de Licenças
Para realizar o abono de licenças é necessário enviar algumas informações para o TReportsSmart View, a fim de evitar consumo duplicado de licenças. Existem duas formas de realizar esse processo: via API e através do Hyperlink de Integração com Viewer Externo.
Representação JSON do contexto de licença
Bloco de código |
---|
language | js |
---|
theme | RDark |
---|
title | License 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
},
"annotations": {
//Informações adicionais que o ERP queira enviar
"issuer": "Protheus",
"version": "12.1.2310"
}
} |
Bloco de código |
---|
language | js |
---|
theme | RDark |
---|
title | Contexto de Licença em base64 |
---|
|
eyJmZWRlcmFsSWQiOiIxMTExMTExMTExMTExMSIsIm1haW5UaHJlYWRJZCI6IjxNYWluVGhyZWFkIGRvIFByb2R1dG8gVE9UVlMewogICAgImZlZGVyYWxJZCI6ICIxMTExMTExMTExMTExMSIsCiAgICAibWFpblRocmVhZElkIjogPE1haW5UaHJlYWQgZG8gUHJvZHV0byBUT1RWUz4sCiAgICAidGhyZWFkSWQiOiA5OTk5OTksCiAgICAibW9kdWxlSWQiOiAiPE1vZHVsbyBkbyBQcm9kdXRvIFRPVFZTPiIsCiAgICAiYWN0aW9uTmFtZSI6ICI8Um90aW5hIGRvIFByb2R1dG8gVE9UVlM+IiwKICAgICJsaWNlbnNlU2VydmVyIjogewogICAgICAgICJob3N0bmFtZSI6ICI8SXAgZG8gTGljZW5zZSBTZXJ2ZXI+IiwidGhyZWFkSWQiOjk5OTk5OSwibW9kdWxlSWQiOiI8TW9kdWxvIGRvIFByb2R1dG8gVE9UVlMIiwKICAgICAgICAicG9ydCI6IDxQb3J0YSBkbyBMaWNlbnNlIFNlcnZlcj4KICAgIH0sCiAgICAiY2xpZW50IjogewogICAgICAgICJob3N0bmFtZSI6ICI8SXAgZG8gUHJvZHV0byBUT1RWUz4iLAogICAgICAgICJwb3J0IjogPFBvcnRhIGRvIFByb2R1dG8gVE9UVlM+IiwiYWN0aW9uTmFtZSI6IjxSb3RpbmEgZG8gUHJvZHV0byBUT1RWUz4iLCJsaWNlbnNlU2VydmVyIjp7Imhvc3RuYW1lIjoiPElwIGRvIExpY2Vuc2UgU2VydmVyPiIsInBvcnQiOiI8UG9ydGEgZG8gTGljZW5zZSBTZXJ2ZXI+In0sImNsaWVudCI6eyJob3N0bmFtZSI6IjxJcCBkbyBQcm9kdXRvIFRPVFZTPiIsInBvcnQiOiI8UG9ydGEgZG8gUHJvZHV0byBUT1RWUz4ifSwidXNlciI6eyJuYW1lIjoiPFVzdeFyaW8gZG8gUHJvZHV0byBUT1RWUz4iLCJpc0Z1bGxEZXRlcm1pbmFkbyI6ZmFsc2UsImNyZWRlbnRpYWxzIjpudWxsfX0===CiAgICB9LAogICAgInVzZXIiOiB7CiAgICAgICAgIm5hbWUiOiAiPFVzdcOhcmlvIGRvIFByb2R1dG8gVE9UVlM+IiwKICAgICAgICAiaXNGdWxsRGV0ZXJtaW5hZG8iOiBmYWxzZSwKICAgICAgICAiY3JlZGVudGlhbHMiOiBudWxsCiAgICB9LAogICAgImFubm90YXRpb25zIjogewoJCS8vSW5mb3JtYcOnw7VlcyBhZGljaW9uYWlzIHF1ZSBvIEVSUCBxdWVpcmEgZW52aWFyCgkJImlzc3VlciI6ICJQcm90aGV1cyIsCiAgICAgICAgInZlcnNpb24iOiAiMTIuMS4yMzEwIgoJfQp9 |
Nota |
---|
|
O preenchimento da propriedade annotations no JSON de Contexto de Licença é opcional. Contextos gerados pelo próprio Smart View não possuem essa propriedade. |
Informações |
---|
title | Como é 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 recurso para que ocorra o abono pelo License Server no consumo das APIs de integração. |
Abono de licenças 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:
Header | Value |
---|
X-License-Context | License Context codificado em base64 |
Abaixo um exemplo de envio de requisição de geração de relatório (api/reports/v2/generate) via Postman, com as informações do contexto de licença em formato JSON convertido para base64:
Abono de licenças via Hyperlink de Integração com Viewer Externo
O TReports Smart View 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. Quando o contexto de licença é incluído na chamada de API para obter as rotas de integração, ele será devolvido em todas as chamadas subsequentes das APIs de integração do ERP, possibilitando o abono de licenças utilizando a licença fornecida pelo ERP.
Segue um exemplo da requisição à API para obter a rota de integração com o recurso Relatório informando o licenseContext e sua respectiva resposta:
Nota |
---|
|
Os demais parâmetros foram omitidos para destacar o licenseContext. |
Informações |
---|
title | Ausência do Contexto de Licença |
---|
|
É importante entender que a API de Hyperlink de Integração com Viewer Externo foi criada para facilitar a integração com o visualizador do ERP TOTVS ou o acesso direto pelo navegador. Seus parâmetros são opcionais e, se omitidos, a API retornará apenas a máscara do parâmetro da query string, conforme exibido na imagem acima. Caso o contexto de licença não seja enviado, um novo contexto será criado sob demanda ao executar a busca de dados para o recurso selecionado, não ocorrendo o abono. |