Вы находитесь на странице: 1из 19

1

Gua Conversin de Instancias


9.0 a XEv1
2


ndice

Cambios importantes .................................................................................................................................... 4
Transaccin como web component: ......................................................................................................... 4
Una instancia por transaccin: ................................................................................................................. 7
Determinacin de parmetros a la hora de invocar la transaccin: ......................................................... 7
Cambios en la estructura de la instancia: ................................................................................................. 7
Cambios en el tema: ................................................................................................................................. 8
Pasos para convertir instancias ..................................................................................................................... 9
Previo a la conversin de instancias ......................................................................................................... 9
Modificar tema k2b en KB de 9.0 .......................................................................................................... 9
Convertir KB a GeneXus X Evolution 1 ................................................................................................. 9
Verificar correcto funcionamiento de la KB sin patterns. ..................................................................... 9
Seteos en el directorio templates ......................................................................................................... 9
Agrupar instancias que van sobre la misma transaccin en una sola .................................................. 9
Conversin de instancias ........................................................................................................................ 10
Configuracin de tema ............................................................................................................................ 11
Especificar, generar y compilar ............................................................................................................... 12
Error por referencia a controles en nodo events................................................................................ 12
Error por referencia a controles en cdigo de la transaccin............................................................. 13
Error por diferente Data Area en web form de la transaccin ........................................................... 13
Manera distinta de invocar a la trn ..................................................................................................... 13
Error por crear web component de transacciones con update transaction = false ........................... 14
3

Error por regla parm de la transaccin incorrecta: ............................................................................. 14
Reportes PDF ........................................................................................................................................... 14
OAV y cdigo de extensin de tabs del View (Entity Manager en la XEv1) ............................................ 15
Anexo I: Propiedades no convertidas ..................................................................................................... 18
Cancel Event ........................................................................................................................................ 18
Link To ................................................................................................................................................. 18
Link BackToSelection .......................................................................................................................... 18



4


Cambios importantes

Con el objetivo de seguir avanzando, mejorando la calidad de las aplicaciones que se desarrollan con
GeneXus, y aumentando la productividad del desarrollador, a partir de la versin de las k2btools en la X
se realizaron cambios importantes, con respecto a lo que se estaba generando en su versin 9.0.
Estos cambios pueden tener impacto y deben ser tenidos en cuenta a la hora de realizar la conversin
de instancias. En esta seccin enumeraremos los cambios que consideramos ms importantes a la hora
de trabajar.

Transaccin como web component:

El objeto transaccin pasa a ser generado como web component. El web form es reducido de forma tal
de solo contener el rea de datos ms los botones. Deja de poseer un ttulo.
Ac mostramos la figura de una transaccin en la versin 9.0

5




Y a continuacin la vemos en la X.
6




En el contexto de patterns, para invocar a la transaccin, no se invoca ella sola sino que se invoca al
entity manager (view en la versin 9.0) que es el objeto que la contiene.
La realizacin de este cambio se debi a:
Poder reutilizar el web form de la transaccin en cualquier objeto.
o Evita definir una nueva transaccin si la transaccin est en otro contexto, evitando
volver a definir reglas, eventos , etc.
o Hace que la aplicacin sea ms escalable, y que las reglas de negocio estn en un objeto
nico.
Reutilizacin del tab general en el entity manager
o No es necesario definir un tab general, para tener una vista display de la transaccin
sino que se reutiliza el mismo nodo.
o Usuario tiene que escribir menos cdigo. Lo que quiere ver es lo que est definido en la
transaccin.
Esto trae algunas consideraciones cuando se realiza la conversin:
7

Invocacin a la transaccin por fuera de objetos generados por el patrn. En este caso en lugar
de invocar a la transaccin se deber invocar al entity manager.
Cdigo en la transaccin en slots de usuario que referencian la modificacin del ttulo (control
k2bpgmdesc que ya no existe). Habra que eliminar ese cdigo o ver de pasarlo al entity
manager.

Una instancia por transaccin:

La arquitectura de GeneXus X, solamente permite tener una instancia del pattern aplicado por
transaccin. Para eso, antes de realizar el proceso de conversin, se deben unificar las instancias que
aplican a ms de una transaccin en una sola.

Determinacin de parmetros a la hora de invocar la transaccin:

