Entradas

Low Code y grandes aplicaciones

Imagen
Hace unos dias, me apreció en Twitter un aviso de strumenta, A guide to Low Code Platforms  donde dicen: A low-code (development) platform allows to create applications through graphical user interfaces and/or configuration instead of traditional computer programming. They can be a great tool for enterprise companies to reduce the cost of development mainly in two ways: by giving a software that non-developers can use to create apps tailored for their needs by giving programmers a system to quickly develop small applications En el post visualizan que Low Code es para hacer pequeñas aplicaciones dentro de las organizaciones.  Estoy parcialmente de acuerdo con lo que dicen, pues en esas areas es donde mas rapido se pueden adaptar las herramientas Low Code, pero donde se les puede aprovechar mas, es en las grandes aplicaciones.  La complejidad de los desarrollos actuales, es inabarcable para que las manejen pocos desarrolladores. Es necesario contratar a muchos especialista...

Como generar un archivo xml que cumpla con un XML Schema con GeneXus.

Imagen
Un patrón bastante común con el que me he encontrado en varias aplicaciones GeneXus que intercambian datos, es el de tener que generar un archivo XML con un formato que cumpla con un XML Schema. La aplicación con la que nos queremos comunicar, nos brinda un archivo de extensión XSD y debemos generar un XML con los datos de mi aplicacion que tenga dicho formato.  Una forma fácil y de poco código que utilizo es la siguiente.  Importar XSD a GeneXus.  Haciendo Tools / Application Integration / XML Schema Import Con esto, va a generar un SDT con el formato equivalente al del Schema. Debemos revisar que el SDT tenga los tipos de datos correctos, pues puede haber algunos no soportados por Genexus o que hayan quedado mal.  Generar un Data Provider con ese SDT de salida.  El segundo paso es generar un Data Provider, que tenga el SDT recien importado como salida. La tarea de ese DP va a ser leer la base de datos y cargar el SDT con datos.  Este paso implica solo ...

SUGERENCIA para GeneXus (2) : Poder especificar NULL en Data Providers

Imagen
La sugerencia, seria poder especificar de una forma sencilla el insert de un registro con un atributo nulo en la base de datos.  Ejemplo: Ejemplo: Persona * PersonaId    CiudadID  - Nullable = True que tiene las propiedades Data Provider = True Use To = Populate Data.  En la carga inicial, necesito agregar registros con CiudadID NULL.  Cual seria la mejor forma de hacer esto?.   Siento que me estoy complicando con un tema que debe tener una solución sencilla, pero no le encuentro la vuelta.  Probe varias opciones en el Personas_DataProvider asociado a la transaccion.  PersonasCollection {    //Opcion 1 - No poner Ciudad en el DP (no funciona)  Persona     {        PersonaID = 111        // CiudadID    } // Opcion 2 - Intentar hacer un SetNull()    Persona    {       PersonaID = 222       CiudadID.Se...

SUGERENCIA para GeneXus (1) : Poder cargar una imagen desde un texto

Imagen
Me gustaría contar con una forma de cargar una tabla, que tiene un atributo del tipo Image, sin tener que tener un objeto del tipo image en la base de datos. Hoy se puede hacer asi: New    CountryId = 'br'    CountryName = 'Brasil'    CountryFlag   = flag_brasil.link endnew A mi me gustaria poder hacer algo asi: New    CountryId = 'br'    CountryName = 'Brasil'     CountryFlag.FromBase64String( ' 0xFFD8FFE000104A46494600010101 006000600000FFDB00430008060607 0605080707070909080A0C140D0C0B 0B0C1912130F14.....') EndNew o en Data Provider CountryCollection{ Country   {    CountryId = 'br'    CountryName = 'Brasil'    CountryFlag = ImageFromString(' 0xFFD8FFE000104A46494600010101 006000600000FFDB00430008060607 0605080707070909080A0C140D0C0B 0B0C1912130F14.....' )   } } Se que no es lo mas lindo, ni lo mas fácil de leer, pero es muy práctico para los casos que queremos cargar datos si...

Error al usar DynTrn de Populate Data, 32bits.

Imagen
  En estos dias me paso un problema en una KB con GeneXus 16 U10, generando C# cuando intentaba usar una transacción dinámica, que usaba un Data Provider para cargarle datos y estaba compilando para la plataforma x86 (32bits).  El problema se daba pues no lograba cargar la dll generada del data provider pues daba un BadImageException y cancelaba.  La solución está en forzar al programa  GXDataInitialization.exe para que ejecute en 32bits. El comando es corflags /32bitsreq gxdatainitialization.exe  CorFlags.exe se instala con los SDK de Windows.  Va a ser corregido en próximas versiones de GeneXus. 

Eliminar mensajes Warning en un KB GeneXus

Imagen
Para mejorar tu KB #GeneXus y eliminar todos los mensajes WARNINGS en el Build All, los  paso que yo realizo son: 0) Tener un backup de la KB (export, congelar version o copia) 1) Hacer un Rebuild ALL sin errores, puede tener Warnings.  2) Editar las propiedades del Generador y en  Warning treated as error y poner spc0005 spc0008 spc0023 spc0024 spc0025 spc0043 spc0046 spc0047 spc0047 spc0051 spc0158 spc0136 En esta lista se pueden agregar y quitar dependiendo cuales es la exigencia que pueda tener esa KB. 3) Hacer otro REBUILD ALL y corregir todos los errores nuevos que aparezcan. Testear y subir al server en caso de ser necesario. 4) Ignorar aquellos Warning que no voy a tomar en cuenta en forma global. Editar las propiedades del generador y en  Disabled Warnings poner: spc0096 spc0107 spc0142 spc0038 spc0060 spc0087 La lista de warnings ignorados en forma global del paso anterior, hay que personalizarla para cada KB. La lista anterior, no muestra warnings por in...

Caracteristicas de GeneXus que vale la pena conocer: Background Specification

Imagen
En Genexus 16, pues hacer que cuando se salva un objeto, el mismo se especifique automáticamente, en background.  Esto tiene ventajas y desventajas.  Si tengo procesador suficiente (sobre todo con varios cores) , generalmente acelera el desarrollo, porque cuando largo el build all o un run, ya encuentra todo especificado y generado.  Si tengo un procesador algo limitado, puede hacer más lento, sobre todo si hago salvado de objetos muy frecuentes o genero mucho con patterns.  De cualquier manera, conviene conocerlo: