Algunas reflexiones sobre el uso de modulos en Genexus y la metodologia de modularizacion.
Lecciones aprendidas en el proceso y recomendaciones para la modularizacion de bases de conocimiento genexus de gran tamaño.
8. UN arco intra-módulo DOS arcos intra-módulo
Buena técnica de modularización es maximizar los
arcos dentro de los módulos y minimizar los
arcos entre los diferentes módulos.
1
2
3
4
6
5
7
1
2
3
4
6
5
7
10. Metodología de Modularización de una KB.
Mientras hay tablas en módulo ROOT MODULE
1. Creo módulo nuevo y pongo Visibility = Private
2. Elijo tablas del nuevo módulo
3. Muevo las transacciones que generan las tablas elegidas
4. Divido objetos que usa tablas en módulos diferentes
5. Muevo al módulo los objetos que usan las tablas elegidas
6. Marco como públicos los llamados desde otro módulo
7. Rebuild all y corregir errores
Las tablas sólo pueden ser actualizadas en su módulo, aunque sea pública.
11. No todas las referencias son iguales
Solo se ve afectado si si cambia la estructura de
la transacción
Se ve afectado si cambia la estructura +
parámetros
Estructura + parámetros + Theme + webform
parámetros
Estructura + parámetros + rules + eventos +
variables
12. Referencias a tablas
Integridad Referencial
For each de lectura
New / Delete / Update
Dependencia más débil
Dependencia más fuerte
15. Lecciones aprendidas - Modularización
Problema muy difícil
No escala
Faltan herramientas mas avanzadas
● Detección de errores más rápido
● Conocer las dependencias de un módulo
● Recomendación de ubicación de un objeto
16. Lecciones aprendidas - Código y objetos
mas fácil de testear
mas fácil de entender
mas fácil de mantener
Objetos mas chicos
Objetos parecidos quedan más cerca
17. Lecciones aprendidas - Forma de trabajo
Reutilizar conocimiento
Mejor manejo de la complejidad
Dividir el trabajo en grupos
Mas fácil de instalar
Mejor preparados para futuro
18. Futuro
Mejorar herramientas
● Trabajar con módulo + Interfaz
● Especialización de módulos
Distribución de binarios
Incorporar seguridad?
Microservicios / Docker ...