As várias opções de Build do GeneXus X
Bruno Macedo -consultor e instrutor GeneXus no Brasil- publicou recentemente no iMaster, interessante matéria que aborda as diferentes opções que o Genexus oferece na hora de desenvolver, no processo de especificação, geração e compilação de objetos.
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.

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:

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
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:
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:
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:
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.

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.
Esas tareas están disponibles en GeneXus.MSBuild.Tasks.dll.
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!
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.

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.

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.
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.
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).
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.

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.
Esas tareas están disponibles en GeneXus.MSBuild.Tasks.dll.
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!