En la versin 9.0, se determinaba la forma de invocar a la transaccin a partir del nodo parameters, del
nodo transaction. Esto traa por dems confusin y no exista el dinamismo de que modificando la regla
parm de la transaccin, se modificaba automticamente la instancia, sino que haba que hacerlo en los
dos lados.
A partir de GeneXus X, las k2btools leen la regla parm de la transaccin y de esta forma infieren como se
invoca la transaccin. Para que el pattern pueda inferir esto de forma correcta se deben dar las
siguientes condiciones:
Las variables de la regla parm deben estar basadas en un atributo (menos la variable mode) y
deben tener el mismo nombre del atributo.





Cambios en la estructura de la instancia:

8

En la versin 9.0, la estructura de la instancia fue modificada completamente. Entre los ejemplos ms
claros se encuentran la desaparicin del nodo level (el pattern se basa en transacciones y el modo
display muestra todos los niveles) y el nodo view se transform en entity manager.
Estos cambios de nombres son resueltos completamente con el conversor de instancias. El nico cambio
que se hace es que dado que el pattern en el modo display muestra los dos niveles, desaparece dentro
del view el tab correspondiente al segundo nivel de la transaccin. Si se quiere tener este tab, habra
que agregarlo a mano.
Cambios en el tema:

Para tener una interfaz ms clara, se modific la interfaz y se incorporaron dos nuevos temas (k2b2 y
k2b3). Se modificaron los nombres de las clases. Esto produce tener una interfaz mucho ms prolija, con
menos tablas, y nombres claros.
Esto tiene un impacto en:
Objetos que fueron realizados a mano (por fuera de patterns)
Transacciones.
En pasos para la conversin explicaremos como lidear con estos problemas.

9


Pasos para convertir instancias

Previo a la conversin de instancias

Modificar tema k2b en KB de 9.0

Hacer un rename del tema de la 9.0 para que no sea el mismo que el que luego va a consolidar el
patrn. En caso de no hacerlo en esta fase, igual se puede hacer ms adelante.
Convertir KB a GeneXus X Evolution 1

Realizar la conversin, una vez realizada, verificar el log de conversin sobre la presencia de errores. En
caso de dudas, o problemas consultar al equipo de soporte de GeneXus.
Verificar correcto funcionamiento de la KB sin patterns.
Un paso muy importante es especificar, generar y compilar toda la aplicacin. Verificar que todo
especifique y genere, y que en ejecucin la aplicacin funcione de la misma manera que lo haca en la
9.0. Este paso es fundamental pues permite separar los errores que son debidos a la versin de GeneXus
(a soporte de GeneXus se le entrega una KB limpia sin patterns) de los que pueden provenir por la
conversin de instancias dentro del patrn. Sin realizar esto, no se puede proseguir en la conversin de
instancias.
Seteos en el directorio templates

En el directorio templates, directorio donde se encuentran las instancias a convertir se deber copiar el
k2bentityservices.confing utilizado en esa KB. En caso de no estarlo el programa de conversin
desplegar un error.
El directorio de imgenes utilizado tambin deber estar dentro del directorio templates para que el
pattern pueda convertir las imgenes correspondientes a las acciones de usuario en objeto imagen.

Agrupar instancias que van sobre la misma transaccin en una sola

En este punto se debern encontrar cuales son las instancias que tienen el mismo nodo transaction raz.
Se tomar una instancia como principal, y de las otras se copiar todos los nodos levels, y se pasarn a la
10

instancia principal. Luego se borrarn las instancias copiadas. Si se desea mantener un modelo con la 9 y
otro con la X, es posible aplicar en la 9.0 instancias con varios levels y su comportamiento es el mismo
que el de tener varios levels separados en diferentes instancias.

Conversin de instancias

Para convertir una instancia se debe hacer lo siguiente:
Dentro del men tools, se encuentra la opcin Import Pattern Instances.


Esto despliega la siguiente pantalla que se muestra a continuacin.
11


En Add se deben agregar las instancias que se van a importar, para esto se va al directorio donde se
encuentran las instancias y se agregan.
Esta es la forma en la que se migran instancias de la 9.0 a instancias de la X.
El programa conversor resuelve la mayora de los problemas, sin embargo en la conversin pueden
surgir algunos problemas, que en la parte de especificar, generar y compilar estableceremos como
solucionarlas.
Configuracin de tema

En la base de conocimiento convivirn dos temas. El tema que ya exista en la kb vieja (k2bviejo, ser el
tema por defecto de la KB) y el tema asociado a los objetos nuevos que trae el patrn k2b. Para esto
consolidar nuevamente el tema viejo, modificarle el nombre y cambiarle el tema k2bviejo. Dejar ese
tema como tema por defecto del modelo, para que todos los objetos lo tomen. Consolidar luego de los
objetos bsicos del pattern k2bentityservices el tema k2b.
Para esto en el settings del patrn k2bentityserivces colocar en el nodo theme:
Theme: K2B
SetObjectTheme = True.

