SlideShare une entreprise Scribd logo
1  sur  31
Estrategias de Migración a GX X Ev 1 Carolina Torrado ctorrado@genexusconsulting.com Gonzalo  Losada glosada@genexusconsulting.com
Planear el viaje Origen Destino Fechas Hotel Medio de transporte Que queremos hacer en el destino
Migrando una kb
Migración sin cambio de plataforma Win a win Web a web Sin cambio de plataforma
Migración sin cambio de plataforma Migrar la kb en GeneXus 9 Migrar la kb en GeneXus Ev 1 Comparar las navegaciones Testear aplicación Realizar ajustes
Mucho más ajax Cuando se ejecuta un evento en el server Llamada a objeto Variables en condiciones Utilizo función que necesita ejecutarse en el server
Optimización de lasrecorridas Antes de GeneXus 9.0 Lo que el desarrollador escribió en la clausula order y si no puso nada la PK  A partir de GeneXus 9.0 Lo que el desarrollador defina en la clausula order Y Los filtros en los wheres por igualdad Y Atributos instanciados
Otros Cambios Calls Dinámicos Instanciación de Rules Subtipos sin Grupo Dominio “Boolean” Funcion Val()
Ejemplos
Banco República
Migración con cambio de plataforma Win a win Web a Web Green a Web Win a Web  Con cambio de plataforma
Casos posibles ,[object Object]
Cambiar el dialogo,[object Object]
Udf()
Confirm()
RefreshKeep
Deletefile()
Allownulls(),[object Object],[object Object]
Banco República del Uruguay
FUCAC
Fertilizantes Tepeyac
Migrar + Funcionalidad    Green -> Web Win -> Web Web-> Web Win -> Win Funcionlidad Nuevo Proyecto
GXflow
Patterns Patrones estándares migran sin problemas Patrones propios: Crear el patrón en la evolution Crear procedimiento de migración Migrar las instancias

Contenu connexe

Plus de GeneXus

Plus de GeneXus (20)

After Chatbots Yo (Ro) Bots
After Chatbots Yo (Ro) BotsAfter Chatbots Yo (Ro) Bots
After Chatbots Yo (Ro) Bots
 
Construya las aplicaciones del futuro ¡hoy!
Construya las aplicaciones del futuro ¡hoy!Construya las aplicaciones del futuro ¡hoy!
Construya las aplicaciones del futuro ¡hoy!
 
Live Editing in Action
Live Editing in ActionLive Editing in Action
Live Editing in Action
 
Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...
Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...
Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...
 
¿Pensando en implementar un sistema de gestión integral en su organización?
¿Pensando en implementar un sistema de gestión integral en su organización?¿Pensando en implementar un sistema de gestión integral en su organización?
¿Pensando en implementar un sistema de gestión integral en su organización?
 
K2B Tools el compañero de viaje ideal hacia el futuro
K2B Tools el compañero de viaje ideal hacia el futuroK2B Tools el compañero de viaje ideal hacia el futuro
K2B Tools el compañero de viaje ideal hacia el futuro
 
Sd y Plataformas
Sd y PlataformasSd y Plataformas
Sd y Plataformas
 
PXTools: Nuevo generador y nuevos controles responsivos
PXTools: Nuevo generador y nuevos controles responsivosPXTools: Nuevo generador y nuevos controles responsivos
PXTools: Nuevo generador y nuevos controles responsivos
 
APPlícate: Aplicaciones móviles para el desarrollo de la industria
APPlícate: Aplicaciones móviles para el desarrollo de la industriaAPPlícate: Aplicaciones móviles para el desarrollo de la industria
APPlícate: Aplicaciones móviles para el desarrollo de la industria
 
GeneXus 4 Students
GeneXus 4 StudentsGeneXus 4 Students
GeneXus 4 Students
 
La importancia de ser responsive
La importancia de ser responsiveLa importancia de ser responsive
La importancia de ser responsive
 
K2B: El ERP nativo para el mundo GeneXus
K2B: El ERP nativo para el mundo GeneXusK2B: El ERP nativo para el mundo GeneXus
K2B: El ERP nativo para el mundo GeneXus
 
GeneXus 15 (Salto)
GeneXus 15 (Salto)GeneXus 15 (Salto)
GeneXus 15 (Salto)
 
GeneXus Cloud Deployment Services. El camino a la nube.
GeneXus Cloud Deployment Services. El camino a la nube.GeneXus Cloud Deployment Services. El camino a la nube.
GeneXus Cloud Deployment Services. El camino a la nube.
 
