Sincronização

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

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.