SlideShare a Scribd company logo
1 of 28
Download to read offline
InovaBizGeneXus
Buenas prácticas en el ciclo de desarrollo
info@gxpert.cl
Buenas prácticas generales
COPYRIGHT © InovaBiz 2016 Diapositiva N°3
Nombre de tabla a recorrer
 A partir de la versión Evolution 3, la claúsula defined by entra en desuso y se sustituye
por anteponer el nombre de la transacción o subnivel para indicar a la herramienta qué
tabla base navegar. La declaración de la sentencia order se debe hacer después del
nombre de la transacción.
COPYRIGHT © InovaBiz 2016 Diapositiva N°4
Uso de dominios
 En general, se deben usar dominios para definir los tipos de datos de los atributos, en
especial evitar el uso de constantes
COPYRIGHT © InovaBiz 2016 Diapositiva N°5
Backup de la KB antes de cambios mayores
Freeze
•Adecuado
antes de aplicar
un cambio
“riesgoso”
pero que
impacta pocos
objetos.
•Es el método
más rápido
Exportación xpz
completo
•Ventajas:
método nativo,
independiente
de la versión
del SQL Server
destino
•Depende el
caso, se debe
incluir las
propiedades de
la KB
Copia del MDF
•Tiene la ventaja
que preserva
las versiones de
la KB y el
“History” de
los objetos.
•Es sensible a la
versión de SQL
Server destino.
COPYRIGHT © InovaBiz 2016 Diapositiva N°6
Backup de la KB antes de cambios mayores
Export “completo”
Copia del MDF
Freeze
COPYRIGHT © InovaBiz 2016 Diapositiva N°7
Tips de modelado: vincular entidades
Relaciones 1 – N “entidades fuertes”
COPYRIGHT © InovaBiz 2016 Diapositiva N°8
Tips de modelado: vincular entidades
Relaciones 1 – N “entidades débiles”
COPYRIGHT © InovaBiz 2016 Diapositiva N°9
Tips de modelado: vincular entidades
Relaciones 1 – 1 (igual que 1 – N pero con índice único)
COPYRIGHT © InovaBiz 2016 Diapositiva N°10
Tips de modelado: vincular entidades
Relaciones N – N (4 formas de modelarlas)
COPYRIGHT © InovaBiz 2016 Diapositiva N°11
Tips de modelado: herencia
COPYRIGHT © InovaBiz 2016 Diapositiva N°12
Tips de modelado: herencia
COPYRIGHT © InovaBiz 2016 Diapositiva N°13
Tips de modelado: herencia
COPYRIGHT © InovaBiz 2016 Diapositiva N°14
Tips de modelado: Composición
Usar composición cuando:
• No necesito que los ID coincidan entre las tablas padre-hijo.
• Necesito acceder desde el hijo a todos los atributos del padre.
COPYRIGHT © InovaBiz 2016 Diapositiva N°15
Atributos dinámicos: OAV Pattern - modelado
COPYRIGHT © InovaBiz 2016 Diapositiva N°16
Atributos dinámicos: OAV Pattern - visualización
COPYRIGHT © InovaBiz 2016 Diapositiva N°17
Parámetros dinámicos
 En ocasiones, debemos comenzar la programación aún cuando las especificaciones de los servicios
están en revisión, y sabemos que vendrán cambios. Para aislarnos, podemos definir los parámetros
de salida (y eventualmente los de entrada) de forma dinámica.
COPYRIGHT © InovaBiz 2016 Diapositiva N°18
SQL IN – NOT IN
 En ocasiones, necesitamos generar una sentencia not in en GeneXus, dado que no existe una
implementación directa, tenemos dos alternativas
Buenas prácticas Mobile
COPYRIGHT © InovaBiz 2016 Diapositiva N°20
Precondiciones para convertir KB Web a SD
1 – PKs y niveles
•Las claves
primarias en
mobile offline es
obligatorio que
sean simples y
autonumeradas.
•Las
transacciones
deben ser de un
solo nivel.
2 – Activar GAM
•Esto nos
resolverá
muchas
funcionalidades
importantes:
remember login,
seguridad,
navegación.
3- Rediseñar flujo
•Las APPs offline
deben
repensarse
cuidadosamente
para evitar
colpasar el
mecanismo de
sincronización
automático.
COPYRIGHT © InovaBiz 2016 Diapositiva N°21
Consideraciones para desarrollo SD Offline
 Pensar siempre que existe una diferencia entre eventos del servidor y eventos que
