Desenvolvimento

2 abr, 2009

As várias opções de Build do GeneXus X

Publicidade

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!