LigaMX con GeneXus: De 0 a 1.700.000 de usuarios
LigaMX con GeneXus: De 0 a 1.700.000 de usuariosLigaMX con GeneXus: De 0 a 1.700.000 de usuarios
LigaMX con GeneXus: De 0 a 1.700.000 de usuarios
 
Innovando con GeneXus y SAP
Innovando con GeneXus y SAPInnovando con GeneXus y SAP
Innovando con GeneXus y SAP
 
Going mobile
Going mobileGoing mobile
Going mobile
 
Audit+: La mejor forma de auditar KB’s GeneXus
Audit+: La mejor forma de auditar KB’s GeneXusAudit+: La mejor forma de auditar KB’s GeneXus
Audit+: La mejor forma de auditar KB’s GeneXus
 
WW+, SD+ y Audit+: Potencie GeneXus la Suite Plus
WW+, SD+ y Audit+: Potencie GeneXus la Suite PlusWW+, SD+ y Audit+: Potencie GeneXus la Suite Plus
WW+, SD+ y Audit+: Potencie GeneXus la Suite Plus
 
Aproveche las ventajas de la colaboración entre GeneXus y Cloud Shared Office...
Aproveche las ventajas de la colaboración entre GeneXus y Cloud Shared Office...Aproveche las ventajas de la colaboración entre GeneXus y Cloud Shared Office...
Aproveche las ventajas de la colaboración entre GeneXus y Cloud Shared Office...
 

0034 gxc development_framework_estrategias_de_migración_a_gene_xus_x

