Las diversas opciones de Build de GeneXus X
Bruno Macedo -consultor e instructor GeneXus en Brasil- publicó recientemente en iMaster, un interesante artículo que aborda las diferentes opciones que brinda GeneXus a la hora de desarrollar, en el proceso de especificación, generación y compilación de objetos.
Todo desarrollador GeneXus está familiarizado con el proceso de especificación, generación y compilación de sus objetos. Esto no es ninguna novedad. Pero en GeneXus X, con tantas opciones ofrecidas para realizar ese proceso, uno puede confundirse un poco.
En GeneXus X, la especificación, generación y compilación de los objetos está más automatizada y se llama proceso de build. Lo que veremos a continuación es cómo funciona este proceso de build, analizando las opciones que ofrece GeneXus. Confieso que al principio quedé un poco aturdido con esta diversidad de builds.
El Proceso de Build
El proceso de build incluye todas las tareas necesarias para la ejecución de la aplicación. Se incluye la verificación de cambios en el banco de datos, la reorganización (popular reorg) si fuera necesario, especificación, generación y compilación. Sin incluir la ejecución propiamente dicha de la aplicación.

Lo interesante en esa nueva versión de GeneXus, es que el proceso de build ocurre en background, permitiéndole al desarrollador realizar otras actividades. Mientras se hace el build, aquel puede continuar el desarrollo normalmente.
Características del Proceso de Build
Las características del proceso de build son:
• Puede aplicarse a cualquier objeto de la base de conocimiento, Developer Menu u objetos definidos como Main Program;
• Detecta automáticamente los objetos que hay que generar;
• Tiene que ser realizado muchas veces en el proceso de desarrollo de la aplicación;
• Es rápido y preciso.
Para que ejecutemos el proceso de build seleccionamos la opción Build All o Rebuild All del menú principal de GeneXus.

Las opciones Build All y Rebuild All
Las Opciones de Build
Las opciones disponibles para el proceso de build son:
• Build All y Rebuild All
• Build, Rebuild y Run Selected
• Build With This Only y Run With This Only
Build All y Rebuild All
Estas opciones se eligen cuando se quiere generar todos los objetos, sin elegir ninguno en particular, y que el proyecto quede actualizado. Las dos opciones realizarán los siguientes pasos:
• Guarda cualquier objeto no guardado (si hay algún error con algún objeto, el proceso se interrumpe);
• Reorganiza el banco de datos si fuera necesario (si hay algún error en la reorganización, el proceso se interrumpe);
• Especifica solamente los objetos que fueron modificados (si la opción Build All fue accionada);
• Obliga a la especificación de todos los objetos (si la opción Rebuild All fue accionada);
• Generación de los objetos (generación de código fuente);
• Compila todos los objetos definidos como Main Program;
• Compila el Developer Menu.
Build, Rebuild y Run Selected
Estas son las opciones más usadas. Actúan en el objeto Main Program seleccionado o en el objeto Main Program seleccionado como Startup Object cuando el desarrollador presiona la tecla F5. Se realizan los siguientes pasos:
• Guarda cualquier objeto no guardado (si hay algún error con un objeto, el proceso se interrumpe);
• Reorganiza el banco de datos si fuera necesario (si hay algún error en la reorganización, el proceso se interrumpe);
• Especifica solamente los objetos que fueron modificados (si la opción Build fue accionada) desde el árbol de llamadas del objeto seleccionado (si hay algún error con un objeto, el proceso se interrumpe);
• Obliga a la especificación de todos los objetos (si la opción Rebuild fue accionada) desde el árbol de llamadas del objeto seleccionado (si hay algún error con un objeto, el proceso se interrumpe);
• Generación de los objetos (generación de código fuente);
• Compila el objeto definido como Main Program seleccionado (si hay algún error, el proceso se interrumpe);
• Ejecuta el objeto Main Program seleccionado.
Build With This Only y Run With This Only
Estas opciones actúan en el objeto seleccionado, ignorando cualquier modificación en otro objeto que no sea el seleccionado. Como GeneXus no chequea dependencias, estas opciones son un método rápido para testear las modificaciones realizadas en un único objeto. Las opciones realizarán los siguientes pasos:
• Guarda cualquier objeto no guardado (si hay algún error con un objeto, el proceso es interrumpido);
• Reorganiza el banco de datos si fuera necesario (si hay algún error en la reorganización, el proceso se interrumpe);
• Especifica solamente el objeto seleccionado (si hay algún error con el objeto, el proceso se interrumpe);
• Genera el objeto seleccionado (generación de código fuente);
• Compila el Startup Object (si hay algún error, el proceso se interrumpe);
• Ejecuta el Startup Object (si hay algún error, el proceso se interrumpe).
Ejecución de la Aplicación
En GeneXus X, simplemente presionando F5 (Run) se realizan todos los pasos necesarios del proceso de build y se ejecuta el objeto definido como Startup Object. Si no hay un objeto definido como Startup Object, el Developer Menu se ejecutará.

