Rotinas automáticas de atualização

Scripts de pós-atualização para manipulação de dados após uma atualização do sistema.

As alterações realizadas no modelo de dados são automaticamente aplicadas no esquema da base de dados pelas rotinas de atualização. No entanto, algumas vezes é necessário desenvolver rotinas específicas para tratar casos onde a alteração de tipos pode exigir a manipulação dos dados já existentes ou quando há necessidade de popular novas tabelas ou campos criados.

Para isso, é possível criar rotinas para que a atualização do sistema execute automaticamente. O próprio processo de atualização irá controlar a execução das rotinas criadas pelos times, sendo possível acompanhar posteriormente o resultado da execução de cada script desenvolvido.

Desenvolvimento das rotinas

  1. Os scripts devem ser inseridos a partir do diretório “/Dados/Arquivos/Atualização/Scripts Pos-Atualização/”. Os arquivos devem ser do tipo JavaScript com a extensão “.ijs”.
  2. Eles devem possuir necessariamente a seguinte estrutura:
const UpdateScript = require('@nginstack/devops/lib/update/UpdateScript');
const updateScript = new UpdateScript();
try {
    let updateVersion = null;
    let result = '';
    // Desenvolva aqui a lógica do seu script
    // utilizando as conexões de origem (source) e destino (target)
    // Lembre-se de alimentar os valores das variáveis updateVersion e result
    // que serão passadas ao método finish
    updateScript.finish(result, updateVersion);
} catch (e) {
    updateScript.fail(e);
}
updateScript.result;

Ajuste de permissões

Ao mover classes e arquivos existentes para uma hierarquia de classe recém criada, pode ocorrer de o usuário perder acesso a essas classes e arquivos pelo fato da classe criada não possuir as devidas permissões. Para esses casos a classe UpdateScript possui o método copyChildrenViewPermissions que pode ser utilizada para atribuir permissões de visão à uma classe, com base nas classes e arquivos filhos da classe informada.

Atenção:

  • Os métodos finish e fail são responsáveis pela gravação de registros na tabela de Eventos do Sistema (iSysEvent) e devem ser invocados de acordo com a estrutura acima.
  • Seu script deve retornar sempre na última linha o valor existente na propriedade result do objeto UpdateScript. Ela contém as informações que serão listadas pelo processo de atualização ao seu final.
  • O método finish deve receber uma única versão referente às alterações realizadas no banco de dados.
  • As rotinas criadas não devem executar alterações no contexto da base de dados corrente (ex: database.executeSQL(sql)), pois a base de dados que executa a atualização não é aquela que está sendo atualizada.
  • Rotinas potencialmente lentas não devem ser incorporadas automaticamente ao processo de atualização via scripts de pós-atualização. Crie processos de manutenção específicos para esses casos e sinalize via mensagens de atualização a necessidade de execução desses processos.

Consultando o Histórico de Execução de Scripts de Atualização

Utilize a consulta disponível no caminho abaixo para verificar os status da execução dos scripts de atualização: “Desenvolvimento > Atualização > Histórico de Execução de scripts de atualização”. Scripts que ainda não tiveram sua execução finalizada com sucesso podem ser reexecutados a partir deste relatório.