API externa de comunicação

De MSTECH wiki
Revisão de 12h15min de 5 de janeiro de 2017 por Diego.fadanni (Discussão | contribs) (Criou página com '==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...')

(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
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 }
  6 <syntaxhighlight lang="html" line="1" >
  7 
  8 Data: É obrigatório e o formato varia de acordo com o indicador.
  9 Filter: Não é obrigatório e o formato não varia.
 10 Period: Não é obrigatório e o formato não varia.
 11 2.1 INDICADORES GRÁFICOS
 12 Nos indicadores do tipo gráfico, podemos identificar categorias e séries conforme figura abaixo:
 13  
 14 A figura acima representa a interpretação do Highcharts em relação aos dados que são trazidos de uma API. 
 15 Para os gráficos do tipo Barra, Coluna, Área, Areaspline, Pontos ou Linha, espera a seguinte estrutura:
 16 {
 17 	"data": [{
 18 		"entity": "833061aa-0b6d-e111-a12a-000c29820a8b",
 19 		"id": "1",
 20 		"name": "01°CRE",
 21 		"series": {
 22 			"Berçário": "5",
 23 			"Maternal I": "5",
 24 			"Maternal II": "5"
 25 		}
 26 	},
 27 	{
 28 		"entity": "833061aa-0b6d-e111-a12a-000c29820a8b",
 29 		"id": "2",
 30 		"name": "02°CRE",
 31 		"series": {
 32 			"Berçário": "3",
 33 			"Maternal I": "3",
 34 			"Maternal II": "3"
 35 		}
 36 	},
 37 	{
 38 		"entity": "833061aa-0b6d-e111-a12a-000c29820a8b",
 39 		"id": "3",
 40 		"name": "03°CRE",
 41 		"series": {
 42 			"Berçário": "4",
 43 			"Maternal I": "4",
 44 			"Maternal II": "4"
 45 		}
 46 	},
 47 	{
 48 		"entity": "833061aa-0b6d-e111-a12a-000c29820a8b",
 49 		"id": "4",
 50 		"name": "04°CRE",
 51 		"series": {
 52 			"Berçário": "7",
 53 			"Maternal I": "7",
 54 			"Maternal II": "7"
 55 		}
 56 	}]
 57 }
 58 
 59 Para o gráfico de pizza, segue o exemplo:
 60 {
 61 	"data": [{
 62 		"entity": "833061aa-0b6d-e111-a12a-000c29820a8b",
 63 		"id": "1",
 64 		"name": "Eficincia de válvulas",
 65 		"series": {
 66 			"V1":"7.0",
 67 			"V2":"6.9",
 68 			"V3":"9.5",
 69 			"V4":"14.5",
 70 			"V5":"18.2",	
 71 			"V6":"21.5"
 72 		}
 73 	}]
 74 }
 75 
 76 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).
 77 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.
 78  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).
 79 2.2 INDICADORES TEXTO
 80  também a possibilidade da criação de indicadores textuais, com o objetivo de fornecer uma informação escrita ao usuário.
 81 Abaixo segue um exemplo de Json para este tipo de indicador:
 82 {
 83  "data": [
 84 {
 85 "entity": "6cf424dc-8ec3-e011-9b36-00155d033206",
 86 "id": "1",
 87 "text": "Ciclo Autoral <br/>170.719"
 88 }
 89 ]
 90 }
 91 
 92 A informação que será exibida pelo indicador será especificada na “chave” text.
 93 Nesta chave existe a possibilidade de acrescentar tags html; geralmente se este tipo de indicador for usado em um painel com layout customizado.
 94 Geralmente as tags mais usadas são para a quebra de linhas e formatação da fonte (tamanho, negrito, itálico, sublinhado, etc).
 95 2.3 FILTROS
 96 O campo “filter”  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
 97 
 98 {
 99  "filter": [
100 {
101 "id": "AnoInicio",
102 "nameJson": "anoInicio",
103 "values": [
104 		2015,
105 		2016,
106 		2017
107 ]
108 }
109 ]
110 }
111 2.4 DATA DE PROCESSAMENTO
112 
113 O campo “period” é a data de processamento dos gráficos. Esse processamento pode ser feito em somente 1 dia ou em vários dias.
114 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.
115 
116 {
117 "period": [31/12/2014]
118 }
119 
120 {
121 "period": [
122 		31/12/2014,
123 		31/12/2015,
124 		31/12/2016
125 ]
126 }
127 
128 
129 
130 
131 
132 
133 
134 3 EXEMPLO COMPLETO
135 {
136 "period": [
137 		31/12/2014,
138 		31/12/2015,
139 		31/12/2016
140 ],
141 "data": [{
142 		"entity": "833061aa-0b6d-e111-a12a-000c29820a8b",
143 		"id": "1",
144 		"name": "01°CRE",
145 		"series": {
146 			"Berçário": "5",
147 			"Maternal I": "5",
148 			"Maternal II": "5"
149 		}
150 	},
151 	{
152 		"entity": "833061aa-0b6d-e111-a12a-000c29820a8b",
153 		"id": "2",
154 		"name": "02°CRE",
155 		"series": {
156 			"Berçário": "3",
157 			"Maternal I": "3",
158 			"Maternal II": "3"
159 		}
160 	},
161 	{
162 		"entity": "833061aa-0b6d-e111-a12a-000c29820a8b",
163 		"id": "3",
164 		"name": "03°CRE",
165 		"series": {
166 			"Berçário": "4",
167 			"Maternal I": "4",
168 			"Maternal II": "4"
169 		}
170 	},
171 	{
172 		"entity": "833061aa-0b6d-e111-a12a-000c29820a8b",
173 		"id": "4",
174 		"name": "04°CRE",
175 		"series": {
176 			"Berçário": "7",
177 			"Maternal I": "7",
178 			"Maternal II": "7"
179 		}
180 	}],
181 "filter": [
182 {
183 "id": "AnoInicio",
184 "nameJson": "anoInicio",
185 "values": [
186 		2015,
187 		2016,
188 		2017
189 ]
190 }
191 ]
192 
193 }