Entradas

Mostrando las entradas de 2017

Modularizar una KB grande.

Imagen
Problema:
Tengo una KB con mas de 10.000 objetos y se debe organizar en módulos mas pequeños.

Se necesita:
Metodología que permita realizar dicha modularización, de forma de mantener el funcionamiento del sistema generado a partir de la KB.

Metodología propuesta. 

Bajar una KB desde GXServer.
Hacer un build all exitoso (es importante pues se agregan referencias a tablas)

Mientras queden objetos de la aplicación sin módulo hacer:

Elección que modulo se va a  crear  y cuales seran sus tablas. Sacar una lista de URL de todos los objetos de la KBCrear Modulo y poner Visibility como Private. Mover los Folders correspondientes al Modulo. Identificar todas las transacciones que generan las tablas del modulo y moverlas al modulo. Sacar del modulo los objetos que no correspondan Marcar como públicos los objetos interfaz del modulo. (Todos los dames se mantendrán privados por default)Revisar los objetos externos al modulo que usan tablas privadas del modulo y corregirlos.Corregir todos los progra…

Modularización de KB orientada a los datos.

Imagen
Después de probar varias formas de modularizar, la que mas me convence es hacerla orientada a los datos o las tablas del modulo.

Mi definición de modulo, seria:

Conjunto de tablas, todos los objetos que hacen UPDATE/INSERT/DELETE sobre las mismas y casi-todos los objetos que hagan referencia a dichas tablas.
Las excepciones, son objetos que hacen referencias a tablas de un modulo, sin pertenecer al mismo son:

* Transacciones con integridad referencial sobre las tablas del modulo.
* Join entre tablas de diferentes módulos

En un diagrama:

