Migrando da versão 14.0.7 para a versão 16.1.8

Uma das maiores preocupações ao implementar os recursos na versão 16.1.8 foi o de tornar o processo de migração para os desenvolvedores que estiverem usando a versão 14.0.7 do MenuFlex o mais simples possível. Segue abaixo em detalhes o processo de migração.

Pré-requisitos

Para que a migração da versão 14.0.7 para a versão 16.1.8 ocorra sem problemas, os seguintes pré-requisitos devem ser observados:

  • O desenvolvedor não pode ter alterado nenhuma das tabelas que fazem parte do MenuFlex;
  • O desenvolvedor não pode ter usado nenhuma posição do filelist entre 4000 e 4016, que serão usadas pelas tabelas do MenuFlex;
  • O desenvolvedor não pode ter alterado nenhum pacote integrante do MenuFlex, incluindo os dicionários de dados das tabelas do MenuFlex que serão substituídos pelos dicionários de dados da nova versão;
  • A Workspace deve estar na mesma versão do VDF que a Library do MenuFlex que será usada. Portanto, faça primeiro a migração da Workspace para a versão do VDF correta antes de continuar.

A não observação dos pré-requisitos acima pode provocar problemas no processo de migração e o desenvolvedor terá de corrigi-los por conta própria.

Backup

Antes de iniciar o processo de migração na área de desenvolvimento é sugerido fazer um backup de todas as Workspaces e Libraries que serão migradas.

Antes de iniciar o processo de atualização na área de produção é sugerido fazer um backup da base de dados e dos programas compilados.

Migração passo-a-passo

Copiar novos arquivos

Foram acrescentadas duas novas tabelas na versão 16.1.8: MENSAGEM e ARQLOGS.

O primeiro passo do processo de migração será copiar estas duas tabelas (DAT, K*, TAG e HDR) para o diretório Data da Workspace. É necessário então copiar a partir do diretório Data da NovaWorkspace que acompanha o MenuFlex.

Não é necessário cadastrar estas tabelas no filelist da aplicação por enquanto.

Removendo a Library antiga e acrecentando a Library nova

É necessário então remover a Library da versão 14.0.7 e acrecentar a Library da versão 16.1.8 da seguinte forma:

  • Acessar Tools > Maintain Libraries;
  • Remover a Library do MenuFlex "antiga";
  • Acrecentar a Library da versão 16.1.8 localizando o arquivo sws da nova versão.

Executando o programa de atualização

A Library do MenuFlex possui um projeto criado especialmente para atualizar a estrutura das tabelas do MenuFlex 14.0.7 para a versão 16.1.8, bem como cadastrar as novas entradas no Filelist. Para executar este programa nenhuma tabela pode estar aberta, pois o programa abrirá as tabelas em modo exclusivo. É necessário executar este programa tanto na área de desenvolvimento como na área de produção.

Adicionar o projeto na Workspace clicando em "Project > Add Project" e localizar o arquivo AtualizaTabelas16_1_8.src que está no diretório MenuFlexLibraryAppSrcMenuFlex_Library_ProjetosAtualizacao. Não é necessário copiar este arquivo para o diretório AppSrc da Workspace.

Atenção: Este processo pode demorar bastante se a quantidade de registros nas tabelas que serão reestruturadas for muito grande. Recomenda-se que a execução do programa de atualização seja feita na máquina onde está a base de dados e não em um computador qualquer da rede.

Atualizando os arquivos FD

Após executar o programa de atualização, abrir o Database Builder e gerar os arquivos .FD de todas as tabelas da Workspace.

Copiando os dicionários de dados

Agora que as tabelas já estão atualizadas, a próxima etapa é copiar os arquivos .DD. A partir do diretório DDSrc da NovaWorkspace, copiar todos os arquivos .DD para o diretório DDSrc da Workspace.

Após copiar os arquivos, executar a opção "Tools > Data Dictionary Maintenance > Rebuild DD List..." para reconstruir a lista de DD’s e adicionar o DD’s das novas tabelas do MenuFlex automaticamente.

Substituindo os projetos

Novos recursos e objetos foram adicionados nos templates de projetos do MenuFlex. Sendo assim, a maneira mais simples de deixar o projeto atualizado sem ter que ficar comparando o fonte do projeto com o do MenuFlex é criar um novo projeto em substituição ao atual.

Para começar é necessário remover os projetos da lista de projetos clicando em "Projetct > Remove Project(s)". Este processo não irá excluir fisicamente os arquivos .SRC, somente os removerá da lista de projetos da Workspace.

