Falha
Não deveria ocorrer, mas caso tenhamos novamente situações que já ocorreram, que precisamos “recompilar” uma versão já liberada que está rodando em cliente, agora é possível atualizar o banco de dados se houver alteração de banco nessa recompilação, que antes não era possível, pois quando a aplicação era iniciada, ela verificava na TBConfiguration a versão do banco de dados, caso fosse diferente do sistema, ele faria o update ou rollback. No cenário de recompilação, ele nunca iria atualizar o banco, pois a versão que está rodando, vai ser sempre igual à do banco de dados.
Solução
Então, o que foi feito?
Foi adicionado um campo novo na TBProperties, chamada de build, ela armazena o número da build (controle interno).
Por default, o número da build é 1 ou seja, não é uma versão recompilada.
Vou fazer uma recompilação de versão, com alterações em banco, o que fazer pro update funcionar?
-
Deve-se trocar o número da BUILD_NUMBER na classe ConstantHelper.java.
Exemplo: Alterar para 2.
-
Deve-se criar uma pasta chamada “Build” no resource do projeto core, dentro da pasta da versão, onde já contém as queries, criar mais uma pasta com o número do Build, contido na variável BUILD_NUMBER na classe ConstantHelper.java que foi alterado no passo à cima, feito isso, deve-se criar o arquivo query.json, no mesmo padrão das outras, separadas por common, agent, concentrador e sat server.
Obs: O nome do arquivo DEVE ser query.json
Exemplo:
Pronto, ao subir o sistema recompilado, o mesmo irá identificar que no banco de dados, na TBProperties, o valor da build é 1, e o da variável BUILD_NUMBER é diferente de 1, portanto, buscará o resource na pasta e executará as queries. Ao executar elas, atualizará o campo da TBProperties para o valor da variável BUILD_NUMBER, para que quando reiniciar a aplicação, não executar novamente as queries.
Obs: Não esquecer de adicionar as queries criadas para a recompilação aos arquivos da pasta Rollback e Update, pois caso alguém utilize essa versão recompilada sem banco de dados criado, o mesmo irá executar apenas as queries dos arquivos SqlRollback/query.json e SqlUpdate/query.json, então, os mesmos devem estar completos.
Outras informações
Fonte: Rainmakers Team