En el nodo Layout seleccionar los layouts sin nmero (no el dos ni el tres).

De esta forma se obtendr con los dos temas una aplicacin con interfaz uniforme. Despus si se desea
usar el tema 2 o 3 de las k2btools tener en cuenta que hay que modificar todos los objetos que fueron
12

realizados a mano en la 9.0 para poder tener la interfaz uniforme dado que en esas dos nuevas
interfaces se modifica el posicionamiento de los objetos en pantalla.

Especificar, generar y compilar

Tanto en el proceso de conversin, especificacin o generacin, pueden surgir los siguientes problemas
que hay que corregirlos en las diferentes transacciones. En futuras versiones se intentar mejorar el
programa de conversor de forma que sea ms inteligente y convierta automticamente algunas de las
conversiones que hoy el usuario en caso de error debe realizar a mano.
Error por referencia a controles en nodo events

Errores por referencia a controles que cambiaron de nombre. Verificar los warnings de los objetos por
ejemplo:
'K2BPgmDesc.Visible' is a non-standard expression. 'K2BPgmDesc' is assumed to be a
control name as support for non-standard expressions is enabled. (Events, Line: 4, Char:
2)

'K2BPgmDesc'
invalid
control.
(Events, Line:
4, Char: 2)



'Visible' is a
non-standard
expression
and support
for non-
standard
expressions is
enabled.
(Events, Line:
4, Char: 13)


Esto quiere decir que se est referenciando una variable en los eventos que no existe ms. En este caso
k2bpgmdesc fue sustituda por PgmDescriptorTextBlock. Las descripciones de los filtros se siguen
nombrando de la misma manera.
Otros cambios de nombres de controles correspondientes a text blocks:
FixedDataPaisId en la 9.0 por TextBlockPaisId (fixed data del trabajar con)
TextBlock1 en la 9.0 por TextBlockPaisId (fixed data views)
RptControlExcel se convierte en Export
13

K2BRefresh se convierte en Refresh
RptControl no tiene correspondiente en la conversin.
NewControl se convierte en Insert
BottomCompoment por WebComponentBottom1.
TopComponent por WebComponentTop

Error por referencia a controles en cdigo de la transaccin

Referencia a datos de pantalla que ahora no se encuentran.
Referencia a k2bpgmdesc (descripcin de la transaccin).
Botones:
Btn_enterButton en la 9.0 por Enter en la X
Btn_checkButton por defecto no se genera en la X.
Btn_cancelButton en la 9.0 por Cancel en la X

Alguno de los errores que da, en estos casos cuando se salve o especifique la transaccin dar el
siguiente error.
\error: Invalid attribute 'K2BPgmDesc' (Events, Line: 40, Char: 1)
error: 'Caption' invalid property. (Events, Line: 40, Char: 12)


Error por diferente Data Area en web form de la transaccin

Cuando aparece en los eventos de la trn el error: Att does not have visible property, puede deberse a
que determinados atributos que estaban en el borde de la dataarea en la versin 9.0, dejan de aparecer
en su conversin a la X. Para esto agregue estos atributos dentro del data area del pattern.
Manera distinta de invocar a la trn
spc0008 Call to program TPais that cannot be generated. (Events, Line: 39)
14

Ahora la transaccin es invocada como web component y posee URLAccess en false. Por esto todas las
llamadas de objetos externos (por fuera de patterns) a la transaccin comenzarn a dar error. Para esto
en lugar de invocar a la transaccin, invocar al entity manager que la contiene.

Error por crear web component de transacciones con update transaction = false

Las transacciones con update transaction en false provenientes de la 9.0 al no actualizarse, no se
convierte su propiedad para que sean web compoents. Puede suceder que esa transaccin sea creada
dentro del entity manager y al no estar como web component, desplegara mensajes de error.
Object "TPAIS" referenced in a create function must be a component. (Source, Line: 5)
En caso de este error, ver de reaplicar el patrn k2bentityservices al objeto.

Error por regla parm de la transaccin incorrecta:

