Sei sulla pagina 1di 13

Desarrollando desde la trinchera.

El blog de Enrique Almeida. Desarrollo de aplicaciones, GeneXus y otros


divagues.
mircoles, 23 de julio de 2008
Migrando de GeneXus 9.0 a GeneXus X.
La idea de este post es comentar algunos de los problemas que he encontrado
migrando desde Genexus 9.0 a GeneXus X. Tiene tambin algunos tips que
pueden hacer mas fcil la vida (al menos la mia).
Los pasos que hice fueron:
1) Copiar el directorio de la KB para guardar en caso que pase algo.
Borrar de la KB el directorio de los modelos (los DATA00x). Esto es para
asegurarme que no me queda ningun fuente viejo, ni ninguna dll, jar, etc de la
versin anterior.
2) Entrar con GeneXus 9.0 a la KB y borrar todos los modelos que no se
utilicen. Esto se hace con
File/Delete Model estando en diseo.
Conviene borrar el modelo de Backup (si existe) pues acelera la conversin.
3) Renombrar el domino Boolean si existiera y ponerle Boolean90.
En GeneXus X Boolean es un tipo de datos nativos y si existe un domino
Boolean (como el que usa el Pattern WorkWith, se arma lio).
4) Borrar todos los objetos que no se utilicen y los que sean WIN.
Este paso no es indispensable, pero es muy saludable. Puede ahorrar muchos
dolores de cabeza.
5) Salir de GeneXus 9.0 y compactar la KB y correr un rebuild. Tampoco es
indispensable, pero sirve para ver si no hay algo mal en la KB original.
6) Abrir la KB con GeneXus X y realizar la conversin.
Si por algn motivo cancela, hay que reportarlo a Artech. En las ultimas que he
hecho ha funcionado sin problemas.
7) Revisar el conversion.txt siguiendo el link "Open conversion log" en la
pantalla que indica que termina la conversin.
Aunque diga Succes, hay veces que hay varios errores en la misma que

conviene mirar:
* Error al convertir webservices (no se porque no los muestra como errores) en
mi caso
Importing WebService from
C:\Models\100\MTX1\kbdata\usrtypes\localhost_MTNet_amtwsfilsolMTWSFilSol.x
ml ...
>>>ERROR: Failed
>>>ERROR: Object reference not set to an instance of an object.
Successful
Importing WebService from
C:\Models\100\MTX1\kbdata\usrtypes\localhost_MTNet_amtwssolxmlMTWSSolX
ML.xml ...
>>>ERROR: Failed
>>>ERROR: Object reference not set to an instance of an object.
pero muestra todo como Succesful. Se puede arreglar mas adelante, pero
conviene conocerlo.
* HTML mal formado
Tambien hay que mirar a las correcciones que haga a programas que tengan
html mal formado, para revisar y ver como quedaron las pantallas.
Converting WebPanel HDHorTaP...
>>>WARNING: Webform modified to be XHTML well-formed
* Deprecated functions.
Hay que ver si se tienen algunas funciones que eran validas en 9.0 y que ahora
no se pueden usar mas.
En mi caso tenia UDF (que las sustitui con UDP)
Allownulls (hay que cambiar declarando en los atributos que puedan ser nulos)
Hidden (Si es de una Grilla Freestyle , hay que cambiar el codigo y poner
columna.visible=0 y si es una grilla normal, hay que poner la columna como
oculta)
>>>WARNING: 'allownulls' is a deprecated function. (Rules, Line: 12, Char: 1)
>>>WARNING: 'nocheck' is a deprecated function. (Rules, Line: 14, Char: 1)
8) Borrar los lenguajes que no se usan. Es bueno desmarcar el Chino, Japones,
etc si no se van a usar.
9) Revisar las propiedades de MasterPage y Default Theme y ponerle las
correctas (no se bien porque no se migran correctamente)
10) Instalar el KBDoctor y correr las consultas:
a) Objetos no alcanzables. Revisar los objetos que estan en la Categoria
KBDoctor.Unreachables y borrar todos los objetos que no se utilicen, incluyendo
atributos. NO BORRAR TRANSACCIONES hasta no estar seguro. Puede ser que

el objeto transaccion no se use, pero si se use la tabla que esta genera.


Si hay transacciones que no se ejecutan, pero si se necesitan para la creacion
de tablas, marcar la propiedad de dichos objetos, para que no las genere.
Antes del KBDoctor

Despues del KBDoctor

En una KB chica que use para la migracion , pase de 730 objetos a 634, por lo
que baje mas de un 15% la cantidad de objetos a especificar y un poquito mas

