TESTE
Modelo Entidade Relacionamento
Atualização da Licença
- O updater atualiza a licença na inicialização e a cada x minutos (onde x é uma configuração no site do UpdateCenter — atualmente configurada para 150 minutos).
- Na atualização da licença, são identificadas as identidades (códigos CRMs) que ainda não possuem licença gerada ou que estão há mais de 24 horas sem renovar a licença. Desta forma, garante-se que cada identidade seja atualizada apenas 1 vez por dia.
- Caso seja necessário atualizar a licença novamente, esse processo é feito manualmente pelo UpdateManager.
- A cada atualização, uma nova licença é gerada com validade de 15 dias.
- A licença é armazenada em cache na base do updater.
Controle de Licenças
- O updater controla o uso das identidades registradas na sua base pelo campo UltimaComunicacao na tabela Identidade.
- Sempre que um sistema (pack, shop, etc) é aberto, a data de comunicação da identidade com o updater é atualizada.
- Se nenhum sistema registrado em uma identidade for aberto durante 3 dias, a licença será adormecida. Isso significa que o updater irá ignorá-la na rotina de atualização de licenças.
- Após 7 dias sem utilização, a licença é excluída, juntamente com todos os aplicativos vinculados a ela.
Negativa de Acesso
- Antes de entregar uma negativa de acesso, o updater força a atualização da licença, ignorando o cache (consultando o cliente novamente no bimer).
- Se os 15 dias de validade da licença expiraram e a renovação não ocorreu, o updater tentará atualizar a licença ao acessar o sistema novamente. Se a renovação não for bem-sucedida, uma negativa por licença expirada será entregue.
Campos Atualizados na Licença
Cada vez que a licença é atualizada, os seguintes campos são atualizados na tabela Identidade:
- UltimaAtualização
- ExpiraçãoLicenca
- UltimaComunicação
Aplicativo
- Sempre que um sistema é aberto, o updater atualiza o campo Comunicacao na tabela Aplicativo.
- Aplicativos sem comunicação há mais de 15 dias serão excluídos, juntamente com seus registros na tabela Aplicativo_Versao e os downloads disponíveis.
Busca por Atualizações
A busca por atualizações ocorre na inicialização do updater e, subsequentemente, a cada intervalo de tempo configurado (onde o valor de x é definido no site do UpdateCenter). Atualmente, o intervalo está configurado para 240 minutos.
Este processo consiste em realizar chamadas para o endpoint /api/verificar_atualizacoes para todos os aplicativos registrados na base local do updater.
A chamada envia os seguintes parâmetros:
- Identidade
- Setor
- Nome do aplicativo
- Versão atual
Ao realizar a consulta, o endpoint retorna as atualizações disponíveis para os aplicativos consultados, suas dependências e o status da versão atual (que foi passada como parâmetro).
Verificação do Checksum
- Após o download, o updater verifica se o checksum do arquivo baixado é igual ao checksum retornado pela consulta ao endpoint /api/verificar_atualizacoes.
- Caso os checksums não coincidam, o arquivo baixado é excluído e nenhum registro da nova versão será salvo na tabela AplicativoVersao.
Sucesso no Download
- Se o download for bem-sucedido, os dados da nova versão serão registrados na tabela AplicativoVersao, conforme o modelo de Entidade-Relacionamento.
- A gravação é realizada após a verificação do download para garantir que, em caso de falha, uma nova tentativa ocorra na próxima busca por atualizações.
- Após estes procedimentos, o updater deleta o instalador da versão anterior à baixada. Exceto nos casos de aplicativos que trabalham no modo “Release/Hotfix” onde a versão só será deletada quando uma nova versão for baixada. Por outra ótica, o download bem-sucedido de uma hotfix não deleta o instalador da versão.
Confirmação de Downloads
- Quando um download é concluído com sucesso, uma chamada é realizada ao endpoint /api/confirmar_download para alimentar os relatórios do UpdateCenter.
- Caso ocorra uma falha na confirmação, o campo DownloadConfirmado permanecerá com o valor false.
- Uma rotina no updater é executada durante a busca por atualizações para enviar a confirmação de download de todos os aplicativos que estavam pendentes de envio.
Atualização Silenciosa
- Quando a flag Silencioso é marcada no cadastro da versão no updatecenter, o campo correspondente na tabela AplicativoVersao é configurado como true. Isso indica que, ao entregar uma atualização, o updater passará um parâmetro para o sistema informando que, durante a atualização, nenhum tipo de feedback visual sobre o processo de atualização será mostrado ao usuário.
Atualização Obrigatória
- Quando a flag Obrigatório é marcada no cadastro da versão, o campo correspondente na tabela AplicativoVersao é configurado como true.Isso indica que, ao entregar a atualização, o updater passará um parâmetro informando ao sistema que a atualização é obrigatória. Ou seja, o usuário não poderá optar por atualizar mais tarde; a atualização será realizada automaticamente.
- Esta rotina utiliza o método /api/confirmardownloads, passando como parâmetros uma lista de versões pendentes de confirmação.
Campo InstaladorExiste
- Este campo é alimentado com o valor true ou false com base na existência do download na pasta Downloads.
- Se o arquivo de download for excluído da pasta, o updater define o campo como false. Quando o sistema solicitar a atualização, o updater fará o download novamente.
Status da Versão
Durante o processo de busca por atualizações, o status das versões registradas na tabela AplicativoVersao é controlado pelo campo Status. Os possíveis valores são:
- 0 - Versão arquivada
- 1 - Versão publicada
- 2 - Desativação total por falha
- 3 - Desativação parcial por falha
Desativação Total por Falha
- Quando uma versão é desativada no UpdateCenter com o status Desativação total por falha, o updater altera o campo Status para 2 na tabela AplicativoVersao durante a busca por atualizações. A partir desse momento, essa versão não será mais sincronizada com outras máquinas, nem será entregue para atualização.
- Como a versão foi desativada total por falha, o updater passa a enxergar novamente a versão anterior a esta como a versão de trabalho atual. Faz de novo o download do instalador e passa a buscar por atualizações a partir dela.
Desativação Parcial por Falha
- Quando uma versão é desativada no UpdateCenter com o status Desativação parcial por falha, o updater altera o status para 3 na tabela AplicativoVersao. Nesse caso, a versão só será entregue para outras máquinas pelo método de atualização ‘VersaoChamadora’.
Campo EntregaDisponivel
- Este campo é alimentado com true ou false e tem como objetivo controlar se uma nova versão já pode ser entregue para atualização.
Exemplo:
Quando o updater encontra mais de uma atualização disponível durante a busca por atualizações, ele enfileira os downloads que serão feitos. O campo EntregaDisponivel só será setado como true para todas as atualizações encontradas quando o updater terminar a rotina de download para o último item da fila.
Campo ExisteApi
- Sempre que uma nova versão é registrada na base local do updater, o sistema verifica se esta versão está registrada no UpdateCenter.
- Caso não esteja, a rotina de sanitização excluirá esse registro posteriormente.
Sanitização
Na inicialização do updater, é realizada a sanitização da base local, com as seguintes ações:
Exclusão de códigos de clientes inativos (adormecidos)
Exclusão de aplicativos que não existem mais no UpdateCenter
Exclusão de aplicativos sem nenhuma versão vinculada
Exclusão de versões inexistentes no UpdateCenter
Exclusão de arquivos de download sem referência na base de dados
Exclusão de instaladores de versões desativadas por falha
Exclusão de aplicativos sem comunicação por mais de 15 dias
Versão chamadora
- Um segundo método de atualização foi criado para mitigar os erros de abertura por versão inferior. Nesse método, quando o sistema é acessado com uma versão inferior à versão da base de dados, o sistema solicita que o updater baixe a versão atual da base.
- O updater aciona o endpoint /api/verificar-versao-chamadora, passando como parâmetros:
- Código de cliente,
- Setor,
- Aplicativo,
- Major,
- Minor,
- Revision,
- Build
- Neste momento, não é realizada nenhuma validação para verificar se o cliente pode ou não utilizar a versão. Essa validação será feita após a atualização da versão, no momento do acesso.
- A versão chamadora também se comporta como um download feito pelo verificar atualizações. Realizando as rotinas validação de checksum, registro e confirmação de download, exclusão de instaladores inferiores, etc.
Fluxo de Verificação de Versão no Updater
A cada abertura do sistema, é realizada uma interação com o updater através do método VerificarVersaoV2.
Parâmetros enviados pelo sistema:
-
Código CRM
-
Setor
-
Sistema
-
Número da versão atual
Parâmetros enviados pelo sistema:
-
Consulta na base local:
O updater verifica na sua base local se existe alguma atualização baixada para o sistema e código CRM informados, cuja versão seja maior que a versão atual informada. -
Critérios para considerar uma atualização:
A atualização será considerada válida se os seguintes campos estiverem devidamente preenchidos:
-
Checksum
-
InstaladorExiste
-
DisponívelParaEntrega
Seleção da atualização:
-
Se mais de uma atualização for encontrada, será selecionada a maior versão disponível.
-
Caso exista uma atualização marcada como essencial, essa será priorizada, mesmo que não seja a maior versão.
Verificação da atualização principal:
Após identificar a atualização que será entregue, o updater verifica:
-
Se o arquivo de download está realmente disponível na pasta Downloads.
-
Se existe alguma atualização dependente da atualização principal encontrada.
Verificação de dependências:
Caso sejam identificadas atualizações dependentes, as mesmas verificações descritas acima serão aplicadas também a essas dependências.
Entrega da atualização:
Ao final do processo, o updater entrega:
-
A atualização principal encontrada.
-
As dependências associadas (se existirem e estiverem na base).