As rotinas de atualização são processos que devem ser executados nas atualizações do sistema. Na grande maioria das vezes estes processos consistem em rotinas que populam ou alteram os dados do mesmo. A automação deste processo e a garantia de que ele será executado, agiliza as atualizações do sistema e reduzem os riscos de uso inadequado do mesmo.
Convenções
As rotinas podem ser colocadas em qualquer bloco, mas sugere-se criar um bloco específicos para as atualizações de cada sub-sistema. O nome deste bloco deve ser UPGRADES_SISTEMA.
Exemplos de blocos:
DOENSA.UPGRADES_DOENSA
COLECA.UPGRADES_COLECA
etc.
Cada rotina deve ser incluída neste bloco como uma função no mesmo. Esta função deverá ser do tipo UPGRADE e seu nome DEVE começar OBRIGATORIAMENTE com a palavra UPGRADE. O resto do nome da função determinará a ordem de sua execução. Sugere-se que o nome seja a data de sua definição no formado ISO.
Exemplo:
UPGRADE_2014-10-28
Para cada função, deve-se incluir um título apropriado que dá um significado à atualização. Este título será apresentado na pro-atualizações e serve como orientação do usuário que estiver executando a rotina.
Exemplo:
Popular moeda padrão dos estabelecimentos
A descrição da função é importante para a equipe técnica mas não aparece para o cliente final.
Implementação das rotinas
A codificação das rotinas é igual a codificação de uma operação do tipo CUSTOM_ACTION.
Caso não seja necessário qualquer tipo de parâmetro, basta criar o código de implementação da rotina.
Caso seja necessário algum parâmetro, basta criar campos do tipo UNBOUND_CUSTOM, vinculá-los a operação (opcional ou requerido) e implementar o código que fará uso dos parâmetros informados pelo usuário.
Algumas operações comuns nas rotinas de atualização:
Depois de criar a operação, é necessário regerar o arquivo app-info.xml do sistema (Opção "Application Information" no build).
Execução
As rotinas de atualização são executadas através de interface RTSYSINF.PRO_ATUALIZACOES que é chamada automaticamente quando a atualização é executada no ABOUT.
Quando esta interface é chamada, ela varre todo os sistema em busca de funcionalidades UPGRADE que ainda não foram executadas.
As funcionalidades que ainda não foram executadas e que não tiverem formulários vinculados são automaticamente executadas.
As funcionalidades que tiverem formulários vinculados são reportadas com um link para o usuário abrir e executar.
Antes de executar as rotinas, o sistema já executa automaticamente:
Ajustes das tabelas do schema (UTL_DB_SCHEMA sem recriar views)
Importação das operações (IMP_OPERACOES)
Chamada avulsa
Caso se deseja reexecutar uma rotina de upgrade isoladamente, basta chamá-la diretamente pela URL.