API externa de comunicação
Índice
Estrutura
A API do sistema foi criada para comunicar-se com diversas outras APIs de forma padronizada. Para isso, alguns padrões para a criação dessas outras APIs devem ser seguidos.
São carregadas diversas webparts, que são estruturas que contém os gráficos. Cada gráfico é uma requisição à API de um serviço, pré-cadastrados no cadastro de serviços.
Tipo de indicadores suportados:
- Gráfico
- Barra
- Coluna
- Área
- Areaspline
- Pontos
- Linha
- Pizza
- Texto
Para que seja exibido o indicador, deve-se seguir o formato JSON pré-definido:
1 {
2 "data": [],
3 "filter": [],
4 "period": []
5 }
Data(obrigatório): O formato varia de acordo com o indicador.
Filter: Não é obrigatório e o formato não varia.
Period: Não é obrigatório e o formato não varia.
Indicador do tipo gráfico
Nos indicadores do tipo gráfico, podemos identificar categorias e séries conforme figura abaixo:
A figura acima representa a interpretação do Highcharts em relação aos dados que são trazidos de uma API.
Para os gráficos do tipo Barra, Coluna, Área, Areaspline, Pontos ou Linha, espera a seguinte estrutura:
1 {
2 "data": [{
3 "entity": "833061aa-0b6d-e111-a12a-000c29820a8b",
4 "id": "1",
5 "name": "01°CRE",
6 "series": {
7 "Berçário": "5",
8 "Maternal I": "5",
9 "Maternal II": "5"
10 }
11 },
12 {
13 "entity": "833061aa-0b6d-e111-a12a-000c29820a8b",
14 "id": "2",
15 "name": "02°CRE",
16 "series": {
17 "Berçário": "3",
18 "Maternal I": "3",
19 "Maternal II": "3"
20 }
21 },
22 {
23 "entity": "833061aa-0b6d-e111-a12a-000c29820a8b",
24 "id": "3",
25 "name": "03°CRE",
26 "series": {
27 "Berçário": "4",
28 "Maternal I": "4",
29 "Maternal II": "4"
30 }
31 },
32 {
33 "entity": "833061aa-0b6d-e111-a12a-000c29820a8b",
34 "id": "4",
35 "name": "04°CRE",
36 "series": {
37 "Berçário": "7",
38 "Maternal I": "7",
39 "Maternal II": "7"
40 }
41 }]
42 }
Para o gráfico de pizza, segue o exemplo:
1 {
2 "data": [{
3 "entity": "833061aa-0b6d-e111-a12a-000c29820a8b",
4 "id": "1",
5 "name": "Eficincia de válvulas",
6 "series": {
7 "V1":"7.0",
8 "V2":"6.9",
9 "V3":"9.5",
10 "V4":"14.5",
11 "V5":"18.2",
12 "V6":"21.5"
13 }
14 }]
15 }
Conforme exemplo citado acima, é esperado um objeto “data”. Dentro deste objeto, é necessário um atributo “Id” e um dataName, que representarão um ID (não exibido no gráfico) e o NOME, que é exibido na categoria do gráfico (Ex: Vagas, Inscrições, Aloc, etc).
Este id é utilizado como parâmetro de filtro no momento em que é clicado em uma categoria, para realizar o drilldown e exibir um próximo gráfico filtrado por esta categoria.
Há também um objeto “series” dentro de “data”. Nele é possível identificar um padrão “chave”:“valor”, em que “chave” será apresentado no gráfico com o nome da série (Ex: Berçário, Maternal I, Maternal II, etc) e o “valor” é expressado como quantidade da série (Ex: 71,5; 78,8; etc).
Indicador do tipo texto
Há também a possibilidade da criação de indicadores textuais, com o objetivo de fornecer uma informação escrita ao usuário.
Abaixo segue um exemplo de Json para este tipo de indicador:
1 {
2 "data": [{
3 "entity": "6cf424dc-8ec3-e011-9b36-00155d033206",
4 "id": "1",
5 "text": "Ciclo Autoral <br/>170.719"
6 }]
7 }
A informação que será exibida pelo indicador será especificada na “chave” text.
Nesta chave existe a possibilidade de acrescentar tags html; geralmente se este tipo de indicador for usado em um painel com layout customizado.
Geralmente as tags mais usadas são para a quebra de linhas e formatação da fonte (tamanho, negrito, itálico, sublinhado, etc).
Filtros
O campo “filter” dá a possibilidade de adicionar filtros dos quais podem ser utilizados nos indicadores. É necessário que o recurso do serviço esteja preparada para receber esse filtro. Ex: http://siteapi.com.br/API/NomeRecurso?anoInicio=2016
1 {
2 "filter": [{
3 "id": "AnoInicio",
4 "nameJson": "anoInicio",
5 "values": [
6 “2015”,
7 “2016”,
8 “2017”
9 ]
10 }]
11 }
Data de processamento
O campo “period” é a data de processamento dos gráficos. Esse processamento pode ser feito em somente 1 dia ou em vários dias.
Essas datas deverão ser enviadas no formato de string ou em caso de processamento em mais de 1 dia, deverá ser enviado uma lista de strings.
No sistema será mostrado a data de processamento do gráfico, em caso de processamento em mais de 1 dia será mostrada a data mais atual.
1 {
2 "period": [“31/12/2014”]
3 }
4
5 {
6 "period": [
7 “31/12/2014”,
8 “31/12/2015”,
9 “31/12/2016”
10 ]
11 }
Exemplo Completo
1 {
2 "period": [
3 “31/12/2014”,
4 “31/12/2015”,
5 “31/12/2016”
6 ],
7 "data": [{
8 "entity": "833061aa-0b6d-e111-a12a-000c29820a8b",
9 "id": "1",
10 "name": "01°CRE",
11 "series": {
12 "Berçário": "5",
13 "Maternal I": "5",
14 "Maternal II": "5"
15 }
16 },
17 {
18 "entity": "833061aa-0b6d-e111-a12a-000c29820a8b",
19 "id": "2",
20 "name": "02°CRE",
21 "series": {
22 "Berçário": "3",
23 "Maternal I": "3",
24 "Maternal II": "3"
25 }
26 },
27 {
28 "entity": "833061aa-0b6d-e111-a12a-000c29820a8b",
29 "id": "3",
30 "name": "03°CRE",
31 "series": {
32 "Berçário": "4",
33 "Maternal I": "4",
34 "Maternal II": "4"
35 }
36 },
37 {
38 "entity": "833061aa-0b6d-e111-a12a-000c29820a8b",
39 "id": "4",
40 "name": "04°CRE",
41 "series": {
42 "Berçário": "7",
43 "Maternal I": "7",
44 "Maternal II": "7"
45 }
46 }],
47 "filter": [{
48 "id": "AnoInicio",
49 "nameJson": "anoInicio",
50 "values": [
51 “2015”,
52 “2016”,
53 “2017”
54 ]
55 }]
56 }