ejecutan en el dispositivo. Los eventos que ejecutan en el dispositivo, deben ser
independientes de forma tal de poder ejecutar sin internet.
 Pensar en el dispositivo como un mero capturador de datos y marcar la mínima cantidad
de transacciones del modelo como “offline”.
 Además, de todas las transacciones “offline”, seleccionar las que se deberán sincronizar
desde y hacia el servidor. Las transacciones cuyos datos solo viajarán de “ida al
servidor”, se deben acotar con condiciones en la BD offline (una condición que no se
cumpla nunca para que nunca baje registros al dispositivo).
COPYRIGHT © InovaBiz 2016 Diapositiva N°22
Evitar tablas “numerador” en SD Offline
COPYRIGHT © InovaBiz 2016 Diapositiva N°23
Reset de la KB SD
 Muy frecuentemente, sobre todo en SD Offline, nos encontramos con que ciertos
objetos autogenerados no se compilan correctamente, en ese caso, debemos borrar
todas las carpetas de la raíz de la KB los archivos con extensión .ari. Luego hacer un
rebuild “all” y una creación de la BD Offline.
COPYRIGHT © InovaBiz 2016 Diapositiva N°24
Consideraciones para el deploy SD con GAM
 Configurar HTTP
 Cambiar clave de admin de GAM
 Borrar todos los usuarios definidos para pruebas en repositorio GAM
 Cuando la webapp es copiada al server de producción, el contenido de la carpeta
gxmetadata debe ser borrado salvo los archivos <main_object>.<plataform>.json
 Los webpanels del backend de GAM deben estar inaccesibles desde internet, solo desde
dentro de la red.
 Los webpanels GAMExampleRecoverPasswordStep1 y
GAMExampleRecoverPasswordStep2 deben ser editados para reflejar la realidad del
negocio.
COPYRIGHT © InovaBiz 2016 Diapositiva N°25
Consideraciones para el deploy SD con GAM
COPYRIGHT © InovaBiz 2016 Diapositiva N°26
Consideraciones para el deploy SD con GAM
COPYRIGHT © InovaBiz 2016 Diapositiva N°27
Impedir acceso a datos en sistemas multiempresa
¿ PREGUNTAS ?

More Related Content

Similar to Buenas prácticas GeneXus - GXTour Chile 2016

David Victoria - AWS Summit CDMX.pptx
David Victoria - AWS Summit CDMX.pptxDavid Victoria - AWS Summit CDMX.pptx
David Victoria - AWS Summit CDMX.pptxDavidVictoria12
 
Tips en la instalación de Dynamics 365 FO - LBD, 365 Saturday
Tips en la instalación de Dynamics 365 FO - LBD, 365 SaturdayTips en la instalación de Dynamics 365 FO - LBD, 365 Saturday
Tips en la instalación de Dynamics 365 FO - LBD, 365 SaturdayJuan Fabian
 
Serverless: La evolucion de la arquitectura a la nube
Serverless: La evolucion de la arquitectura a la nubeServerless: La evolucion de la arquitectura a la nube
Serverless: La evolucion de la arquitectura a la nubeQuito Lambda
 
Diseño de PBX multitenant basada en Asterisk
Diseño de PBX multitenant basada en AsteriskDiseño de PBX multitenant basada en Asterisk
Diseño de PBX multitenant basada en AsteriskJon Bonilla
 
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivel
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivelSPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivel
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivelImanol Iza Martin
 
Azure Functions Spanish
Azure Functions SpanishAzure Functions Spanish
Azure Functions SpanishCDS
 
Clase sobre Optimización de Wordpress
Clase sobre Optimización de WordpressClase sobre Optimización de Wordpress
Clase sobre Optimización de WordpressJuan Ignacio Alberola
 
Mejores prácticas de CI / CD para construir aplicaciones modernas
Mejores prácticas de CI / CD para construir aplicaciones modernasMejores prácticas de CI / CD para construir aplicaciones modernas
Mejores prácticas de CI / CD para construir aplicaciones modernasAmazon Web Services LATAM
 
