O Publisher Full é uma funcionalidade que permite exibir objetos do seu projeto BIMachine fora da plataforma, de forma dinâmica, segura e com suporte a filtros personalizados. Essa funcionalidade é ideal para incorporar dashboards, análises, KPIs e mapas em aplicações externas.
A seguir, apresentamos o passo a passo completo para configurar e utilizar o Publisher Full.
1. Chave de aplicação 🔑
Para iniciar a utilização do Publisher Full, é necessário criar uma chave de aplicação, veja o passo a passo abaixo ou mais detalhado aqui:
- Acesse o menu Gestão de Contas.
- Clique em Nova Chave de Aplicação.
- Dê um nome para identificar a chave.
- Ccopie a chave gerada.
Essa chave será usada para autenticar futuras requisições à API.
2. Geração Token de autenticação 🔐
Com a chave de aplicação, você poderá gerar um token de autenticação do usuário, necessário para validar os acessos externos.
POST
<url_aplicação>/api/token-manager/?appKey=<chave_aplicação>
Request Body:
{
"email":"email@exemplo.com"
}
Resposta Esperada:
{
"id": 1,
"applicationKey": {
"id": 1,
"name": "NomeDaAplicacao",
"token": "chave_da_aplicacao",
"account": {
"id": 1,
"accountOwnerId": 1,
"accountMasterId": 1,
"applicationKeys": null,
"name": "NomeDaConta"
},
"blockByDomain": false,
"allowedDomains": null
},
"user": {
"id": 1,
"username": "usuario@dominio.com",
"email": "usuario@dominio.com",
"preferredLanguage": "idioma_preferido",
"displayName": "Nome de Exibição",
"viewTutorial": false,
"createObject": false,
"addData": false,
"preferences": {
"id": 1,
"defaultProjectId": 0,
"defaultCockpits": null
},
"phone": "(00) 0000-0000",
"projectLinks": null,
"members": [1],
"avatarLink": "/avatar?user-id=1&i=0000000000000&oi=0"
},
"token": "token_de_autenticacao"
}
O token gerado é utilizado para autenticar o usuário no BIMachine quando utilizado em outras aplicações. Este Token é único e expirável, o tempo de expiração é de 30 minutos, mas é renovado toda vez que for utilizado.
Exemplo de código JAVA para autenticação por meio do token:
public String getToken(){
try {
return new SimpleTimeLimiter().callWithTimeout(new Callable<String>() {
@Override
public String call() throws Exception {
String emailUser = "usuario@dominio.com";
String appKey = "chave_da_aplicacao";
RestTemplate restTemplate = new RestTemplate();
URI uri = UriComponentsBuilder
.fromHttpUrl("http://app.bimachine.com.br/api/token-manager")
.queryParam("appKey", appKey)
.build()
.toUri();
HttpEntity httpEntity = jsonEntity(new EmailToken(emailUser, appKey));
ResponseEntity<Token> responseEntity = restTemplate.postForEntity(uri, httpEntity, Token.class);
if (responseEntity.getStatusCode().value() == 200) {
return responseEntity.getBody().getToken();
} else {
return null;
}
}
}, 2, TimeUnit.SECONDS, true);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
3. Listagem de projetos e objetos 📋
Após autenticar o usuário, você poderá consultar os projetos e objetos disponíveis.
🔎 Listar projetos da conta
GET
<url_aplicação>/api/projects/list?appKey=<chave_aplicação>
🔎 Listar objetos de um projeto
GET
<url_aplicação>/api/projects/<id_projeto>/find-resources-for/<id_usuario>?appKey=<sua_chave_aplicacao>&addCaptions=true&addPublisher=true&filter=analysis&filter=dashboard&filter=maps&filter=kpi
4. Geração da URL para Embed 🔗
Para exibir o objeto fora da plataforma, acesse-o pelo BIMachine, vá até o menu de Publicação e copie o link gerado. Saiba mais.
A URL para embed pode ser customizada conforme parâmetros abaixo:
UriComponentsBuilder url = UriComponentsBuilder.fromHttpUrl("http://" + url_app)
.path("/publisher/" + Files.getFileExtension(object.getPath()) + ".spr")
.queryParam("content", object.getPath())
.queryParam("chart", false)
.queryParam("applyFrame", true)
.queryParam("frameBorderColor", "%23CCCCCC")
.queryParam("borderType", "SIMPLE")
.queryParam("showUpdateDate", true)
.queryParam("showTitle", true)
.queryParam("width", width)
.queryParam("height", height);
5. Aplicação de filtros 🧩
Você pode aplicar filtros personalizados na URL de publicação do objeto. Para isso, é necessário que o filtro esteja:
- Criado no projeto.
- Selecionado na publicação do objeto.
Após estes passos, é necessário converter o(s) filtro(s) desejado(s) com a função JS abaixo:
encodeURIComponent('[{"id":<id_filtro>,"members":["[<nome_do_membro_desejado>]"]}, {"id":<id_filtro>,"members":["[<nome_do_membro_desejado>]"]}]')
Essa função irá retornar uma string que deverá ser agrupado com o link gerado no publisher:
<url_gerado_no_publisher(com seu appKey*)>&filter=<retorno_da_função_js>
*Lembre-se de substituir <appToken> no final da url pelo seu token gerado anteriormente
Esse link irá retornar o objeto do publisher já com o filtro desejado aplicado.
6. Consultas de Filtros 🔍
🔸 Ver membros de um filtro
GET
<url_aplicação>/api/filters/<id_filtro>/members
🔸 Ver opções de períodos dinâmicos (filtros do tipo Tempo)
GET
<url_aplicação>/api/filters/<id_filtro>/dynamic-periodicities
🔸 Consultar informações completas do filtro
GET
<url_aplicação>/api/filters/<id_filtro>