Checkpoints - Salvamento automático dos objetos

Visão Geral

A platafoma Latromi conta com um recurso de controle de versão e bloqueio de objetos que mantém a integridade e o histórico das alterações. Assim evitamos que um desenvolvedor “mate” as alterações um do outro, ao mesmo tempo que nos permite restaurar estados anteriores de um objeto.

É comum o desenvolvedor iniciar uma alteração e só liberar ela quando terminá-la. Ao final deste processo, é gerada uma revisão, que é uma espécie de “foto” do objeto naquele momento, sendo possível restaurar este estado a qualquer momento.

No entanto, durante este ciclo de desenvolvimento, pode ser necessário restaurar estados intermediários do objeto — alguma alteração feita após o bloqueio e antes da geração da revisão.

Solução

Para proporcionar a restauração destes estados intermediários do objeto, vamos criar os Checkpoints Locais, que são cópias do estado do objeto, geradas toda vez que o objeto for salvo.

Gerando o checkpoint

O processo de geração dos checkpoints será invisível ao desenvolvedor. Eles serão salvos automaticamente, nos formatos de serialização de cada tipo de objeto (json ou xml) na pasta %AppData%\..\Local\LATROMI\Client - {Instância}.

Uma estrutura semelhante a esta deve ser utilizada:

  • :open_file_folder: Nome do usuário
    • :open_file_folder:Código de atualização do objeto
      • :open_file_folder:Data e Hora da alteração
        • :page_facing_up:Estado serializado do objeto

Antes de cada objeto ser salvo (CTRL+S), o estado deste atual deve ser armazenado na estrutura supracitada.

A data e hora usada no nome do diretório deve estar associada ao estado do objeto, ou seja, não é a data e hora atual, mas sim o valor atual da coluna "InvariantModificationTime".

Restaurando um checkpoint

No cabeçalho de cada tipo de Objeto, deve ser adicionado um botão com ícone que remeta à histórico :hourglass_not_done:ou ponto de checagem :pushpin:.

Ao clicar no botão, deve exibir uma listagem de todos os checkpoints locais, permitindo ao desenvolvedor selecionar 1 deles. Ao confirmar, o estado do objeto associado ao checkpoint deve ser carregado em tela. O estado só será salvo no banco de dados se o desenvolvedor chamar a rotina de salvamento.

Essa rotina não envolve nenhuma nova persistência em banco de dados. Tudo será salvo em diretórios do computador do desenvolvedor.