Impulsando la innovación con arquitectura de contenedores - MXO202 - Mexico C...
Impulsando la innovación con arquitectura de contenedores - MXO202 - Mexico C...Impulsando la innovación con arquitectura de contenedores - MXO202 - Mexico C...
Impulsando la innovación con arquitectura de contenedores - MXO202 - Mexico C...Amazon Web Services
 
Integración continua en AWS con Docker, ECS y PHP7
Integración continua en AWS con Docker, ECS y PHP7Integración continua en AWS con Docker, ECS y PHP7
Integración continua en AWS con Docker, ECS y PHP7Manuel Boira Cuevas
 
Introduccion a SSIS con BIML
Introduccion a SSIS con BIMLIntroduccion a SSIS con BIML
Introduccion a SSIS con BIMLGuillermo Caicedo
 
¿Como asegurar el exito de una Migracion a Microsoft Dynamics NAV (Navision)?
¿Como asegurar el exito de una Migracion a Microsoft Dynamics NAV (Navision)?¿Como asegurar el exito de una Migracion a Microsoft Dynamics NAV (Navision)?
¿Como asegurar el exito de una Migracion a Microsoft Dynamics NAV (Navision)?CLARA CAMPROVIN
 
Introducción a la Nube Nativa - v1.0es (2021/03)
Introducción a la Nube Nativa - v1.0es (2021/03)Introducción a la Nube Nativa - v1.0es (2021/03)
Introducción a la Nube Nativa - v1.0es (2021/03)Young Suk Ahn Park
 
visual web developer
visual web developervisual web developer
visual web developercarlos garcia
 