GeneXus ya controla que no se puedan acceder a objetos privados (tablas u otros objetos) y da errores al especificar. Estos son los que estan a la izquierda.
Para todos los objetos publicos (no tablas) esto tambien esta bien manejado. 
El problema para soportar nuestra forma de trabajo, viene con las tablas publicas. 
Una tabla, no tiene modulo, ni es publica o privada en forma directa (lo cual creo que es una gran carencia en la forma de definir módul…

TestingUY - Mayor evento en America Latina sobre Testing.

Imagen
El 15 y 16 de mayo en la Torre de Antel, se realiza el principal evento sobre pruebas de aplicaciones de la región.

Hay charlas muy interesantes y refuerza la importancia que esta teniendo el Testing en el desarrollo de aplicaciones.

Es gratuito y es muy recomendable. Mas informacion en http://testinguy.org



SummarizedBy Pattern (Segundo intento)

En el año 2006, junto con Federico Dominioni implementamos el pattern SummarizedBy para GeneXus 9.0.

Estuvo esperando todos estos años para ser implementado y parece que 11 años despues le llegó su momento. La idea es poder integrarlo con el WorkWith de forma fácil.
El objetivo del mismo es mostrar los datos de eventos agrupados por diferentes dimensiones, mostrando indicadores. Por ejemplo, ver el total vendido (indicador), por producto,empresa,pais (dimensiones).

Veremos como sigue la historia.

KBDoctor : Script para copiar datos entre bases de datos

Imagen
Me ha pasado muchas veces en diferentes proyectos, que necesito copiar datos entre bases de datos que tienen estructura de tablas parecidas.

Por ejemplo, hago varias reorganizaciones en mi modelo de datos y quiero tener datos de producción para hacer pruebas, no es trivial hacerlo si se tienen diferentes estructuras.

Le agregué una opción al generador de scripts en el KBDoctor, para que genere un script que tiene sentencias de la forma


insert into <SourceDB>.<TargetSchema>.HrsCab (HrsFch,RspId,SeLiquida,CabezalPryId,EnExterior )     select HrsFch,RspId,SeLiquida,CabezalPryId,EnExterior from  <TargetDB>.<TargetSchema>.HrsCab; para todas las tablas del sistema.

Para que quede un script operativo, hay que sustituir <SourceDB> por la base de datos origen,  <SourceSchema> por el Schema origen y lo mismo pora <TargetDB> y <TargetSchema>

Entonces, para generarme una base de datos con los datos de producción, con la estructura nueva, lo que hago…

Fe de Erratas: Paletas de Colores en GXWiki

Imagen
En mi post sobre Paletas de colores en GeneXus, pedía que las KB de ejemplo tuvieran ya definidos varias paletas de forma que fuera fácil ver la aplicación en varios esquema de colores.

En particular, pedía una versión de GXWiki con eso. Claudia Murialdo me hizo notar (gracias!) que la versión 6.0 ya tiene varias paletas de colores.



Es una buena KB para sacar ejemplos de como hacer estas cosas.

Propuesta de proyecto colaborativo: GXWiki con balanceo de carga sin "Server Affinity"

Imagen
Estoy buscando intersados que quieran participar en un proyecto colaborativo con GeneXus.

El objetivo primario del proyecto, seria crear una versión de GXWiki que permitiera funcionar instalándolo en varios nodos sin tener que configurar la afinidad por servidores.

El segundo objetivo es documentar que cosas impiden el tener aplicaciones GeneXus que funcionen sin afinidad, y para cada una de ellas proponer soluciones.

Que es "Server Affinity" y por que no es bueno tenerlo?

Tener una aplicación configurada con "Server affinity" significa que luego que un servidor atiende un pedido (request) de la aplicación, todos los pedidos sucesivos de dicho cliente, van a ser atendidos por el mismo servidor. Para aplicaciones de pocos usuarios y pocos nodos, esto generalmente no es un problema, pero si lo es para aplicaciones de muchos usuarios y/o proyectos que varios servidores en la nube.

Que inconvenientes tiene configurar el "Server Affinity"?

Como luego que un ser…

Paleta de colores en GeneXus

Imagen
En las últimas versiones de GeneXus tienen la posibilidad de tener diferentes paletas de colores para las aplicaciones.

Lamentablemente me parece que los ejemplos que brinda GeneXus y otros proveedores de ejemplos (patrones y demás) no están aprovechando todo el potencial de estas herramientas. Muchas personas usan esos ejemplos con pocas modificaciones para generar sus aplicaciones, por lo que es importante que estos ejemplos brinden las "mejores practicas" desde el principio.

Para personas como yo, con "capacidades estéticas diferentes" , seria bueno tener contar con algo que permita cambiar el esquema de colores en forma mas fácil.

Que cosas no me gustan? Nombre de los temas Por ejemplo, el tema que viene con GeneXus 15 se llama Carmine (que es un color) lo cual indica que ese Theme seria para tener ese color.
A mi me gustaría que el theme se llame algo asi como ModernResponsive y tener varias paletas de colores asociadas.
Carmine es un buen nombre para una pal…

GUG Montevideo - Lanzamiento 2017

Imagen
Llega la cita esperada
El Sábado 18 de marzo a las 11:30  en Puerto Madero (Luis A. de Herrera 1172 casi 26 de marzo)
Inscripciones en: Meetup.com
Ticket $ 490
Formas de pago
REDPAGOS:Cta.46855 “GUG Montevideo” Depósito en BROU , ITAU, SANTANDER (solicitar nros de cuenta a gugmontevideo@gmail.com)
Presentaremos el Plan de Trabajo del GUGpara el 2017 y algunas sorpresas!
No te dejes estar, los cupos son limitados.

KBClone - Clonar una KB

Imagen
Hice un utilitario para clonar una KB en la maquina de desarrollo.

Lo que hace es copiar todos los archivos de la KB, hace un backup de la base de datos de la KB y la restaura con nuevo nombre.

También cambia el nombre interno de la KB, ajusta el archivo knowledgebase.connection y el archivo *.gxw.

Al abrir la nueva KB, tiene el mismo estado, propiedades y objetos que tenia la KB anterior, sin necesidad de hacer build all u otras tareas que hacen perder tiempo.


Para que sirve? Para manejo de ambientes de Desarrollo  / PreProduccion y Produccion, trabajando solo en una KB.

Suponiendo que tenemos una KB de desarrollo en la cual se desarrolla y se hacen pruebas. Cuando se tiene una versión estable que puede instalarse en PreProducción, se puede clonar la KB y realizar la instalación desde la nueva KB que tiene los programas que fueron testeados.

Que ventajas tiene este clonar la KB ?
Las ventajas son que me queda una KB de desarrollo, en la cual puedo seguir desarrollando y tengo la KB c…

KBSaveReorganization para GeneXus 15

Imagen
Compilé una extensión del KBSaveReorganization para GeneXus 15.

El funcionamiento es sencillo, pues después de cada reorganización, se crea un  directorio con todo lo necesario para ejecutar la reorganización, como programa GeneXus, con el nombre REORG-aaaammdd-hhmmss.
También  genera los archivos de script de comandos para ejecutar la reorganización forzada o para contar los registros de la reorg.
De esta forma es mas fácil llevar la historia de todas las reorganizaciones que se han realizado en el ambiente de desarrollo al ambiente de produccion

Esta pensado para C#, pues carece una forma nativa de exportar la reorg, como ya existe en el generador Java.





Material del Hackaton - GeneXus Extension & Code Review

Me pidieron si podia publicar el material de la Hackaton del año pasado.
Tal vez pueda servirle a alguien.


Dentro de las actividades del GUG Montevideo estan planificando hacer otra Hackaton para desarrollo de User Controls, que pienso que tambien puede servirle a varios. Trateremos que las proximas esten filmadas asi podemos compartirlas con mas gente.

Se puede bajar el material aqui