Entradas

Mostrando las entradas de agosto, 2017

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.

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 ejecu

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, b

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