Entradas

Usar GeneXus 17 para detectar errores

 Trabajo con una KB que esta en GeneXus 16 y no esta planificada su migración hasta 2022.  De cualquier forma, ayer se liberó GeneXus 17 y tiene varias ventajas y algunas se pueden aprovechar aunque no se haga una migración . Un error que es dificil de detectar en versiones anteriores de GeneXus es cuando un parametro de entrada en un objeto es modificado. En GeneXus 17 se agregaron las siguientes validaciones spc0022 Input parameter %1 cannot be assigned.   When trying to assign a variable/attribute defined as IN in the Parm() rule. . spc0233 Parameter %1 (%2 %3) submitting ''%4'' will not be assigned.   This warning message indicates that a certain output (or input/output) parameter will not be assigned when submitting an object. In other words, if you call an object  using the Submit method and you define in the Parm rule of the submitted object  an output parameter, it will not be assigned. . Queria corregir estos errores en GX16, por lo que hice una copia de

Desarrollo monolítico e instalación distribuida (o despliegue distribuido)

Imagen
 Desde hace varios años, se discute en nuestra industria, sobre que forma de desarrollar, instalar, usar y controlar nuestras aplicaciones es la mas adecuada. Hace años casi la unica forma de hacer aplicaciones era de una forma monolíticas, que se desarrollaban y se instalaban todas en una misma máquina. Este esquema es el que nos ha permitido hacer cosas muy interesantes y poderosas.  Aplicaciones Monolíticas Las aplicaciones monolíticas, tienen varias ventajas y varias desventajas, como todo en esta vida.  Por un lado, son las mas fáciles de programar, pues todo ocurre en una misma base de datos, las transacciones terminan bien, o si termina mal, se deshace todo. La consistencia de los datos esta casi garantizada si programamos con algún cuidado.  La instalación de una aplicación monolítica, es fácil, pues todo se instala en una misma maquina y generalmente se sustituye toda la aplicación. Cuando se va a hacer una instalación, se busca alguna ventana donde se prevea poca actividad de

Mi lista de deseos para GeneXus 17

Imagen
UPDATE: Agregue algunos pedidos que hicieron algunos compañeros del foro de Betatesting.  Esta es mi lista de deseos para GeneXus 17. La mayoría de las cosas no son nuevas y serian integrarlas o documentarlas para dejarlas mas usables.   GeneXus Setup Instalar GX desde un script.  Tener un instalador de GeneXus que se pueda ejecutar desde línea de comandos y poder instalar en diferentes directorios.  Instalar GX sin borrar la version anterior.  Dar la opción en el instalador de no borrar la version anterior de Genexus.  Poder instalar User Control / Extensiones / Patterns / Módulos a través de script y línea de comandos.  Esto facilita la instalación de equipos nuevos, para capacitación, instalación en la nube, etc.  Si se pudiera actualizar la version de los UC / Extensiones y Módulos que tengo instalados a través de script, también estaría muy bueno. GeneXus - Seguridad Sin permisos de administrador.  Poder ejecutar GeneXus sin permisos de administración del equipo.  GeneXus - Funcio

Cambio de versión de GeneXus - Paso 4 - Comparar versión vieja con versión nueva

Imagen
Paso 4 del ciclo  Metodología para el cambio de versión de GeneXus  En el paso anterior, pudimos crear una build all exitoso de la KB GeneXus, para generar la aplicación y una instalación de la aplicación en un ambiente de pruebas.  Una vez que tenemos la aplicación instalada en la versión vieja y la versión nueva, tenemos que pensar en comparar el funcionamiento de ambas aplicaciones y poder detectar las diferencias.  Las comparación van a ser de diferentes tipos: Configuración En este paso se deben comparar los archivos de configuración (web.config, client.cfg, log.config, etc) para estudiar las diferencias entre ambas versiones y entender cuales pueden afectar a la nueva aplicación.  Comparar los temas y archivos css generados en la nueva versión. Identificar las clases que tienen diferencias.  Navegación  Al hacer el REBUILD ALL de una KB en una versión nueva de GeneXus, se hace una re-escritura del 100% del código generado.  En esta re-escritura, muchas veces hay cambios en la for

Cambio de versión de GeneXus - Paso 3 : Build exitoso de la KB en la nueva versión

