API externa de comunicação

De MSTECH wiki
Ir para: navegação, pesquisa

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:

IndicadorTipoGrafico.jpg

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 }

IndicadorDataProcessamento.jpg

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 }

Página Inicial

InfoCenter