Índice | ||||
---|---|---|---|---|
|
O objetivo deste documento é detalhar o funcionamento do Consumo de Licenças pelo TReports quando os recursos são consumidos por ERPs e quais informações devem ser enviadas para o TReports de forma a permitir o abono.
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 algumas informações sejam enviadas para o TReports para possibilitar o abono de licenças, evitando assim um consumo duplicado.
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:
Header | Value |
---|---|
X-License-Context | License Context codificado em base64 |
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
{ "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 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 do relatório para que ocorra o abono pelo License Server.
Abaixo um exemplo de envio de requisição de geração de relatório (/api/reports/v1/resources/{UidReport}/generate) via Postman, repassando as informações de License Context (convertido para base64) conforme detalhado no item anterior:
O fluxo de geração de relatório legado via API pública (/api/trep/v1/reports/{UidReports}/execute) permite também o envio das informações de License Context diretamente no corpo da requisição no campo licenseContext (também em base64) do objeto GenerateParams , conforme mostrado abaixo:
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
{ "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 } } } |
Informações | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
|
Informações | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||
|
Page Tree |
---|