O que são Artefatos?
São arquivos em formato XML que representam partes do sistema, ou seja, os metadados que definem tabelas, consultas, formulários, páginas, etc., que agrupados, constituem o sistema como um todo.
O XML de um artefato contém as definições do que o objeto representa: nome, camada, tabelas, campos, comandos, etc. A Benner possui os artefatos do Builder e do WES que vamos descrever a seguir.
Os Artefatos do Builder
Os artefatos do Builder estão diretamente relacionados à estrutura das tabelas que compõem o sistema. Eles surgiram para mitigar o caos outrora instaurado pela sequência “faz/desfaz” no Z_ZLOG. Imagine um cenário onde o desenvolvedor cria campos, altera suas propriedades, altera seu nome, etc. Isso gera uma sequência de comandos no Z_ZLOG que no momento de uma liberação precisam ser limpos e organizados, visando manter a última alteração sem as alterações intermediárias.
Assim, o artefato do Builder é um XML que representa a versão final da estrutura disponível no banco de dados, inclusive com um facilitador de ter um arquivo, o que permite um gerenciamento através do Git. Desta forma ao alterarmos uma tela, a alteração da tabela pode ser comitada junto!
Para habilitar o recurso no Builder, precisamos criar um parâmetro chamado ARTEFATOS_BUILDER_PATH inserido na tabela Z_VARIAVEIS, como no exemplo abaixo:
INSERT INTO Z_VARIAVEIS (TIPO, CHAVE, NOME, VALOR) VALUES ('S','.SECRET.','ARTEFATOS_BUILDER_PATH','C:\BeTech\git|https://gitlab.benner.com.br/Technology/betech.git')
Além do versionamento através do Git, podemos citar como vantagens: Pull Requests, Revisão de Código, Merges, Cherry-pick, etc.
As funções de Importação e Exportação presentes no Builder ajudam muito no gerenciamento e uso dos artefatos. Lembrando que estas opções só estão disponíveis se o parâmetro ARTEFATOS_BUILDER_PATH estiver ativado.
Temos a possibilidade de aplicar as alterações manualmente ou através da linha de comando (caso que ocorre nos servidores com as pipelines dos produtos). Devemos sempre ficar atentos que o Builder controla as alterações através o hash presente no XML (que varia conforme as alterações são feitas).
Para usar o comando via linha de comando, usamos um comando como abaixo:
Builder.exe <sistema>@<servidor> -pu <usuario> -pp <senha> -PATH_LOG_ATUALIZACAO_ARTEFATOS <pasta git> -ATUALIZAR_ARTEFATOS <branch> -USUARIO_GIT <usuario GIT> -SENHA_GIT <token ou senha do git>
Atente-se para a recomendação de sempre utilizar o token para acesso ao Git, evitando assim, a exposição de sua senha.
Uma dica importante, não há necessidade de gerar todos os artefatos de uma vez, é possível gerar apenas o artefato da tabela em questão com o botão no Builder junto às funcionalidades da tabela em edição.
Os Artefatos do WES
No Builder, os artefatos estão mais relacionados às estruturas das tabelas, já no WES, representam: páginas, menus, visões, etc., ou seja, a estrutura do sistema.
Os arquivos que representam os artefatos do WES estão disponíveis na pasta Artifacts, que reflete na base de dados da aplicação. Tendo o seguinte comportamento:
- Inserção: o arquivo existe na pasta, porém não há relação dele na base de dados, o WES sugere neste caso, a inserção.
- Exclusão: o arquivo não existe na pasta, porém, existe uma entrada de referência na base de dados, nessa situação, o WES sugere a remoção do artefato.
- Atualização: o hash da base e o hash do arquivo são diferentes, neste caso, o WES sugere a atualização do artefato baseada no conteúdo definido no arquivo.
Importante destacar, que a referência para as operações sobre artefatos e ditada pelo conteúdo dos arquivos, porém, no momento de uso, vale o que está salvo na base de dados.
Todos os artefatos do WES seguem a mesma característica e relação das camadas de customização, salientamos a importância de sempre instalar os artefatos das camadas corretas.
Uma dica importante, a exclusão manual de artefatos é um processo que pode ser trabalhoso e cansativo. Para agilizar isso, utilize o arquivo “exclude” da camada em questão, nele é possível criar uma lista dos arquivos que devem ser excluídos no warmup do WES. Vale lembrar que essa exclusão é na verdade a movimentação dos arquivos escolhidos para a pasta Excluded (o que facilita a recuperação no caso de um erro).
Outra dica bem legal é o comando recreateindex, que resolve as inconsistências presentes no banco de dados. Este processo é muito útil quando algum conflito com artefatos de clientes e artefatos do produto é detectado. Para usá-lo basta adicionar o parâmetro recreateindex=s na URL da aplicação. Cuidado, use com cautela, pois se existirem muitos artefatos isso pode ser um processo demorado, já que todos os hashes de todos os artefatos existentes serão recriados!
Para Saber Mais
Temos dois vídeos em nosso canal falando sobre o assunto:
Instalando os Artefatos no WES:
Artefatos:
Além disso, o Gerhard Roger Nack juntamente com o Diuari Daniel Molinari gravaram um BE.TECH sobre o assunto, dando muitas dicas e conceitos importantes, confira:
E para fechar com chave de ouro, temos um material bem legal em nossa Wiki:
Gostou deste post? Deixa seu comentário, te vejo na próxima publicação, um abraço,
Danton C. Franco Junior
#TimeTec