Pelo Windows Explorer renomear cada um dos projetos colocando um sufixo "_old" antes da extensão. Exemplo: PCIPlast_old.src.

IMPORTANTE: não exclua os projetos até que a migração esteja terminada e devidamente testada.

Uma vez renomeado, para cada projeto .src é necessário:

  • Criar um novo projeto clicando em "File > New > Project..." e escolher a opção "MenuFlex - Projeto Windows" ou "MenuFlex - Projeto de Teste" se o projeto que está sendo recriado era um projeto de teste. 
  • Em File Name informar o mesmo nome do projeto que existia (sem o sufixo _old.src, evidentemente). 
  • No topo do novo projeto haverá a linha "Use MenuFlex_Library_PacotesMenuFlex_Library_AllEnt.pkg". Verificar se no projeto original estava sendo usado esta mesma linha ou era usado um pacote pré-compilado próprio e, se necessário, ajustar. 
  • Substituir o objeto oApplication do projeto criado pelo objeto oApplication do projeto "old". 
  • Se o sistema foi dividido em módulos, verificar qual era o valor atribuído à variável giIdModulo no projeto "old" e aplicar o mesmo valor no novo projeto.
  • Atualizar o Label do objeto oMain do novo projeto deixando-o igual ao do projeto "old".
  • No projeto "old", copiar todos os Use’s de Views e ReportViews da Workspace que estavam dentro do objeto oClientArea e colocar no mesmo local no novo projeto. É necessário cuidar para não sobrepor os Use’s que estão no novo projeto, pois eles devem ser mantidos. 

O pacote TopViewToolBar.pkg

Uma das novidades do MenuFlex 16.1.8 é que não existe mais o pacote TopViewToolBar.pkg. Este pacote era responsável por gerar a barra de ferramenta com os botões nas Views e era incluído usando o comando "#INCLUDE". Esta técnica fazia com que o tamanho do programa compilado ficasse consideravelmente maior, uma vez que em cada View eram incluídos todos os objetos da Toolbar. Nesta nova versão a barra de ferramentas é um objeto interno, criado na classe cWsDbView, que inclui novas propriedades para controlar individualmente a exibição de cada botão ou da barra inteira:

Propriedades da dbView

Sendo assim, o pacote TopViewToolBar.pkg não faz mais parte do MenuFlex e suas referências devem ser removidas de suas views. Isso pode ser feito rapidamente usando a opção "Text > Find > Find In Files..." do Studio:

Removendo a Toolbar

Basta preencher os campos conforme exibido na imagem acima e clicar em "Replace All".

Na versão anterior, para desabilitar/habilitar os botões da barra de ferramentas, era necessário acessar propriedades do objeto interno oViewBar. Por exemplo, para habilitar o botão de imprimir o seguinte código era usado:

Set pbEnablePrint of oViewBar to True

No caso acima de existir a definição acima, basta substituir usando a opção "Find and Replace In Files" por:

Set pbVisiblePrint to True

Para os demais botões, são raros os casos em que desenvolvedores usaram as propriedades para ocultá-los. Se for necessário basta usar a substituição de forma análoga à demonstrada acima para o botão imprimir.

Caso tenha sido adicionado variáveis ou pacotes no projeto, será necessário adicioná-los novamente no novo projeto criado.

Cadastrando as novas telas no menu

Após a execução dos passos acima a Workspace estará pronta para ser compilada e testada com a nova versão do MenuFlex.

A última etapa necessária para completar a migração é cadastrar as novas telas que foram criadas. Na imagem abaixo vemos destacadas as novas opções adicionadas no MenuFlex 16.1.8:

Novas entradas no Menu

A seguir estão as informações necessárias para cadastrar estes itens. Basta cadastrá-los na posição que for mais conveniente para a aplicação.

A primeira coluna mostra o campo código, que será gerado automaticamente no momento da gravação. A segunda coluna é o código do módulo, que pode ser 0 (zero) se quiser que a opção apareça em todos os módulos. A quarta coluna é o nome de exibição. A quinta coluna deve ser deixada em branco. A sexta e a sétima coluna devem ser preenchidas com "VW" e a última coluna é o nome de ativação do objeto.

Cadastro de Logs arquivados:

Cadastro de logs arquivados

Delegação de permissões:

Delegação de permissões

Nota: para usar a nova tela de delegação de permissões é necessário definir a hierarquia entre os usuários no "Cadastro de usuários".

Nova mensagem:

Nova mensagem

Minhas mensagens:

Minhas mensagens