La opción F5 tiene la inteligencia necesaria para saber qué objetos deben ser especificados, generados o compilados para ejecutar la aplicación.
Ejecución Batch del Proceso de Build
Como vimos, el proceso de build debe accionarlo el desarrollador, pero existe una manera de ejecutarlo no interactivamente, la ejecución de forma batch. Mediante GeneXus Build Tasks, basado en Microsoft Build Engine de Visual Studio, se puede realizar esta tarea. Las tareas que pueden automatizarse son:
Básicas:
• CreateKnowledgeBase;
• Import;
• OpenKnowledgeBase;
• SetModelProperty;
• SetDataModelProperty;
• SetGeneratorProperty;
• Export;
• BuildAll;
• BuildOne;
• DeleteObject;
• Run.
Avanzadas:
• CreateDataBase;
• Reorganize;
• Specify All;
• Generate;
• Compile;
• UpdateWorkingModel;
• WriteKnowledgeBaseSchema;
• WriteDataBaseSchema;
• CompareSchemas.
Otras:
• CreateVersion;
• CreateBranch;
• SetActiveBranch;
• RevertToVersion;
• CreateEnvironment;
• SetActiveEnvironment.
Esas tareas están disponibles en GeneXus.MSBuild.Tasks.dll.
Por más detalles acerca de la ejecución batch, acceda a la página del Wiki de Artech.
Conclusión
El proceso de build de GeneXus X automatizó y bien la tarea de especificación, generación y compilación, cosa que antes teníamos que hacer manualmente. Los nuevos usuarios de GeneXus también salen ganando con esa automatización, pues ellos siempre tenían dificultades con respecto al build al comienzo del aprendizaje de esta herramienta.
Vale destacar también que no necesitamos más esperar que GeneXus concluya el proceso para seguir trabajando. Se acabó la disculpa del cafecito, jájájá... Y ahora también tenemos la opción del build en modo batch.
Espero que las informaciones transmitidas sean de gran utilidad. ¡Un fuerte abrazo y hasta nuestro próximo artículo!
En GeneXus X, la especificación, generación y compilación de los objetos está más automatizada y se llama proceso de build. Lo que veremos a continuación es cómo funciona este proceso de build, analizando las opciones que ofrece GeneXus. Confieso que al principio quedé un poco aturdido con esta diversidad de builds.
El Proceso de Build
El proceso de build incluye todas las tareas necesarias para la ejecución de la aplicación. Se incluye la verificación de cambios en el banco de datos, la reorganización (popular reorg) si fuera necesario, especificación, generación y compilación. Sin incluir la ejecución propiamente dicha de la aplicación.

Lo interesante en esa nueva versión de GeneXus, es que el proceso de build ocurre en background, permitiéndole al desarrollador realizar otras actividades. Mientras se hace el build, aquel puede continuar el desarrollo normalmente.
Características del Proceso de Build
Las características del proceso de build son:
• Puede aplicarse a cualquier objeto de la base de conocimiento, Developer Menu u objetos definidos como Main Program;
• Detecta automáticamente los objetos que hay que generar;
• Tiene que ser realizado muchas veces en el proceso de desarrollo de la aplicación;
• Es rápido y preciso.
Para que ejecutemos el proceso de build seleccionamos la opción Build All o Rebuild All del menú principal de GeneXus.

