Sincronização
API
Métodos que retornam dados do Gestão (GET) e métodos que gravam dados no Gestão (POST).
Para não sobrecarregar o site, os métodos POST apenas gravam os dados na tabela DCL_Protocolo. Esses protocolos são processados por um serviço do Gestão configurado para executar de tempo em tempo.
As APIs ficam no projeto GestaoEscolar/GestaoAcademica.WebApi, na pasta Controllers.
Aplicativo Diário de Classe (tablet)
Uma API está inicialmente configurada por perfil de cliente. É possível verificar e alterar a url da API na tela de configuração, logado como administrador (admin / @1dm.n).
A sincronização inicial pode ser feita por escola, na tela de configuração, logado como administrador. Ou pode ser feita por um docente no momento do login.
Sempre ao logar o docente também pode escolher a turma que deseja sincronizar, isso agiliza o processo porque sincroniza apenas o necessário.
É possível configurar também, pelo banco do Gestão, a periodicidade para a execução de algumas sincronizações no tablet, mantendo os dados atualizados.
Para cada método de sincronização deve ser criada uma classe de sincronização em apk [diarioclasse-apk] > src > br.com.mstech.diarioclasse > sync na pasta get ou post. Deve também adicionar as chamadas no arquivo Sync.java e adicionar no enumerador em apk [diarioclasse-apk] > src > br.com.mstech.diarioclasse > enumeration > ApiEnum.java.
As chamadas ao métodos de sincronização devem ser assíncronas, utilizando uma AssyncTask ou uma Thread. Modelo de AssyncTask:
private class CarregarAulasTask extends AsyncTask<TIPO_PARAMETRO_ENTRADA, TIPO_PARAMETRO_PROGRESSO, TIPO_PARAMETRO_SAIDA> { @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected Void doInBackground(TIPO_PARAMETRO_ENTRADA... params) { TIPO_PARAMETRO_SAIDA retorno; TIPO_PARAMETRO_PROGRESSO status; publishProgress(status); return retorno; } @Override protected void onProgressUpdate(TIPO_PARAMETRO_PROGRESSO... status) { } @Override protected void onPostExecute(Void result) { super.onPostExecute(result); } } new CarregarAulasTask().execute();
Exemplo de Thread com repetição:
final Handler handler = new Handler(); final Runnable sincronismo = new Runnable() { @Override public void run() { if (NetworkUtil.verificaConexaoInternet(getApplicationContext())) { Sync sync = new Sync(getApplicationContext()); if (sync.postSincronizarDiarioClasse(common.getEscola().getId())) { // remove repetição handler.removeCallbacks(this); } else { handler.postDelayed(this, 5000); } } else { handler.postDelayed(this, 5000); } } }; new Thread(sincronismo).start();
Serviço
Pelo site do Gestão é possível configurar a periodicidade de execução dos serviços que processam os protocolos do Diário de Classe.
Um serviço diferente é executado para cada tipo de protocolo.
Os serviços ficam no projeto Serviços/MSTech.GestaoEscolar.Jobs, dentro da solução do Gestão.
Existe também o projeto Serviços/Testes, que pode ser utilizado para testar um protocolo específico ou a execução de um serviço.