Todo desenvolvedor GeneXus está acostumado com o processo de especificação, geração e compilação dos seus objetos. Isto não é nenhuma novidade. Mas no GeneXus X é possível ficar meio confuso com tantas opções oferecidas para realizar esse processo.
No GeneXus X, a especificação, geração e compilação dos objetos está mais automatizada e é chamada de processo de build. O que veremos a seguir é como funciona esse processo de build, analisando as opções disponibilizadas pelo GeneXus. Confesso que no início fiquei um pouco atrapalhado com essa variedade de builds.
O Processo de Build
O processo de build inclui todas as tarefas necessárias para a execução da aplicação. Inclui-se a verificação de alterações no banco de dados, a reorganização (popular reorg) se necessário, especificação, geração e compilação. Não se incluindo a execução propriamente dita da aplicação.
Figura 1 – Processo de Build
O interessante nessa nova versão do GeneXus, é que o processo de build ocorre em background, permitindo ao desenvolvedor realizar outras atividades. Enquanto é feito o build, o desenvolvedor pode continuar o desenvolvimento normalmente.
Características do Processo de Build
As características do processo de build são:
- Pode ser aplicado a qualquer objeto da base de conhecimento, Developer Menu ou objetos definidos como Main Program;
- Detecta automaticamente os objetos que necessitam ser gerados;
- É necessário ser realizado muitas vezes no processo de desenvolvimento da aplicação;
- É rápido e preciso.
Para executarmos o processo de build selecionamos a opção Build All ou Rebuild All do menu principal do GeneXus.
Figura 2 – As opções Build All e Rebuild All
As Opções de Build
As opções disponíveis para o processo de build são:
- Build All e Rebuild All
- Build, Rebuild e Run Selected
- Build With This Only e Run With This Only
Build All e Rebuild All
Estas opções são escolhidas quando se quer gerar todos os objetos, não escolhendo um em particular, e que o projeto fique atualizado. As duas opções irão realizar os seguintes passos:
- Salva qualquer objeto não salvo (se há algum erro com algum objeto, o processo não é continuado);
- Reorganiza o banco de dados se necessário (se há algum erro na reorganização, o processo não é continuado);
- Especifica somente os objetos que foram modificados (se a opção Build All foi acionada);
- Força a especificação de todos os objetos (se a opção Rebuild All foi acionada);
- Geração dos objetos (geração de código fonte);
- Compila todos os objetos definidos como Main Program;
- Compila o Developer Menu.
Build, Rebuild e Run Selected
Estas são as opções mais usadas. Atuam no objeto Main Program selecionado ou no objeto Main Program selecionado como Startup Object quando o desenvolvedor pressiona a tecla F5. Os seguintes passos serão realizados:
- Salva qualquer objeto não salvo (se há algum erro com algum objeto, o processo não é continuado);
- Reorganiza o banco de dados se necessário (se há algum erro na reorganização, o processo não é continuado);
- Especifica somente os objetos que foram modificados (se a opção Build foi acionada) da árvore de chamadas do objeto selecionado (se há algum erro com algum objeto, o processo não é continuado);
- Força a especificação de todos os objetos (se a opção Rebuild foi acionada) da árvore de chamadas do objeto selecionado (se há algum erro com algum objeto, o processo não é continuado);
- Geração dos objetos (geração de código fonte);
- Compila o objeto definido como Main Program selecionado (se há algum erro, o processo não é continuado);
- Executa o objeto Main Program selecionado.
Build With This Only e Run With This Only
Estas opções atuam no objeto selecionado, ignorando qualquer modificação em outro objeto que não seja o selecionado. Como o GeneXus não checa dependências, estas opções são um método rápido para testar modificações realizadas em um único objeto. As opções irão realizar os seguintes passos:
- Salva qualquer objeto não salvo (se há algum erro com algum objeto, o processo não é continuado);
- Reorganiza o banco de dados se necessário (se há algum erro na reorganização, o processo não é continuado);
- Especifica somente o objeto selecionado (se há algum erro com o objeto, o processo não é continuado);
- Gera o objeto selecionado (geração de código fonte);
- Compila o Startup Object (se há algum erro, o processo não é continuado);
- Executa o Startup Object (se há algum erro, o processo não é continuado).
Execução da Aplicação
No GeneXus X, apenas pressionando F5 (Run) são realizados todos os passos necessário do processo de build e executa-se o objeto definido como Startup Object. Se não há um objeto definido como Startup Object, o Developer Menu será executado.
Figura 3 – A opção F5 (Run)
A opção F5 tem a inteligência necessária para saber quais objetos devem ser especificados, gerados ou compilados para executar a aplicação.
Execução Batch do Processo de Build
Como vimos, o processo de build deve ser acionado pelo desenvolvedor, mas existe uma maneira de executá-lo não interativamente, a execução de forma batch. Mediante o GeneXus Build Tasks, baseado no Microsoft Build Engine do Visual Studio, esta tarefa pode ser realizada. As tarefas que podem ser automatizadas são:
Básicas:
- CreateKnowledgeBase;
- Import;
- OpenKnowledgeBase;
- SetModelProperty;
- SetDataModelProperty;
- SetGeneratorProperty;
- Export;
- BuildAll;
- BuildOne;
- DeleteObject;
- Run.
Avançadas:
- CreateDataBase;
- Reorganize;
- Specify All;
- Generate;
- Compile;
- UpdateWorkingModel;
- WriteKnowledgeBaseSchema;
- WriteDataBaseSchema;
- CompareSchemas.
Outras:
- CreateVersion;
- CreateBranch;
- SetActiveBranch;
- RevertToVersion;
- CreateEnvironment;
- SetActiveEnvironment.
Essas tarefas estão disponibilizadas no GeneXus.MSBuild.Tasks.dll.
Para executar as tarefas é necessário criar um script que é executado com o comando MSBuild.exe, localizado no diretório de instalação do Framework 2.0. Abaixo um exemplo de script que abre uma base de conhecimento e faz um Build All:
<Project DefaultTargets="OpenAndBuildAll" xmlns=http://schemas.microsoft.com/developer/msbuild/2003>
<Import Project="C:\Program Files\Artech\GeneXus\GeneXusX\Genexus.Tasks.targets" />
<Target Name="OpenAndBuildAll">
<OpenKnowledgeBase Directory="C:\MyKnowledgeBases\TestKnowledgeBase"/>
<BuildAll/>
</Target>
</Project>
Para executar o script, devemos executar o comando:
>msbuild OpenAndBuildAll.msbuild
Para mais detalhes a respeito da execução batch, acesse a página do wiki da Artech.
Conclusão
O processo de build do GeneXus X automatizou e bem a tarefa de especificação, geração e compilação, o que antes tínhamos que fazer manualmente. Os novos usuário do GeneXus também saem ganhando com essa automatização, pois eles sempre tinham dificuldades a respeito do build no início da aprendizagem da ferramenta.
Vale destacar também que não precisamos mais esperar o GeneXus concluir o processo para continuarmos trabalhando. Acabou a desculpa do cafezinho, hehehehe… E agora também temos a opção do build em modo batch.
Espero que as informações transmitidas sejam de grande valia. Um forte abraço e até o nosso próximo artigo!