Google Tag Manager: un nuevo paso en la Analítica Digital (Congreso de Zarago...
Google Tag Manager: un nuevo paso en la Analítica Digital (Congreso de Zarago...Google Tag Manager: un nuevo paso en la Analítica Digital (Congreso de Zarago...
Google Tag Manager: un nuevo paso en la Analítica Digital (Congreso de Zarago...Lucía Marín
 
Madrid GUG - 12/2019
Madrid GUG - 12/2019Madrid GUG - 12/2019
Madrid GUG - 12/2019jjballano
 

Similar to Buenas prácticas GeneXus - GXTour Chile 2016 (20)

Clase_01.pdf
Clase_01.pdfClase_01.pdf
Clase_01.pdf
 
David Victoria - AWS Summit CDMX.pptx
David Victoria - AWS Summit CDMX.pptxDavid Victoria - AWS Summit CDMX.pptx
David Victoria - AWS Summit CDMX.pptx
 
Tips en la instalación de Dynamics 365 FO - LBD, 365 Saturday
Tips en la instalación de Dynamics 365 FO - LBD, 365 SaturdayTips en la instalación de Dynamics 365 FO - LBD, 365 Saturday
Tips en la instalación de Dynamics 365 FO - LBD, 365 Saturday
 
Serverless: La evolucion de la arquitectura a la nube
Serverless: La evolucion de la arquitectura a la nubeServerless: La evolucion de la arquitectura a la nube
Serverless: La evolucion de la arquitectura a la nube
 
Diseño de PBX multitenant basada en Asterisk
Diseño de PBX multitenant basada en AsteriskDiseño de PBX multitenant basada en Asterisk
Diseño de PBX multitenant basada en Asterisk
 
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivel
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivelSPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivel
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivel
 
Azure Functions
Azure FunctionsAzure Functions
Azure Functions
 
Azure Functions Spanish
Azure Functions SpanishAzure Functions Spanish
Azure Functions Spanish
 
Clase sobre Optimización de Wordpress
Clase sobre Optimización de WordpressClase sobre Optimización de Wordpress
Clase sobre Optimización de Wordpress
 
Mejores prácticas de CI / CD para construir aplicaciones modernas
Mejores prácticas de CI / CD para construir aplicaciones modernasMejores prácticas de CI / CD para construir aplicaciones modernas
Mejores prácticas de CI / CD para construir aplicaciones modernas
 
Impulsando la innovación con arquitectura de contenedores - MXO202 - Mexico C...
Impulsando la innovación con arquitectura de contenedores - MXO202 - Mexico C...Impulsando la innovación con arquitectura de contenedores - MXO202 - Mexico C...
Impulsando la innovación con arquitectura de contenedores - MXO202 - Mexico C...
 
Integración continua en AWS con Docker, ECS y PHP7
Integración continua en AWS con Docker, ECS y PHP7Integración continua en AWS con Docker, ECS y PHP7
Integración continua en AWS con Docker, ECS y PHP7
 
Introduccion a SSIS con BIML
Introduccion a SSIS con BIMLIntroduccion a SSIS con BIML
Introduccion a SSIS con BIML
 
¿Como asegurar el exito de una Migracion a Microsoft Dynamics NAV (Navision)?
¿Como asegurar el exito de una Migracion a Microsoft Dynamics NAV (Navision)?¿Como asegurar el exito de una Migracion a Microsoft Dynamics NAV (Navision)?
¿Como asegurar el exito de una Migracion a Microsoft Dynamics NAV (Navision)?
 
Bootcamp Javascript Online
Bootcamp Javascript OnlineBootcamp Javascript Online
Bootcamp Javascript Online
 
Introducción a la Nube Nativa - v1.0es (2021/03)
Introducción a la Nube Nativa - v1.0es (2021/03)Introducción a la Nube Nativa - v1.0es (2021/03)
Introducción a la Nube Nativa - v1.0es (2021/03)
 
visual web developer
visual web developervisual web developer
visual web developer
 
Google Tag Manager: un nuevo paso en la Analítica Digital (Congreso de Zarago...
Google Tag Manager: un nuevo paso en la Analítica Digital (Congreso de Zarago...Google Tag Manager: un nuevo paso en la Analítica Digital (Congreso de Zarago...
Google Tag Manager: un nuevo paso en la Analítica Digital (Congreso de Zarago...
 
Madrid GUG - 12/2019
Madrid GUG - 12/2019Madrid GUG - 12/2019
Madrid GUG - 12/2019
 
Webinar Migración de Forms & Reports a Oracle Cloud
Webinar Migración de Forms & Reports a Oracle CloudWebinar Migración de Forms & Reports a Oracle Cloud
Webinar Migración de Forms & Reports a Oracle Cloud
 

Buenas prácticas GeneXus - GXTour Chile 2016

  • 1. InovaBizGeneXus Buenas prácticas en el ciclo de desarrollo info@gxpert.cl
  • 3. COPYRIGHT © InovaBiz 2016 Diapositiva N°3 Nombre de tabla a recorrer  A partir de la versión Evolution 3, la claúsula defined by entra en desuso y se sustituye por anteponer el nombre de la transacción o subnivel para indicar a la herramienta qué tabla base navegar. La declaración de la sentencia order se debe hacer después del nombre de la transacción.
  • 4. COPYRIGHT © InovaBiz 2016 Diapositiva N°4 Uso de dominios  En general, se deben usar dominios para definir los tipos de datos de los atributos, en especial evitar el uso de constantes
  • 5. COPYRIGHT © InovaBiz 2016 Diapositiva N°5 Backup de la KB antes de cambios mayores Freeze •Adecuado antes de aplicar un cambio “riesgoso” pero que impacta pocos objetos. •Es el método más rápido Exportación xpz completo •Ventajas: método nativo, independiente de la versión del SQL Server destino •Depende el caso, se debe incluir las propiedades de la KB Copia del MDF •Tiene la ventaja que preserva las versiones de la KB y el “History” de los objetos. •Es sensible a la versión de SQL Server destino.
  • 6. COPYRIGHT © InovaBiz 2016 Diapositiva N°6 Backup de la KB antes de cambios mayores Export “completo” Copia del MDF Freeze
  • 7. COPYRIGHT © InovaBiz 2016 Diapositiva N°7 Tips de modelado: vincular entidades Relaciones 1 – N “entidades fuertes”
  • 8. COPYRIGHT © InovaBiz 2016 Diapositiva N°8 Tips de modelado: vincular entidades Relaciones 1 – N “entidades débiles”
  • 9. COPYRIGHT © InovaBiz 2016 Diapositiva N°9 Tips de modelado: vincular entidades Relaciones 1 – 1 (igual que 1 – N pero con índice único)
  • 10. COPYRIGHT © InovaBiz 2016 Diapositiva N°10 Tips de modelado: vincular entidades Relaciones N – N (4 formas de modelarlas)
  • 11. COPYRIGHT © InovaBiz 2016 Diapositiva N°11 Tips de modelado: herencia
  • 12. COPYRIGHT © InovaBiz 2016 Diapositiva N°12 Tips de modelado: herencia
  • 13. COPYRIGHT © InovaBiz 2016 Diapositiva N°13 Tips de modelado: herencia
  • 14. COPYRIGHT © InovaBiz 2016 Diapositiva N°14 Tips de modelado: Composición Usar composición cuando: • No necesito que los ID coincidan entre las tablas padre-hijo. • Necesito acceder desde el hijo a todos los atributos del padre.
  • 15. COPYRIGHT © InovaBiz 2016 Diapositiva N°15 Atributos dinámicos: OAV Pattern - modelado
  • 16. COPYRIGHT © InovaBiz 2016 Diapositiva N°16 Atributos dinámicos: OAV Pattern - visualización
  • 17. COPYRIGHT © InovaBiz 2016 Diapositiva N°17 Parámetros dinámicos  En ocasiones, debemos comenzar la programación aún cuando las especificaciones de los servicios están en revisión, y sabemos que vendrán cambios. Para aislarnos, podemos definir los parámetros de salida (y eventualmente los de entrada) de forma dinámica.
  • 18. COPYRIGHT © InovaBiz 2016 Diapositiva N°18 SQL IN – NOT IN  En ocasiones, necesitamos generar una sentencia not in en GeneXus, dado que no existe una implementación directa, tenemos dos alternativas
  • 20. COPYRIGHT © InovaBiz 2016 Diapositiva N°20 Precondiciones para convertir KB Web a SD 1 – PKs y niveles •Las claves primarias en mobile offline es obligatorio que sean simples y autonumeradas. •Las transacciones deben ser de un solo nivel. 2 – Activar GAM •Esto nos resolverá muchas funcionalidades importantes: remember login, seguridad, navegación. 3- Rediseñar flujo •Las APPs offline deben repensarse cuidadosamente para evitar colpasar el mecanismo de sincronización automático.
  • 21. COPYRIGHT © InovaBiz 2016 Diapositiva N°21 Consideraciones para desarrollo SD Offline  Pensar siempre que existe una diferencia entre eventos del servidor y eventos que ejecutan en el dispositivo. Los eventos que ejecutan en el dispositivo, deben ser independientes de forma tal de poder ejecutar sin internet.  Pensar en el dispositivo como un mero capturador de datos y marcar la mínima cantidad de transacciones del modelo como “offline”.  Además, de todas las transacciones “offline”, seleccionar las que se deberán sincronizar desde y hacia el servidor. Las transacciones cuyos datos solo viajarán de “ida al servidor”, se deben acotar con condiciones en la BD offline (una condición que no se cumpla nunca para que nunca baje registros al dispositivo).
  • 22. COPYRIGHT © InovaBiz 2016 Diapositiva N°22 Evitar tablas “numerador” en SD Offline
  • 23. COPYRIGHT © InovaBiz 2016 Diapositiva N°23 Reset de la KB SD  Muy frecuentemente, sobre todo en SD Offline, nos encontramos con que ciertos objetos autogenerados no se compilan correctamente, en ese caso, debemos borrar todas las carpetas de la raíz de la KB los archivos con extensión .ari. Luego hacer un rebuild “all” y una creación de la BD Offline.
  • 24. COPYRIGHT © InovaBiz 2016 Diapositiva N°24 Consideraciones para el deploy SD con GAM  Configurar HTTP  Cambiar clave de admin de GAM  Borrar todos los usuarios definidos para pruebas en repositorio GAM  Cuando la webapp es copiada al server de producción, el contenido de la carpeta gxmetadata debe ser borrado salvo los archivos <main_object>.<plataform>.json  Los webpanels del backend de GAM deben estar inaccesibles desde internet, solo desde dentro de la red.  Los webpanels GAMExampleRecoverPasswordStep1 y GAMExampleRecoverPasswordStep2 deben ser editados para reflejar la realidad del negocio.
  • 25. COPYRIGHT © InovaBiz 2016 Diapositiva N°25 Consideraciones para el deploy SD con GAM
  • 26. COPYRIGHT © InovaBiz 2016 Diapositiva N°26 Consideraciones para el deploy SD con GAM
  • 27. COPYRIGHT © InovaBiz 2016 Diapositiva N°27 Impedir acceso a datos en sistemas multiempresa