Notes de l'éditeur

  1. Vamos a imaginarnos que decidimos y queremos viajar a una isla.
  2. Si tenemoslasuerte que eso nos pase, no agarramosunflotadorlas patas de rana y nos tiramos alagua a nadar. Sino que empezamos a planear el viaje
  3. Lo que vamos a planeares desde donde vamos a iniciar el viaje, a que islaesla que queremos llegar, en que fechas queremos viajar, en donde nos vamos a quedar, tenemos que comprar lospasajes y lo más importante es definir que queremos hacercuandollegamos. Por que llegar para no hacer nada no nos sirve, ahí esta el motivo del viaje.
  4. Cuando migramos una kb de versión pasa lo mismo, tenemos que saber desde que versión como esta la versión a la desde la que partimos. A que versión queremos llegar. Cuando queremos migrar. Como vamos hacer esta migración. Con que herramientas vamos a migrarnos si es que vamos a usar alguna. Y lo que nos motiva es la razón a migrar
  5. Las migraciones que caen dentro de esta categoría son todas las migraciones que estan en una vieja versión de genexus en un ambiente win y que quieren migrarse a un ambiente win en genexusevolution, o que estan en un ambiente web y quieren ir a un ambiente web en la evolution. En estas migraciones no hay cambio de plataforma, o sea continuamos en el mismo tipo de plataforma.
  6. Caro:¿Qué implica este cambio? ¿Qué es lo que tengo que hacer yo cuando quiero migrar de esta forma?Gonza: Básicamente lo que tenemos que hacer es comparar el funcionamiento de la aplicación anterior con el funcionamiento de la aplicación actual. Si estamos en una versión anterior a Genexus 9 es un requisito pasar por esta version, por lo cual vamos a tener que abrir la kb en esta versión y luego pasarnos a la versión Evolution. No implica hacer todo un proceso de conversion a GeneXus 9, simplemente es un paso logistico. Una de las cosas que vamos a necesitar hacer es comparar las navegaciones entre las diferentes versiones. Tenemos los diagramas de navegacion de la aplicación actual, y una vez que obtengamos la kb en GxXEv1 vamos a obtener los diagramas de navegacion nuevos. En <URL> se explica los pasos para realizar la comparacion de navegaciones, lo que nos va a permitir ir encontrando puntos con posibles cambios a revisar.Caro: Entoncesresumiento lo que tengo que hacer es migrar a genexus 9, luego migrar a genexusevolution, comparar las navegaciones entre las diferentes versiones para ver las diferencias, y luego testear y realizar los ajustes necearios ¿y por que tenemos que ajustar cosas? Y que fue lo que cambio entre las versiones anteriores de genexus y la evolution que tengamos que ajustar cosas.
  7. Gonza:Una de las cosas que se mejoraron en la evolution 1 es disminuir la cantidad de idas al servidor y disminuir la cantidad de tránsito que va al servidor, se hacen más validaciones del lado del cliente a través de javascript. Antes de genexus 9 toda la aplicación se validaba a pantalla completa en el servidor. En genexus 9, se agrego la funcionalidad de que las validaciones en la transacción se hagan del lado del cliente y ahora en esta versión se agrego que los eventos de usuario se ejecuten del lado del cliente. Para poner en contexto, el orden de ejecución de los eventos de usuario hasta genexus 9 era start, lectura del formulario que se había sometido, evento de usuario, refresh y loadEn esta versión los eventos de usuario que se ejecutan en el cliente, salvo aquellos que caen en estos 3 casos:1- tienen llamadas a otro objeto2- modifican variables que estan las condiciones del objeto3- utilizan alguna función alguna función que necesita ir al servidorCaro: ¿y por que este cambio me afecta?Gonza: El hecho que solo se ejecute en el cliente, hace que no se somenta el formulario, y por lo tanto ya no se ejecuta el evento start, refresh y load. Un caso de ejemplo sería el botón buscar, en GeneXus 9 este evento que no tenía código, posteaba el formulario y luego ejecutaba el evento start, refresh y load y recargaba la pantalla. Ahora como el evento no tiene código, no caen en ninguna de las 3 condiciones por eso se ejecuta en el cliente y por eso no se refrezca la pantalla. Caro: O sea lo que tengo que hacer es revisar que los eventos que necesitan que se ejecute el start, refresh y load para que vayan al servidor.
  8. Gonza: GeneXus siempre intentara encontrar el mejor orden posible para un foreach o grid. Entonces para determinar el order se toma en cuenta: Lo que se escriba en la clausula order Los wheres por igualdad atributos instanciadosMientras que antes de genexus 9 lo que se hacía era utilizar lo que el desarrollador escribio en la clausula order o en caso que no haya puesto nada la primarykey de la tabla base. Caro: Y en que nos puede afectar esto?Gonza: En caso que el desarrollador haya puesto la clausula order no nos afecta en nada, en caso que no la haya puesto si nos puede afectar. Porque antes me recorria por la primarykey y si la recorrida optimizada no es por la primarykey el orden podría cambiar.Caro: ¿Y como determino estos casos?Gonza: A traves del comparador de navegacionesCaro: Entonces lo que tengo que hacer es cuando comparo las navegaciones, ver como cambian los ordenes y en caso que cambien de una forma que no quiero, los tengo que escribir a los ordenes.
  9. Caro= ¿Algun cambio en Genexus que nos llegue a impactar?Gonza= Algunos puntos a tener en cuenta son los siguiente:Call Dinámicos/Calls desde objetos externos= En todo lugar que tengamos “escrito” el nombre del objeto a ser llamado (calldinamico, link a url, call desde javascript) tenemos que tener en cuenta que en algunos casos, cambio. Los procsmain, pasan de a<objeto> a ap<objeto>. Los reportes main, pasan de o<objeto> a ap<objeto>. TestingInstanciacion de Rules Para que genexus determine el momento de ejecucion de una rule, tiene que tener todos sus argumentos instanciados. Si una variable no esta en pantalla y no se asigna por codigo, al no inicializarse no tiene manera de saber cuando lanzarla. Esto nos genera un warning en la spec y podemos elevarlo a error para encontrarlo.Subtipos sin Grupo. A partir de GeneXus 90 no puedo definir subtipos que no pertenezcan a ningun grupo. A partir de X no son mas soportados. Esto genera un error de spec que tengo que analizar para solucionar. Resolverlo antes de Migrar.Dominio “Boolean” A partir de X, tenemos un nuevo tipo de datos básico, boolean. Si teniamos un dominio con este nombre, tenemos que cambiarlo. Resolverlo antes de migrar.Funcion Val() Esta funcion, tenia la posibilidad de recibir como parametro cual era el separador decimal. Si no lo hacia, hasta gx90 asumía el definido para el idioma. A partir de la X asume el “.” TESTINGCaro= Entonces, antes de migrar tengo que resolver en la kb origen los subtipos que no esten en ningun grupo y si tengo un dominio llamado boolean, cambiarlo de nombre (por ejemplo, a Boolean90).Luego de migrar, tengo que validar los warnings/errores de spec para resolver los temas de rules notincluded y vía testing, ir detectando las otras situaciones.Gonza= Exacto !!
  10. Caro: Algunas empresas que hicieron este proceso son por ejemplo UTE que partió de una base de conocimiento en GeneXus 8.0 y la migraron a GeneXus Ev1, una base de conocimiento de unos …. objetos
  11. Este es el caso que tengo
  12. Caro = ¿Qué implica este tipo de migraciones?Gonza = a) Adaptarse la realidad, modificando la funcionalidad de la aplicación b)Forzar la realidad para mantener el dialogoCaro= ¿Qué implican estos dos casos? Gonza = En una aplicación win podría tener un procedimiento que en la mitad de la ejecución llama a un workpanel para pedirle un dato al usuario y luego continua ejecutando el procedimiento. Esto en web no lo puedo hacer por que luego de llamar a un objeto con pantalla no puedo volver a continuar ejecutando el procedimiento. Acá es donde se me presentan dos alternativa, o programo guardar el estado del procedimiento para cuando luego del webpanel llamo nuevamente al procedimiento y continuar ejecutando donde estaba o cambio el dialogo para que luego pido el dato y luego llamo al procedimiento con el dato instanciado. Como este caso hay varios. Caro = Entonces lo primero que tengo que elegir es definir que tipo de enfoque tengo que realizar para mantener esta migración. E independientemente del dialogo que otras cosas me puedo encontrar?
  13. en una plataforma web, y las tengo que cambiar para buscar alternativasNocheck/noread -> Normalmente, esto se tenia que hacer porque no se podian definir correctamente los grupos de subtipos. Esto hay que revisarlo, salta en el comparador de navegacionesUdf -> tenia sentido solamente en VFP win con dbf. Salta como error de spec y el simplemente cambiarla a UdpConfirm -> Esta regla no es valida en ambientes web. Se sustituye agregando un JSEvent al controlRefreshKeep -> Deja de ser relevante con el dialogo web. Lo que se puede hacer, es programar para que mantenga la pagina donde se esta parado al volver de la llamada. Deletefile() -> Esta funcion no se utiliza mas. Se sustituye con el tipo de datos file, que tiene el metodoDelete. Esto se puede encapsular en un proc, para hacer mas simple el cambioAllownulls() -> Se puede mantener por compatibilidad, pero es recomendable transferir este conocimiento a las propiedades del atributoCaro= Entonces, lo que tenemos que hacer, es revisar los errores o warnings de spec y solucionarlos. Lo que se recomienda en estos casos, es poner los warnings que este seguro que quiero cambiar que me los tome como error para identificarlos mas facilmente.
  14. Gonza= Tengo que hacer las pantallas web y el webform de las transacciones. O lo hago a mano uno a uno o utilizo una herrramienta para construirlas. Caro = Entonces acá lo que toca es ponerse a trabajar. Hay muchos clientes que han realizado este cambio, algunos lo han hecho en etapas, alunos usaron herramientas, otros lo hicieron en por pedazos.
  15. Por ejemplo en maquilas tetakawi partieron de genexus 9.0 net win en csharp, intentaron mantener las pantallas desarrolladas en win igual en web, entonces importaron las transacciones y los procedimientos y los consolidaron en la evolution y programaron los webpanels utilizando el workwith de genexus.
  16. En el banco republica utilizaron las k2btools para desarrollar todos los webpanels, por lo cual automatizaron un poco el proceso de construcción de los webpanels.
  17. En Fucac por ejemplo migraron de a módulos y no toda la aplicación de una, sino que empezaron con el módulo de contabilidad y trataron de imitar las pantallas win en web, salvo cuando encontraron casos en los que podían mejorar la pantalla con pequeños cambios
  18. Y por último en fertilizantes tepeyac es una kb que se creo en genexus 5.5 y que se migro hace un par de años a genexus 8.0 en visual basic y esta migración partió de genxus 8.0 visual a .net web en la evolution. repensaron las pantallas a desarrollar tratando de mejorar su funcionalidad.
  19. Ahora que vimos todos estos casos yo me animo a presentar esta migración sola.
  20. En este caso lo que tenemos es simple vamos a migrar y a su vez queremos agregarle funcionalidad aprovechar lo que estamos migrando para incoporar nuevas funcionalidades a la aplicación o simplemente agregarle más módulos. En este caso tenemos la migración por un lado y agregarle funcionalidad por otro lado. Lo que tenemos que hacer para la primera parte es definir que tipo de migración es, si es una migración plana o una migración con cambio de plataforma. Y para el agregado de funcionalidad es un proyecto en sí.
  21. Caro: “Se integra a gxflow ya no esta más en una kb que consolidamos, esto nos da mil ventajas en cuanto a la integración de nuestras aplicaciones con genexus, ¿pero este cambio que nos implica a la hora de migrar”Gonza: “no puedo tocar al flow, no es más parte de mikb, ni los objetos, ni las tablas. Por lo cual si hacía llamadas a objetos directos de gxflow los voy a tener que cambiar y usar el customclient o el user control gxentrypoint y a su vez las apis ya no hacen commit por lo cual tengo que poner el commit en el código”
  22. Lo que nos queda esinvitarlos a que empiecen armar lasvalijas para realizar este viaje.