los que tengo que generar. Esto seguramente va a hacer mas rapido el ciclo de
desarrollo.
b) Atributos sin tabla base. Revisar donde estan siendo referenciados estos
atributos y quitar dichas referencias, si es necesario, crear nuevos dominos y
despues borrar dichos atributos.
c) Objetos con variables no usadas. Borrar todas las variables que no se utilcen
en los programas.
10) Hacer un build all y arreglar todos los errores que aparezcan (esta es la
parte divertida, pero no hay receta que valga para arreglarlos. La mayora de
los problemas que tuve fueron con SDT que pasan a ser dominios en la
conversin.
11) Revisar todos los warnings que aparezcan.
En GeneXus X se hacen unas cuantas validaciones nuevas (generalmente
necesarias) y por lo tanto se pueden tener mas warnings que en la versin
anterior. Conviene mirarlos en detalle.
Puede ser conveniente deshabilitar los warning spc0038 (no existe ndice por
esos atributos) y el de "Commit on Exit" por un rato hasta tener solucionados
todos los problemas. Esto se hace en la propiedad del generador, que se llama
Disabled Warnings.
12) Compilar todo, hasta que quede todo pipi-cucu.
Se puede tener problemas con programas externos, dll del usuario, flag del
compilador, y un conjunto de etceteras grandes.
13) Empezar a programar en GeneXus X.
Usen muchos DataSelectors, Data Providers, user controls y demas que estan
muy buenos....
14) Correr otras consultas del KBdoctor para poder arreglar otros errores.
15) Disfrutar la vida.
UPDATE: Conviene mirar la pagina del Wiki que explica el proceso de
conversion que tiene informacin mas completa y detallada de la migracin.
Enviar esto por correo electrnicoBlogThis!Compartir en TwitterCompartir en
Facebook

Personalmente tambin exporto toda la KB antes de convertirla, de ese modo


por lo menos obligo a que se lean todos los objetos. Me ha ayudado a detectar
problemas originales en la KB que no son de la conversin en si.
Hace 10 minutos me pas de nuevo con una KB de +6.000 objetos, algn lio de
los IDXs porque con un rbld lo resolv (con el "-y" por las dudas).
BTW: En la X no existen ms los IDXs :)
Tambin he encontrado informacin sobre otros casos que me encontr en el
wiki: http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?5710
ResponderEliminar

Enrique Almeida25 de julio de 2008 18:48


