Entradas

Módulo de Análisis de Riesgo en Aduana de Colombia

Imagen
Desde hace unos meses, bajo el convenio de cooperación entre las aduanas uruguaya y colombiana,  esta funcionando en la Aduana de Colombia el modulo de análisis de riesgo en las operaciones aduaneras del aeropuerto El Dorado en Colombia.

Como parte de la  segunda etapa de implantación, ayer paso a  funcionar para todas las operaciones de la Aduana de Bogotá.

El sistema  permite a los funcionarios de la sección de análisis de riesgo, definir reglas complejas en un lenguaje sencillo, para elegir cuales son las operaciones a verificar (física o documentalmetne).

Esta desarrollado en GeneXus , con interfaz web generando java y ejecuta sobre JBoss / Oracle.


COMMIT ON EXIT considered harmful

Imagen
Hace unos 7 años, publiqué un artículo donde proponía algunas mejoras para la propiedad Commit on Exit, pues es una de las cosas que resulta mas difícil de explicar a quienes recién comienzan a programar con GeneXus.

Estamos en proceso de BetaTesting de la GeneXus Tero y seria bueno revisar el uso que le damos esta propiedad.

Que cosas resultan confusas?
Es difícil de explicar a un novato, que si un procedure que tiene Commit on exit = YES, no hace commit. Solo lo hace, cuando se hace un UPDATE/DELETE/INSERT en la base de datos y tiene la propiedad en YES. En cualquier otro caso, no hace commit. La documentacion del wiki si bien lo dice, es confusa.

Es difícil de encontrar, cuales son los objetos que hace commit en un árbol de llamadas. La búsqueda por propiedades nunca funciono del todo bien, y de esta forma, es bien difícil encontrar donde se esta  rompiendo la integridad transaccional.

En los BC, no se toma en cuenta la propiedad, lo cual hace mas confuso aun la cosa.

Creo que alg…

Métricas sobre modularización de KB

Imagen
Cuando tengo un sistema desarrollado, tengo muchísimas formas de dividirlo en módulos. Segun la bibliografia, el problema mas general de particionar un grafo en diferentes agrupamientos de nodos (clusters) es considerado NP-Completo, por lo que no se ha encontrado aun una forma eficiente de resolverlo.

Al tener tantas opciones, es bueno contar con alguna herramienta que me permita medir que tan buena o mal es dicha division, en el caso de una KB, seria medir que tan buena o mala es la modularizacion que he realizado.

Algunas de las características perseguidas por la modularizacion, son la de tener un gran cohesion entre los nodos que están dentro de un modulo y tener poco acoplamiento con otros módulos.

Esto se traduce, a que queremos maximizar las  aristas dentro de los módulos y minimizar las aristas entre los módulos.

Resulta mas facil, verlo en imagenes. Supongamos que tenemos un grafo que representa la relaciones entre objetos. Los objetos pueden ser cualquier objeto ejecutable (…

Chrome v62 y BackColor = Transparent

Imagen
Una aplicación WEB C# en GeneXus 15 que usa el Abstract Editor (que viene migrada de versiones bastante anteriores de GeneXus), empezó a mostrar en algunos filtros, un fondo celeste.

El motivo de esto, es porque la variable tenia la propiedad BackColor=Transparent, que en versiones anteriores de Chrome se tomaban como transparentes, pero en la version 62 que aun esta en Beta, la toma con ese color.

Viendo el HTML, vimos que estaba generando


donde el color (#00FFFF) tiene un FF al final que indica que es transparente.
Por motivos que desconozco, esta version de Chrome no le da bolilla al alpha y pinta de celeste algunas variables.

Esta propiedad, no esta alcanzable desde la interfaz de GeneXus con el editor abstracto (o al menos no lo encontramos), se ve que se guarda en forma interna, y debe venir de versiones anteriores de GeneXus.

Para solucionarlo, lo que hicimos fue hacer un distribute de todas las transacciones y webpanels de la aplicacion y en el XML del export, borramos donde d…

PiensoPienso: Como hacer una reorganización de cambio de tipo de datos, sin interrumpir la operativa.

Imagen
Problema: 
Tengo una KB GeneXus, con una tabla con 2 millones de registros que tiene un campo AttSec N(3) y debe cambiarse a C(3) (si se quiere, puede tener otro nombre).

Tabla
======
*Clave       N(10)
AttSec       N(3)
otros atributos

El sistema esta funcionando 24x7, se instala en varios nodos (en un NLB).
La aplicación deberá estar operativa siempre, no se puede bajar ni bloquear.

Se pide:
¿Cuales son los pasos de desarrollo e instalación que debo seguir para lograr instalar en todos los nodos la aplicación operativa con el atributo C(3)?

Solución:
Si alguien se anima, la escribe en los comentarios.
Yo publico la mia en unos dias.

UPDATE = 04/07/2017===============================
MI SOLUCIÓN: 
Lo primero que haría seria ver si la tabla es usada solo por mi aplicación o también es accedida por alguna aplicación externa. Para simplificar, supongamos que solo es accedida por la aplicación GeneXus.
Estado Inicial

Agrego un campo AttSecChar C(3) 


T ambien agrego un trigger para que si se insert…

Módulos en Genexus

Imagen
En las últimas semanas, trabajé en la modularización de una KB grande, un proyecto que aun no finalizó.

Esto me llevo a reflexionar un poco sobre el estado actual de los módulos en GeneXus.

Mis reflexiones están basadas en la experiencia de trabajo de modularizacion algunas KB chicas en GeneXus 15 y una KB grande en Evolution 3. Faltarian varias mas para sacar conclusiones mas generales, pero creo que el intercambio de ideas de como se usan los módulos es necesario.

Para que sirven los módulos?  Uno de los problemas que tienen los módulos, es que sirven para mucha cosas diferentes, lo cual ha hecho que se pierda un poco el foco hacia donde hay que seguir desarrollándolos.

Pueden servir para
* Entender mejor la KB
* Ayudar en el mantenimiento de la KB
* Distribuir el desarrollo entre varios integrantes o grupos
* Hacer mas fácil el Deploy de la aplicación
* Unir mas de una KB
* Distribución de binarios e interfaces.
* Hacer mas rapido el proceso de desarrollo

y algunos temas mas.

El t…

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…