Variable Areanegociocodigo1 not defined; N(10.2) assumed.
Si comienzan a surgir estos errores en los objetos generados por el patrn, se debe ir a la transaccin
que desea invocar y verificar la regla parm. El pattern lo que hace automticamente es invocar a la
transaccin con los nombres de las variables que aparecen en la parm. Estos nombres debern ser
iguales que el de los atributos. En caso de no serlo corregirlo. En este caso por ejemplo la parm contena
parm (In:&Mode, In:&AreaNegociosCodigo1), se cambio para que sea parm(In:&Mode,
In:&AreaNegociosCodigo).
En caso de no querer modificar la regla parm, se puede asignarle valor y definicin a la variable en las
instancias de patterns que la invoquen. Para esto coloque un nodo variable definiendo la variable y
agregue un nodo events con el evento correspondiente para asignarle un valor.



Reportes PDF
Hasta la versin 4.0 todava no se cuentan con los reportes PDF. Se migra la propiedad pero
momentneamente los reportes pdf no sern generados. Cuando se libere la versin con los reportes el
usuario no deber configurar nada y automticamente volver a tener la generacin de los repotes pdfs.
15


OAV y cdigo de extensin de tabs del View (Entity Manager en la XEv1)

En la versin de la X, el cdigo correspondiente a la carga de los tabs del entity manager (view) es
diferente con respecto al que se tena en la 9.0. De esta forma, cualquier cdigo que se haya adicionado
con el objetivo de extender los tabs en tiempo de ejecucin, no ser compatible con el que presenta la
versin. En esta seccin daremos como migrar ese cdigo, para poder tener el mismo comportamiento
en ese entity manager. Adems, en caso de que se estuviera aplicado el pattern OAV, si bien el pattern
no est migrado a su versin en GeneXus X, damos el cdigo necesario para que se puedan reutilizar
desde el entity manager los objetos generados por el patrn OAV en GeneXus 9.0.
Daremos aqu un ejemplo genrico y luego daremos otro ejemplo para el caso concreto del Patrn OAV:


Versin 9.0 haba que agregar el cdigo en dos subrutinas:

1) Subrutina LoadAllTabs (se agregaba el tab)
2) Subrutina SetWebComponent (se preguntaba segn cul era el tab seleccionado y se cargaba el
web component correspondiente).

En la versin de la X, todo esto se hace en una nica subrutina de nombre LoadAllTabs. En esta
subrutina, lo que hay que hacer es :







16


















For Each (se recorre segn la estructura que se desee recorrer)
&Tab = new()
&Tab.Code = <%=colocar el cdigo del tab%>
&Tab.Description = <%=descripcin del tab%>
&Tab.WebComponent = <%componente que se desea crear%>
&Tab.Link = <%link al entity manager, igual al valor de tab.link de otros componentes%>
&Tab.ComponentType = K2BComponentType.UserDefined
&Tabs.Add(&Tab)
EndFor

17


Para el caso del OAV, se tiene que agregar en events and subroutines un nodo sub, de nombre
LoadAllTabs y en el end code colocar:













EntityManager nombre = ViewProductos.
PKTransaccinPrincipal = ProductId
FormDefinitionId y FormDefinitionDescription(ProductoFormDefinitionId,
ProductoFormDefinitionDescription).


For Each
&Tab = new()
&Tab.Code = !"FormOAV" + trim(str(ProductoFormDefinitionId))
&Tab.Description = ProductoFormDefinitionName
&Tab.WebComponent = HProductoOAVWC.Link(&ProductId,
ProductoFormDefinitionId)
&Tab.Link = ViewProductos.Link(&Mode, &ProductoId, &Tab.Code)
&Tab.ComponentType = K2BComponentType.UserDefined
&Tabs.Add(&Tab)
EndFor


18

Anexo I: Propiedades no convertidas

En la conversin de instancias, existen determinadas propiedades que en nuestra experiencia no eran
utilizadas en la versin 9.0 y de ser utilizadas se usaban para casos muy particulares. En la versin actual
estas propiedades no sern convertidas. Esto es para tener en cuenta, en caso de luego de la conversin
presentarse problemas.

Cancel Event
En la versin 9.0 se poda setear qu evento se iba a ejecutar cuando se presionara cancel en la
transaccin.
En esta versin en caso de que se tuviera cancel event lo que hay que hacer es luego de la
transformacin, eliminar ese evento y colocar ese cdigo en el slot de usuario cancel.
Link To
La propiedad LinkTo no ser convertida. Para eso se sugiere en caso de tener LinksTo, cambiar esta
propiedad por add -> Link y apuntar al objeto.

Link BackToSelection
El elemento link asociado a la raz workwiths o view, no ser convertido. Esto se usaba para modificar el
backtoselection, la idea es que el pattern si el workwith recibi parmetros idea otro mecanismo ms
inteligente a la hora de determinar el backtoselection.










19

Вам также может понравиться