Guscarr: Agrege un link en el post, para que la gente que quiera vea la pagina
del wiki que esta muy completa.
Despues de publicar esto, intente migrar 2 kb mas (un poco mas grandes) y me
cancelaron en forma estrepitosa por otros motivos :(
Hay que seguir probando.
ResponderEliminar

Annimo30 de julio de 2008 12:30


Hola Enrique, disculpa, te hago una consulta que no tiene nada que ver con el
titulo.
Soy novato en genexus, me podrias decir donde conseguir un ejemplo como
imprimir en una impresora fiscal usando genexus?. Uso GX 9 .NET.
Gracias.
Jos
ResponderEliminar

Enrique Almeida30 de julio de 2008 12:42

Jose:
No tengo experiencia en impresoras fiscales...
Podes mirar en http://www.gxtechnical.com/gxsearch/hgenexussearch_f.aspx?
impresora+fiscal,
ResponderEliminar

Annimo30 de julio de 2008 18:58


Gracias Enrique, apenas pueda hacer funcionar esto te envio cdigo.
Jos
ResponderEliminar

Annimo4 de noviembre de 2008 11:54


una pregunta
no es mejor distribuir el modelo de gx9 y consolidarlo en gx10?
ResponderEliminar

Enrique Almeida4 de noviembre de 2008 11:58


Anonimo:
El distribuir en 9.0y consolidar en la X es una opcion, pero no siempre es la
mejor.
Algunos de los problemas que puede haber:
Si un objeto no consolida, es dificil arreglarlo.
Demora mucho mas que convertir.
El modelo de datos, puede quedar diferente y por lo tanto la base de datos
tiene diferencias.
En KB chicas, puede usarse (lo he usado), en KB mas grandes prefiero la otra
solucion.
Saludos.

ResponderEliminar

Annimo4 de febrero de 2009 23:51


Hola Enrique he leido tu post y seguido todos tus cosasejos, y efectivamente
sucedio cada una de las cosas que mensionas y las pude resolver, sin embargo
estoy atorado en uno y ya perdi varios das dandole vuelta al asunto y no mas
no queda.
Migre una aplicacin hecha en genexus 9.0 a GX X, pero tengo problema en los
webpanels donde uso GRIDS y en estos grids introduzco BC, cuando estos BC
son de un nivel no hay ningun problema, pero cuando son multinivel me marca
un error en ejecucin...
identifique que el error tiene que ver con una propiedad de las columnas del
grid "FieldSpecifier"
Familiar.item(0).PWBenPaternoFam
cuando lo tengo en cero me manda el siguiente error:
javax.servlet.ServletException: java.lang.ArrayIndexOutOfBoundsException: 0
>= 0
at java.util.Vector.elementAt(Unknown Source)
at com.genexus.GXObjectCollectionBase.elementAt(Unknown Source)
at hpwsolben_impl.strup1B0(hpwsolben_impl.java:1093)
la linea del cdigo (hpwsolben_impl.java:1093) es:
AV46GXV1 = nGXsfl_97_fel_idx ;
Currentitem0 =
(((SdtTPWBeneficiario_FamiliarItem)AV27benef.getgxTv_SdtTPWBeneficiario_Fa
miliar().elementAt(-1+AV46GXV1)));
if ( ( ( localUtil.ctol( httpContext.cgiGet( avCtlpwbennumfam_Internalname), ".",
",") < -9 ) ) ||
( ( localUtil.ctol( httpContext.cgiGet( avCtlpwbennumfam_Internalname), ".",
",") > 99 ) ) )
{
httpContext.GX_msglist.addItem(localUtil.getMessages().getMessage("GXM_ba
dnum"), 1, "_GXV12Q");
GX_FocusControl = avCtlpwbennumfam_Internalname ;
httpContext.ajax_rsp_assign_attri("", false, "GX_FocusControl",

GX_FocusControl);
wbErr = true ;
((SdtTPWBeneficiario_FamiliarItem)AV27benef.getgxTv_SdtTPWBeneficiario_Fa
miliar().elementAt(1+AV46GXV1)).setgxTv_SdtTPWBeneficiario_FamiliarItem_Pwbennumfam( (byt
e)(0) );
}
else
Suponiendo el problema era esta propiedad decidi cambiarla por:
"FieldSpecifier"
Familiar.item(1).PWBenPaternoFam
y desaparecio el error, pero ahora ya nop puedo ver la informacin desplegada
en el grid... me aparece vacio....
Ojala tengas tiempo de darle un vistazo e iluminarme con tu sabiduria...
Gracias Enrique

Juan Esteban
ResponderEliminar
Laura Larrosa6 de octubre de 2009 12:27
Enrique, te hago una pregunta, vos decs que la mayora de los problemas que
tuviste fueron con SDTs, bueno, efectivamente al convertir desde la 9.0 a Xev1,
al compilar tengo como 100 errores de SDTs, alguna sugerencia en que
fijarme? por que en realidad, los SDT parecen estar bien formados.
GRACIAS!
Laura.
ResponderEliminar
Enrique Almeida6 de octubre de 2009 13:37
Laura:
Que problemas estas teniendo?.
Te da errores al generar o al compilar?.

He podido solucionar todos los problemas que encontre, pero son bastantes
variados.
ResponderEliminar
Annimo17 de noviembre de 2009 14:15
Hola, pero cuando quiero migrar gxflow de 9,1 a X Ev1, me sale, Error! Private
Object, que no puedo exportar el objeto, mi modelo tiene un modulo de
seguridad y usuarios que me "regalo" el proveedor,
Es decir el proveedor me ha sembrado dichos programas y ahora ya no puedo
migrar a una nueva version y tengo que depender de el?
ResponderEliminar
Enrique Almeida17 de noviembre de 2009 15:00
Anonimo:
Como dice en esta pagina
(http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?3152) los Objetos
Privados aun no estan implementados en GeneXus X ni en la Evolution I.
Creo que si tenes objetos privados vas a tener que esperar un poco para
migrar.
ResponderEliminar
AB20 de mayo de 2010 01:08
donde esta el objeto report en el genexus x? alguien ke me ayude urgente!!!
ResponderEliminar
Enrique Almeida20 de mayo de 2010 08:31
AB:
Los reportes los podes hacer con procedure.

Antes teniamos procedures (podian modificar la base de datos) y reportes


(tenian salida impresa).
Esto hacia que si teniamos que hacer un reporte que acutualizar la base de
datos (por ejemplo marcar una factura como impresa) se debia crear un
reporte y un procedure.
Ahora alcanza con solo un procedure que haga las dos cosas.

A mi me hubiese gustado, que dejaran los reportes (como son ahora los
procedures o sea impresion + update en base de datos) y los procedures que
no tuviera salida impresa.
ResponderEliminar
Annimo24 de agosto de 2010 11:57
hola
comentare un problema que tengo haver si me pueden ayudar.
tengo una aplicacion hecha en genexus evo1 compilada en web en .net contra
sql 2008, la aplicacion esta trabajando en la intranet de la empresa y trabaja
sin ningun problema, pero no la hemos podido publicar a la web por medio de
un servidor isa server 2006 y aque parese tener problemas de permisos o algo
asi, si me pueden dar la amno de como publicar una aplicacion web por un
servidor isa 2006 les agradeceria mucho..
gracias
ResponderEliminar
Enrique Almeida24 de agosto de 2010 12:06
Anonimo:
Para poder ayudarte, deberias poner que error te esta dando, revisar los logs
del ISA server y tambien dar una direccion de mail donde se te pueda
contactar.
ResponderEliminar
Sebastian26 de noviembre de 2010 10:25
Enrique, hice una conversin de una KB bastante grande de GX 9.0 a la Ev1.
U3. El proceso de conversion le agrega al principio del nombre una letra P a los
procs, una H a los webpanels, etc. En mi caso particular tengo aprox 6000 mil
objetos que se encuentran en esta situacin. Sabes si hay forma de evitar ese
renombramiento que hace la conversion? Hay alguna forma de cambiar
nombres de objetos que no sea manualmente? Gracias, Sebastian.
ResponderEliminar
Enrique Almeida26 de noviembre de 2010 10:50
Sebastian:
No conozco la forma de evitar para que no renombre los objetos a la migracion
y creo que no existe tal forma.
Antes se podia tener varios objetos con el mismo nombre, si eran de diferente

tipo, ahora no se permite mas.. por eso necesitan diferenciarlo por la letra
inicial.
En que te afecta que renombre los objetos?
ResponderEliminar
Respuestas
Patricio C23 de febrero de 2012 23:35
Tengo una duda, para los estilos, es necesario quitarlos de la KB en Genexus 9
o no generan ningun problema en la conversion de la KB,
Eliminar
Enrique Almeida24 de febrero de 2012 08:27
Patricio:
En la conversion de la 9 a la X, los styles no produjeron ninguna problema.
Si tuve algunos lios con styles, cuando empece a trabajar con GeneXus Server,
pues no soporta styles.
Se pueden eliminar de forma facil como esta explicado aqui
http://ealmeida.blogspot.com/2012/02/eliminar-styles-de-kb-en-genexus-x.html
Eliminar
Responder
Sebastian26 de noviembre de 2010 12:16
Enrique, en principio no saba lo de la unicidad del nombre de objeto. Mi
pregunta es porque quera mantener el nombre de los objetos tal como
estaban en GX 9, hubiera estado bueno que la conversin solo agregara esa
letra cuando los objetos de distinto tipo tienen el mismo nombre, es decir,
cuando realmente se necesite. Por otro lado, tengo parametrizados nombres de
objetos en tablas de la BD, creo que esto no me afecta tanto.
ResponderEliminar
Respuestas
Enrique Almeida11 de abril de 2012 10:14
Si, algunas veces los nombres de los objetos que cambian traen problemas. En
la mayoria no.
Podria ser opcional en la conversion, que agregara o no la primer letra, con una

validacion previa para ver si no hay duplicados y que te los hiciera renombrar
antes de migrar.
No fue demasiado traumatico para noostros el tema de los nombres con letras
delante y rapidamente podes empezar a arreglarlos.
Eliminar
Responder
vrueda11 de abril de 2012 05:10
Hola Enrique
como haces para compactar la KB?
antes de hacer rbld es necesario borrar ciertos ficheros ( ari, ver ...? que
ficheros borrar?
Gracias
Un saludo, Victor
ResponderEliminar
Enrique Almeida11 de abril de 2012 10:19
En GeneXus 9.0, existe un utilitario para compactar las KB, que reduce el
tamao de los .DAT y despues los reindexa. Lo podes bajar en
http://www2.gxtechnical.com/portal/hgxpp001.aspx?15,8,8,O,S,0,,1670s
Usalo con cuidado, hace siempre un backup previo de la KB.
En la X, la mejor forma de compactar tu KB es distribuirla y conslidarla en una
KB vacia que tenga las mismas propiedades. Ojo que puede cambiarte algun
nombre de tabla, el orden de algunos campos y pocas cosas mas...
ResponderEliminar
Annimo20 de mayo de 2012 20:03
Hola
Donde puedo conseguir informacion o tutorial de genexus 9.
Mi email jo2006na@hotmail.com
Gracias.
ResponderEliminar
Respuestas
Enrique Almeida20 de mayo de 2012 20:22

Este comentario ha sido eliminado por el autor.


Eliminar
Enrique Almeida20 de mayo de 2012 20:24
No se donde se pueden bajar los cursos de 9.0.
Los de Genexus X, podes hacerlos en http://training.genexus.com o en
http://www2.gxtechnical.com/portal/hgxpp001.aspx?
15,5,298,O,S,0,MNU;E;38;33;MNU;,2613

Potrebbero piacerti anche