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...')
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 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).
79 2.2 INDICADORES TEXTO
80 Há 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” 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
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 }