Imagen
Paso 3 del ciclo  Metodología para el cambio de versión de GeneXus  Ya tenemos una nueva instalación de GeneXus completa y operativa y una lista primaria de las cosas que vamos a tener que testear.  Ahora llega un paso que puede ser sencillo, que es el de lograr un BUILD ALL exitoso en la nueva versión.  Dependiendo de cuan grande sea el salto entre versiones de GeneXus, puede ser desde muy difícil a trivial.  La idea aca es trabajar en una COPIA de la KB original. La forma de lograr esta copia puede ser CLONANDO la KB original o volviendo a bajar la KB en caso que se utilizando GXServer.  Habitualmente lo que hago en esta etapa es:  Si uso GXServer  -->     Create KB From Server si no                     --->    Clonar la KB original usando KBClone   Export de todos los objetos y la KB (para recurrir en caso que algo salga mal).  Abrir la KB con la nueva versión de GX  Crear una versión congelada en la nueva KB (para volver en caso de meter la pata y tener una forma de saber que

Cambio de versión de GeneXus - Paso 2 - Identificar y planificar chequeos

Imagen
En esta etapa hay que hacer una lista de cuales serian los chequeos que hay que realizar y comparar entre la versión vieja y la versión nueva de la aplicación. Release Notes.  Leer las Release Notes de la versión e identificar que es lo que pueda afectar a mi aplicación.  ¿Que hay que buscar?.  Hay que leer bien todas los SACs que están en la sección "Consideraciones de compatibilidad"  de todas las Releases Notes para encontrar que nos puede afectar. Listar los objetos que puedan verse afectados por estos problemas de compatibilidad.  User Controls En el paso anterior, cuando generamos el entorno de desarrollo, comparamos la instalación vieja y la nueva de GeneXus y podemos ver los UC que cambiaron. Listar los objetos que usen los UC que cambiaron.  API de la KB.  Agregar a la lista de objetos a probar:  Objetos main con protocolo HTTP (comparar respuestas) Objetos main con protocolo SOAP (WSDL y comparar respuestas) Objetos main command line (probarlos).  Conviene hacer

Cambio de versión de GeneXus - Paso 1 - Crear el nuevo entorno de trabajo con la nueva versión

La primera etapa que hay que lograr en un proyecto de cambio de versión, es una instalación de GeneXus que tenga todo lo necesario para poder desarrollar, especificar, generar, compilar, empaquetar, instalar y probar la aplicación en la nueva versión, sin errores.  Pre-requisitos.  Leer con cuidado todos los pre-requisitos necesarios para la nueva versión e instalarlos. La información de esto, puede estar desparramada por varias paginas y diferentes sitios web.  Los pasos que realizamos aquí son:  Bajar la nueva versión y otras cosas necesarias.  GeneXus Ir al Download Center de GeneXus y bajar la nueva versión y paquetes relacionados. En mi caso tengo que bajar  GeneXus GeneXus Platform SDK GAM para Oracle GXFlow para Oracle  Releases Notes de la versión Bajar versiones compatibles de los patrones utilizados En caso de usar algún patrón de la comunidad, es necesario bajar un instalador compatible con la versión.  Workwithplus, K2btools, Ignia, etc, etc.  Control de Usuario (UC) comp

Metodología para el cambio de versión de GeneXus

Imagen
Hace unos días hice un relevamiento para conocer como manejaban los colegas de la comunidad los cambio de versión . Los que contestaron el cuestionario, en su mayoría hacen cambios frecuentes, actualizando desde versiones recientes.  Voy a tratar de resumir como manejamos nosotros los cambios de versión para formalizar el proceso. Hay muchos pasos que llevan mucho tiempo y son tareas repetitivas y son ideales para automatizarlas.  Etapas.  Cada proyecto de cambio de versión es diferente y ahí radica la dificultad de su formalización.  Voy a tratar de explicar en un post diferente cada uno de los pasos que realizamos:  Crear el nuevo entorno de trabajo con la nueva versión Identificar y planificar que controles vamos a hacer Build exitoso de la KB en versión nueva Hacer una instalación de la versión nueva Comparar versión vieja con versión nueva Validar y corregir warning, errores y diferencias Desarrollo con la nueva versión Instalación en Producción Eliminar Instalación de producción

Metodología de actualización de versión de GeneXus.

Hace unos dias, hice un pequeño relevamiento sobre como manejan los cambios de versión en GeneXus. Me da la sensación que hay mucho para mejorar en la forma en que se hacen los cambios de version y lo primero que quería era tener la opinion de algunos. Respondieron al cuestionario 22 personas. Muchas Gracias! a quienes se tomaron el tiempo para responder. Hago un breve resumen de las preguntas y respuestas.   ¿Con que frecuencia cambian la version de GeneXus? Hay muchas situaciones diferentes.  La mayoría de quienes respondieron, dijeron que instalaban la version cuando salia o casi cuando salia. Hay gente que migra cada un periodo de 2 años y otros es mas a demanda, de nuevas funcionalidades, de bug arreglados o de estabilidad de la version.   Que proceso/metodología usan para cambiar de versión? Explique brevemente los pasos que sigue En las respuestas no hay un patrón claro de como hacer un cambio de version. Para algunos es instalar la nueva versión y convertir la KB sobre la que

Tiempos de Rebuild All en Upgrade 10

Imagen
En las últimas versiones de GeneXus han introducido varias mejoras para acelerar el proceso de Build All de KB grandes.  Para probarlo hice un script para hacer un rebuild all de una KB de más de 10.000 objetos en una version anterior de GX y la nueva version.  Tiempos de Rebuild all en KB con mas de 10.000 objetos.   GeneXus 16 Upgrade 7   03:50 horas  GeneXus 16 Upgrade 10  03:24 horas  Diferencia   26 minutos Compilación con MSBUILD.  En el Upgrade 10 (*), se hizo oficial la compilación utilizando MSBuild en vez del GXExec para el generador C# .  Tiempos de Rebuild all KB con mas de 10.000 objetos  GeneXus 16 Upgrade 7 compilando con  GXExec 03:50 horas    GeneXus 16 Upgrade 10 compilando con MSBuild 02:47 horas  Diferencia   63 minutos Los tiempos fueron medidos en un notebook i7 con 16Gb de RAM usando la misma KB y el mismo disco SSD, usando el Generador C#.  Es un buen motivo para evaluar pasarse al último Upgrade pues es bastante más rápido.  (*) En Upgrade 7 se podía usar la f