Las opciones Build All y Rebuild All
Las Opciones de Build
Las opciones disponibles para el proceso de build son:
• Build All y Rebuild All
• Build, Rebuild y Run Selected
• Build With This Only y Run With This Only
Build All y Rebuild All
Estas opciones se eligen cuando se quiere generar todos los objetos, sin elegir ninguno en particular, y que el proyecto quede actualizado. Las dos opciones realizarán los siguientes pasos:
• Guarda cualquier objeto no guardado (si hay algún error con algún objeto, el proceso se interrumpe);
• Reorganiza el banco de datos si fuera necesario (si hay algún error en la reorganización, el proceso se interrumpe);
• Especifica solamente los objetos que fueron modificados (si la opción Build All fue accionada);
• Obliga a la especificación de todos los objetos (si la opción Rebuild All fue accionada);
• Generación de los objetos (generación de código fuente);
• Compila todos los objetos definidos como Main Program;
• Compila el Developer Menu.
Build, Rebuild y Run Selected
Estas son las opciones más usadas. Actúan en el objeto Main Program seleccionado o en el objeto Main Program seleccionado como Startup Object cuando el desarrollador presiona la tecla F5. Se realizan los siguientes pasos:
• Guarda cualquier objeto no guardado (si hay algún error con un objeto, el proceso se interrumpe);
• Reorganiza el banco de datos si fuera necesario (si hay algún error en la reorganización, el proceso se interrumpe);
• Especifica solamente los objetos que fueron modificados (si la opción Build fue accionada) desde el árbol de llamadas del objeto seleccionado (si hay algún error con un objeto, el proceso se interrumpe);
• Obliga a la especificación de todos los objetos (si la opción Rebuild fue accionada) desde el árbol de llamadas del objeto seleccionado (si hay algún error con un objeto, el proceso se interrumpe);
• Generación de los objetos (generación de código fuente);
• Compila el objeto definido como Main Program seleccionado (si hay algún error, el proceso se interrumpe);
• Ejecuta el objeto Main Program seleccionado.
Build With This Only y Run With This Only
Estas opciones actúan en el objeto seleccionado, ignorando cualquier modificación en otro objeto que no sea el seleccionado. Como GeneXus no chequea dependencias, estas opciones son un método rápido para testear las modificaciones realizadas en un único objeto. Las opciones realizarán los siguientes pasos:
• Guarda cualquier objeto no guardado (si hay algún error con un objeto, el proceso es interrumpido);
• Reorganiza el banco de datos si fuera necesario (si hay algún error en la reorganización, el proceso se interrumpe);
• Especifica solamente el objeto seleccionado (si hay algún error con el objeto, el proceso se interrumpe);
• Genera el objeto seleccionado (generación de código fuente);
• Compila el Startup Object (si hay algún error, el proceso se interrumpe);
• Ejecuta el Startup Object (si hay algún error, el proceso se interrumpe).
Ejecución de la Aplicación
En GeneXus X, simplemente presionando F5 (Run) se realizan todos los pasos necesarios del proceso de build y se ejecuta el objeto definido como Startup Object. Si no hay un objeto definido como Startup Object, el Developer Menu se ejecutará.

La opción F5 tiene la inteligencia necesaria para saber qué objetos deben ser especificados, generados o compilados para ejecutar la aplicación.
Ejecución Batch del Proceso de Build
Como vimos, el proceso de build debe accionarlo el desarrollador, pero existe una manera de ejecutarlo no interactivamente, la ejecución de forma batch. Mediante GeneXus Build Tasks, basado en Microsoft Build Engine de Visual Studio, se puede realizar esta tarea. Las tareas que pueden automatizarse son:
Básicas:
• CreateKnowledgeBase;
• Import;
• OpenKnowledgeBase;
• SetModelProperty;
• SetDataModelProperty;
• SetGeneratorProperty;
• Export;
• BuildAll;
• BuildOne;
• DeleteObject;
• Run.
Avanzadas:
• CreateDataBase;
• Reorganize;
• Specify All;
• Generate;
• Compile;
• UpdateWorkingModel;
• WriteKnowledgeBaseSchema;
• WriteDataBaseSchema;
• CompareSchemas.
Otras:
• CreateVersion;
• CreateBranch;
• SetActiveBranch;
• RevertToVersion;
• CreateEnvironment;
• SetActiveEnvironment.
Esas tareas están disponibles en GeneXus.MSBuild.Tasks.dll.
Por más detalles acerca de la ejecución batch, acceda a la página del Wiki de Artech.
Conclusión
El proceso de build de GeneXus X automatizó y bien la tarea de especificación, generación y compilación, cosa que antes teníamos que hacer manualmente. Los nuevos usuarios de GeneXus también salen ganando con esa automatización, pues ellos siempre tenían dificultades con respecto al build al comienzo del aprendizaje de esta herramienta.
Vale destacar también que no necesitamos más esperar que GeneXus concluya el proceso para seguir trabajando. Se acabó la disculpa del cafecito, jájájá... Y ahora también tenemos la opción del build en modo batch.
Espero que las informaciones transmitidas sean de gran utilidad. ¡Un fuerte abrazo y hasta nuestro próximo artículo!