You are on page 1of 15

Actualizacion a GeneXus 9.

0
English version

Actualizacin de Aplicaciones GeneXus a la versin 9.0


Introduccin

Actualizar su aplicacin a GeneXus 9.0 significa convertirla a la versin 9.0 manteniendo las mismas funcionalidades y principalmente manteniendo la plataforma de la aplicacin generada.

Esta actualizacin le permitir utilizar -sin que el desarrollador tenga que intervenir de modo alguno- las funcionalidades implcitas de la versin (por ejemplo las disponibles en el Development Environment como tambin las optimizaciones generales de la aplicacin qu pueden repercutir en performance, interfaz, etc.) Acceda a http://www.gxtechnical.com/gx90 para tener una visin general de la versin. Acceda aqu para ver las funcionalidades implcitas de las cuales podr hacer uso en esta versin sin costos de programacin.

Documentacin Gua de la Conversin a 9.0

Siga esta gua paso a paso para convertir su base de conocimiento a la versin GeneXus 9.0

Tools Comparacin de Navegaciones

Aplique esta herramienta para comparar los listados de navegaciones de los objetos entre la versin inicial y la versin 9.0. Esto le permitir ver las diferencias que pueden surgir por las mejoras/cambios introducidos en la versin.

Capacitacin Curso de Actualizacin a GeneXus 9.0

Se recomienda realizar este curso de actualizacin que se brinda en modalidad no presencial Para obtener el material acceda a http://www.gxtechnical.com/main/hgxtrain.aspx?2,4,272,4 Para inscribirse al curso enve un email a training@genexus.com

Funcionalidades de GeneXus 9.0


English version

Funcionalidades de GeneXus 9.0 Introduccin

Este documento clasifica las funcionalidades de la versin 9.0 de GeneXus segn el costo y el beneficio de incluirlas en una base de conocimiento existente. Decimos que una funcionalidad es implcita cuando el desarrollador no tiene que intervenir de modo alguno para utilizarla (o solamente requiera configurar una propiedad general del modelo). Las funcionalidades explcitas son las que requieren la intervencin del desarrollador para sacar provecho de las mismas. Adems, una funcionalidad nos brindar un beneficio Directo cuando es visible en la solucin final provista al cliente. Mientras que el beneficio ser Indirecto cuando sea una mejora en el ambiente de desarrollo/productividad. La documentacin completa se encuentra disponible en las Release Notes de GeneXus 9.0

Clasificacin
Funcionalidades Implcitas
Funcionalidad Ajax - Web client side validation
Application Localization .NET Mobile Generator Implcito Directo

Costo
Implcito Impltico

Beneficio
Directo Directo

Comentario
Requiere generar la aplicacin y traducir los textos Requiere generar la aplicacin

MySQL Theme Editor Version 2.0 Database Reverse Engineering Tool Export Compare Tool Server side constraints Using Filters as Hints Optimized find navigation "For each exit" code optimization Optimization for mass updates Improved Concurrency handling: Additive Attributes Improvements in Developer Experience More tooltips Delete multiple interrelated KB objects at once Procedures can now call web objects Automatic date/date time validations Linked combo or list boxes

Implcito Implcito Implcito Implcito Implcito Implcito Implicito Implcito Implcito Implcito Implcito Implcito Implcito Implcito Implcito Implcito Implcito

Directo Directo Indirecto Indirecto Directo Directo Indirecto Indirecto Directo Directo Indirecto Indirecto Indirecto Indirecto Directo Directo Directo Indirecto Indirecto Directo Indirecto Directo Indirecto Indirecto

Requiere generar la aplicacin

Mejora de performance Mejora de performance

Mejora de performance

Web Transactions with more than 2 levels support URL access Property Rows Property New options on rightclick in win New sql syntax for oracle 9.x and higher Help "in any language" New option to import just the Help New option to generate again the changed help only Implcito Implcito Implcito Implcito Implcito Implcito Implcito

Requiere generar la aplicacin

Funcionalidades Explcitas
Las funcionalidades explcitas se describen en Funcionalidades explcitas de GeneXus 9.0.

Funcionalidades explcitas de GeneXus 9.0


English version

Funcionalidades Explcitas
Funcionalidad Master Pages Business Components More J2EE support than ever Applications monitoring and management support LUW managed by the EJB Container GXchart 3.0 Option to Sign database updates Data Area, a new control for web styles BLOBs in Web forms SDTs can be on the form Web Services: Grouping Locations Null handling optimizes navigations

Costo Explcito Explcito Explcito Explcito Explcito Explcito Explcito Explcito Explcito Explcito Explcito Explcito

Beneficio Indirecto Indirecto Indirecto Directo Indirecto Directo Indirecto Indirecto Directo Indirecto Indirecto Indirecto

Comentario Cambiar programacin

Cambiar programacin Cambiar programacin

Message Queue handling data types DirectoryDataType FileDataType Ime Mode Property InputType property LDAP DataType

Explcito Explcito Explcito Explcito Explcito Explcito Explcito

Directo Indirecto Indirecto Directo Directo Directo Directo Indirecto Indirecto Indirecto Indirecto Indirecto Indirecto Indirecto Indirecto Indirecto Indirecto Indirecto Indirecto

??

Cambiar propiedades

Suggest Property New Before Connect property New IIF function New byte count function New call syntax XSLTApply Method New Methods for attributes, variables and enumerated domains! Changes in Textblock handling in Web forms More events available in Rules Update Rule Noaccept rule supports multiple attributes as parameters New Dependencies clause in assignments Defined by clause support in new

Cambiar propiedades

Explcito Explcito Explcito Explcito Explcito Explcito Explcito Explcito Explcito Explcito Explcito Explcito

Cambiar Programacin

Gua de la Conversin a GeneXus 9.0


English version

Gua de Conversin de Bases de Conocimiento a GeneXus 9.0


Se sugiere seguir esta gua paso a paso para convertir sus bases de conocimiento a GeneXus 9.0. Identificamos tres etapas en este proceso. Entendemos que convertir una aplicacin es bastante mas que convertir la base de conocimiento. Para tener una visin general sobre la conversin de aplicaciones a GeneXus 9.0 recomendamos leer Conversin de aplicaciones GeneXus - Gua Tcnica

Etapa 1 - Preparar la KB para la conversin

Como el proceso no es back-compatible se recomienda realizar un respaldo previo. Tambin se sugiere minimizar el tiempo de la conversin siguiendo los pasos que se detallan aqu: 1. Respaldar la base de conocimiento a convertir Se recomienda realizar un backup de la base de conocimiento a convertir antes de comenzar el proceso. Este respaldo ser el que se convertir a la versin 9.0 Debe recordarse que existen diferentes opciones de respaldo (ver ms informacin enhttp://www2.gxtechnical.com/portal/hgxpp001.aspx?15,4,61,O,S,0,,7728) El respaldo nicamente de la Base de Conocimiento sera suficiente para esto. 2. Reconstruir los ndices Para evitar problemas de ndices corruptos en la base de conocimiento, se sugiere hacer un rebuild -Y. Acceda aqu (http://www2.gxtechnical.com/portal/hgxpp001.aspx?15,4,61,O,S,0,,2106) por ms informacin. 3. Borrar todos los modelos no utilizados Para que la conversin sea ms rpida es recomendable borrar todos los modelos no utilizados y el modelo de backup si lo hubiera.

4.Borrar objetos no usados Para ahorrar trabajo en la conversin es recomendable borrar todos los objetos no utilizados. Estos objetos no utilizados pueden tene errores de programacin que eviten su conversin.

5. Instalar el generador Origen y Destino en la versin 9.0 En los casos de conversiones de bases de conocimiento que implican tambin un cambio de generador (por ejemplo de VB a .NET, o d VFP a Java) se recomienda instalar tambin el generador Origen en la versin 9.0, aunque el mismo luego no se vaya a utilizar. En el proceso de migracin, muchas veces es necesario acceder a archivos de propiedades del generador origen, y al no encontrarse da errores.

6. Conversin de la KB Ejecutar GeneXus 9.0 y abrir la base de conocimiento a convertir. Ver el proceso de conversin. Recuerde salvar el archivo de objetos que tienen errores de conversin. Este deber ser utilizado para solucionar los problemas que s reporten.

Etapa 2 - Ajuste de la KB

Se recomienda realizar un anlisis de las propiedades de los modelos ya que en muchas oportunidades se cambian los valores por defecto de las mismas pudiendo modificar el comportamiento. 7. Analizar los valores por defecto de las propiedades Acceda aqu para ver los cambios en las propiedades por defecto y como pueden impactar en su base de conocimiento. 8. Compatibilidad Acceda aqu para ver temas de compatibilidad. 9. Nuevas propiedades Acceda aqu para ver las nuevas propiedades definidas en la KB. Estas nuevas propiedades no deberan implicar cambios en el comportamiento, de todos modos se recomienda revisarlas.

Etapa 3 - Anlisis detallado de la KB

Se realizar una comparacin de las navegaciones de todos los objetos entre la versin inicial y la versin 9.0 para verificar que se tenga el comportamiento esperado. Para esto, se cuenta con una herramienta adicional que genera un formato de texto unificado de las navegaciones. 10. Comparar las navegaciones

Acceda aqu para ver la metodologa a seguir para comparar las navegaciones. Finalizada esta comparacin, se puede garantizar que la base de conocimiento est convertida a la versin 9.0 manteniendo el comportamiento deseado. 11. Test Para finalizar, se debe generar la aplicacin en el Generador que corresponda y comenzar as el testeo de la misma. En el caso de realizar una conversin bsica, este proceso podr realizarse inmediatamente.

Descripcin : Que es necesario guardar cuando se quiere respaldar una KB? Abstract La informacin a respaldar de una Base de Conocimiento puede variar. Se detallan los diferentes casos posible.

Descripcin Detallada El respaldo debe efectuarse considerando que es lo que se desea respaldar: 1) Respaldo nicamente de la Base de Conocimiento (no incluye fuentes ni datos de modelos prototipo y produccin), se debe copiar el contenido del directorio raz de la base de conocimientos. A partir de la versin 8.0 tambin es necesario respaldar el directorio KBDATA (y sus subdirectorios) ya que contiene la informacin que graba el WSDL inspector. 2) Respaldar la Base de Conocimiento, y algn modelo prototipo/produccin: Se debe copiar el contenido del directorio raz de la base de conocimientos; el directorio \Data00x correspondiente al modelo que se desea respaldar. Se pueden incluir las especificaciones, respaldando el directorio \Gxspc00x y sus subdirectorios dado que existe un subdirectorio para cada generador. 3) Respaldar la Base de Conocimiento y todos sus modelos (respaldo total): se debe copiar el contenido del directorio raz de la base de conocimientos y todo el rbol de directorios. La distribucin de la Base de Conocimiento o parte de la misma, no es considerado un respaldo por lo siguiente: - Si se consolida sobre una Base de Conocimiento vaca, se renumeran todos los atributos, tablas y objetos, y no se tendr prototipo/produccin. Los nombres de los ndices y tablas no tiene por que quedar igual salvo que se sigan ciertas reglas. - Si se tienen N modelos prototipo o N modelos produccin, debe considerarse el modelo desde el cual se desea exportar, ya que se exportan los objetos, con el estado que los mismos tienen en el modelo origen de la exportacin. - Adems se debe considerar que al importar, puede ser requerida una reorganizacin, dependiendo del estado del modelo destino. IMPORTANTE: Entre los archivos de la KB a respaldar existen varios .dat e .idx. Uno de estos archivos se llama INDEX.DAT. Ese nombre coincide con el utilizado por otros programas y en particular por el Internet Explorer para indexar los archivos temporales. Como consecuencia algunos programas de Backup son configurados para evitar su respaldo. Esto podra provocar prdida importante de informacin de la KB por lo tanto es necesario revisar que no exista una regla global en el programa de Backup que excluya ese archivo de la KB.

SAC Relacionados SAC Descripcin

2106

Pasos a seguir para ejecutar un Rebuild

Informacin de Productos Asociados Producto Reportado en Versin Estimada corr. en versin Liberado en Suscribirse versin al SAC

SAC # 2106

Tipo : Tip

16/12/1996 IMPRIMIR

Descripcin : Pasos a seguir para ejecutar un Rebuild Abstract Para ejecutar un Rebuild de la Base de conocimiento GeneXus seguir los siguientes pasos: 1. Ejecutar una lnea de comando (ventana DOS). 2. Posicionarse en el directorio raz de la KB. 3. Ejecutar el archivo rbld.bat que se encuentra en la raz de la instalacin de GeneXus. IMPORTANTE: Es importante tomar el rbld.bat de la versin de GX correspondiente a la KB. Ejemplo: C:\MyKB>C:\GeneXus\rbld.bat Descripcin Detallada Modos de ejecucin del Rebuild: 1. RBLD Reconstruye todos los IDX siempre. Leyendo la informacin del cabezal antes. Esto ltimo es la principal diferencia con la siguiente opcin. 2. RBLD habiendo borrado los IDX previamente. Reconstruye SOLAMENTE todos los IDX. Tambin reconstruye los .DAT que estn daados 3. RBLD -y (Rebuild Forzado) Fuerza la reconstruccin de los IDX pero TAMBIEN reconstruye TODOS los DATs (que tambin pueden estar daados) estn daados o no. NOTA: _ IDX: Indices de acceso a la base de conocimiento. _ DAT: estructura interna donde se almacenan los objetos GeneXus.

SAC Relacionados SAC Descripcin

7728

Que es necesario guardar cuando se quiere respaldar una KB?

GeneXus 9.0 Knowledge Base Conversion Process


Introduction
Knowledge Bases created with GeneXus versions older than 9.0 need to be converted. This conversion process is automatically executed, after the user confirms it, when opening a KB created with previous versions. Important: the values of the preferences Date Format, Time Format and Decimal Separator are not converted so you need to backup this values. More information... Once converted, KBs can't be opened with previous GeneXus versions. For this reason, we recommend that you back up these KBs before they are converted.

Description
If you try to open a non-converted KB with GeneXus 9.0, you will see a dialog box similar to the following:

To convert a KB, click the OK button to start the conversion. During the process a progress bar is displayed. If the conversion is successful, you won't see any message and the KB will simply open. Basically, the conversion process opens each object and resaves it while adding certain information. In this sense, a KB will always be converted. However, sometimes an object can create problems during the process, in which case a dialog box will appear:

There you can view the problem details and save them to an XML file (see File Format below) to be analyzed later. To do so, click the Details button. The objects with problems can't be converted to GeneXus 9.0, that's why we recommend that you examine them and fix the problem. TIP: Whenever an object gives an error during conversion, an XML file is saved (see File Format below) under the name ConvertTo90Log?? .XML File Format The file containing the results of the objects that gave errors during conversion is an XML file with the following format:

Considerations & FAQ


It is not backwards compatible The conversion process implies that a converted KB can't be opened with older GeneXus versions. For this reason, we highly recommend that you previously back up the KB. Possible backups Message "File 'c:....gxvfpcspropert.def' could not be opened" This message means you're trying to convert a KB which includes a VFP model and you hadn't installed the VFP C/S generator. The conversion process implies each object of the KB is opened, changed and saved. When an object is opened the properties (from the .DEF file) need to be loaded. So, if you hadn't installed the corresponding generator the .DEF cannot be opened. Solutions: You can choose one of the following:

install the corresponding generator, if it's available remove the corresponding model from the kb being converted copy a propert.def file from another installation of GX 9.0 version (from GeneratorName?? directory, as appears in the message) create a .TXT file with .DEF extension. This file must be greater than zero bytes.

Dialog boxes displayed when trying to open a converted KB with previous GeneXus versions If you try to open a KB converted to the 9.0 version with an older GeneXus version, you will see the following dialog box twice:

NOTE: The 2120 code may vary.

If you click Yes in these dialog boxes, you will see the following:

NOTE: KBs converted to 9.0 can't be reopened with older versions. An upgrade to the GeneXus 8.0 Development Environment will be released to avoid those messages and display only the last one.

Specification Warnings
After converting the KB, the first Build All may report warnings about potential problems that were not detected by previous versions of GeneXus . We recommend reading about this in Conversion to GX9.0 - Common errors and recommendations

More information about KB Conversion


The document Conversion to GX9.0 - Common errors and recommendations has been created in order to document known issues and smooth the conversion path. It's open to feedback from those who convert their KBs. Comments & Collaboration

How long does the conversion process take?


The process depends on many factors such as number of objects in the KB, number of models, synchronization of those objects in all models, computer power, and so on. Therefore, it's difficult to give a time estimate. For instance, a KB with more than 8,300 objects in a Pentium M (1600 Mhz and 512 Mb RAM) took 2 hours to convert.

Conversion Test Results


The conversion process has been tested in tens of KBs and no problems have been detected. However, it's worth noting that in certain situations the original KB already has problems, which are evidenced in the conversion process.

Small experience converting a small KB


user:guscarr 07/26/06 18:24 I'd converted a small kb (it's about 60 objects) developed by a friend. The KB was quite small, so I did not expect any kind of errors nor a big "experience". And I was right. However I found a "detail", which I'm describing here because, could be useful for someone else. The KB was converted from 8.0 to 9.0, specifically to 9.0 Dev Env U1 (build 740, Winte Build 77) y .NET U1 (build 567).

When I tried to compile the main object (Webp:HMundial) I received this error: haccesoa.cs(490,13): error CS0117: 'GeneXus.Programs.haccesoa' no contiene una definicin para 'refresh'/doesn't contains a definition for "refresh" haccesoa.cs(511,16): error CS0117: 'GeneXus.Programs.haccesoa' no contiene una definicin para 'refresh'/doesn't contains a definition for "refresh" The problem was a "form.refresh()" method included in an event. Something like:

If &UsrExists = 'N' &Msg = 'User not valid.' Form.Refresh() Else If &PwdOK = 'Y' .... endif

I never used this method before, seems to have no sense to use it in a webpanel, so I just removed it because the code is a "login event" which includes a "refresh" itself. I don't know why it was included that method and I don't know why this "method" is available to be used in webpanels, anyway I trust It'll be removed to avoid this kind of problems

Changes on Properties Default Values


Introduction
In GeneXus 9.0 some properties have changed their default values. We list them here to be taken into account in the conversion of Knowledge bases form prior GeneXus versions. To see the detailed changes on properties More information... Date Format, Time Format and Decimal Separator The properties Date Format, Time Format and Decimal Separator aren't anymore model properties, they are properties of the Language object. More Information... Scope: All the knowledge bases. Client side validation The default value of the Client side validation Property was changed. The new default value is Yes. The old one was No. In order to keep the prior behavior in just change the model Property. Scope: Java or .NET Win Applications Providing Webservices The default value of the Exposed Namespace Procedure Property (SOAP Namespace) was changed. The default old value was http://tempuri.org/action, and the new one is the knowledge base name.In order to keep the prior behavior just change the Object Property, in other case all the Clients have to import the WSDL again. Scope: Web service provider applications. More Information... Text Report Output

The default value of the Text report output Property was changed. The new default value is Text. The old one was Report Viewer. In order to keep the prior behavior in the reports of your Java applications just change the model Property. Scope: Java applications Oracle Version The default value of the Oracle version Property was changed. The new default value is 9.x or higher. In order to keep the prior behavior in your Oracle Applications just change the model Property. Default Join Type changed Now the default join type is Outer, in all dbmses. In prior versions the default join in DB2 UDB for Iseries, DB2 UDB and Informix was Inner or Natural join. To keep the prior behavoir just change the Model Property Join Type to "Natural Join".

GeneXus 9.0 Compatibility Section


Updated to GeneXus 9.0 Upgrade #1 or higher version.

Compatibility with Previous Versions


KB Conversion Knowledge Bases created with previous versions need conversion. More information... If you are converting a KB from GeneXus 7.5 or prior, see also previous versions compatibilities issues. Messages SDT If a Structured Data Type named 'Messages' exists in the Knowledge base, it will be renamed to 'Messages1' and an new one will be created. This new one will be a system SDT and cannot be deleted. This new SDT will be used by Business Components (GeneXus 9.0) If this happens, while opening the KB, the user is adviced and a dialog with details is displayed. Message Types Domain If a Domain named 'MessageTypes' exists in the Knowledge base, it will be renamed to 'MessagesTypes' and a new one will be created. This new one cannot be deleted (since it is used by a field defined in the Messages SDT). If this happens, while opening the KB, the user is adviced and a dialog with details is displayed. Consolidating distribution file (xpz) from previous versions Attribute Null behavior has changed in this version: See NullsProperty and Empty as Null Property for details. As it is mentioned in these documents, if you are going to consolidate a xpz distributed from previous version in a new GeneXus 9.0 Knowledge Base, and you want to maintain the previous behavior for Referential Integrity Controls, joins and nulls, you must set the Design Property "Nulls Behavior" and "Empty as Nulls Behavior" as "Version 8.0 or Prior (deprecated)". Then you can change the Compatible value of the attribute property to one of the Yes/No values in a gradual migration process. Changes in properties In this version, the default values of some model properties have changed. For a detailed information click here Also, some properties have been added. For a detailed information click here Nested Navigations New approaches for inference of filters has been defined to improve the navigation between nested For Eachs. More Information in SAC 17271 Nulls vs. Empties

Sometimes when a null value was expected to be saved for an attribute, the empty was saved instead. This version fixed many of these unexpected behaviors. In Handling Nulls with GeneXus document you could see the correct way to work with Null and empties in GeneXus and the list of fixed issues. Web Client Side Validation Web applications automatically will trigger client side code. More Information Relative URLs Web applications generate automatically relative URLs. In previous versions the absolute URLs were generated. This change affects the output of link() function. More Information in SAC 16667 New URL Access Property for web objects A new property for objects defined as Components is defined. The default value may cause specification errors on objets with calls to webcomponents. See the documentation here and specially the Compatibility Section for more details. Programs with no defined variables in parm may not compile If the variable is not defined in the object, the object exposes the variable as N(10.2) even if in specification time another type is assumed (i.e the specification warning spc0046 is triggered in the called object). The caller may also trigger a warning in specification time: spc0023. This may cause compilation errors in Java, .NET and .NET Mobile. More Information in SAC 19581 LEN Function When reading the value of an attribute (ie att) of the database , the LEN(att) returned the size of the attribute. For example att is C(30), the LEN(att) is always 30. Since the 9.0 version, the value returned is corrected to len(rtrim(att)). More Information in SAC 18581 TRIM Function The trim function when it is evaluated in the server, in the 8.0 version, works as a RTRIM. Since 9.0 version, it works as ltrim(rtrim). More Information in SAC 18587 IsValid event triggering Since GeneXus 9.0, Win applications have a different moment in which the IsValid event is triggered, depending on the control. For the Edit controls the IsValid event is triggered when exiting de field (as in GeneXus 8.0 and previous versions). For checkboxs, listboxs, combos and radiobuttons, this event is triggered when a value is selected in the control. More information in SAC 22416 Autocomplete Property In GeneXus 9.0 this property name is changed to EnableHistory?? . To program assignments to this property in web objects, you should change the code. More Information in SAC 20147 Default Join Type changed Up to GeneXus 9.0 the Default Join Type is Outer join in all dbmses. In prior versions the Default Join Type in DB2 UDB for Iseries,DB2 UDB and Informix is Natural join. To keep the prior behaviour just change the Model Property Join Type to "Natural join". For more information in property changhes click here Default Form Generation The default control size for long character controls have changed, in order to improve the default form generation. For a detailed information click here Descendent indexes in Oracle From now on, descendent indexes are defined for Oracle Version 8.1.5 or higer. In existing KB with descendent indexes you need to re-create the indexes to really use them. More Information in SAC 19777

C/SQL Generator support GeneXus 9.0 doesn't include the C/SQL Generator. The last version of the GeneXus C/SQL Generator was version 8.0 U3. Artech's customers will continue receiving support related to this generator but it will not be developed any more. For more information click here. Read more about compatibility in the specific sections of each generator: Java Generator Section .NET Generator Section .NET Mobile ISeries Generator Section

Navigation Comparison Tool


After converting the Knowledge Base to GeneXus 9.0 could be useful to detect early any change in the object behaviors that could lead compatibility problems. This can be achieved by comparing the objects navigation between the previous and GeneXus 9.0 version. This documentexplains the methodology and the tool needed to carry out the comparison.

Changes on Properties in Genexus 9.0


Introduction
Some GeneXus model properties have been changed in GeneXus 9.0. This document describes all these changes.

Description
Here you will find detailed explanations of the changes made to models, objects and control properties in GeneXus 9.0, compared to GeneXus 8.0 last Upgrades (*). It describes all the new properties, name and value changes of existing properties, and replacement of properties with new ones. Changes in property dependencies and restrictions will be mentioned as well. Note that property groups are identified with a plus symbol ( ) and their properties are listed above them in a tree structure.

Model changes Object changes Form changes

(*) Last Upgrades on 24/03/2006 are Development Environment (8), Java Generator (8), .Net Generator (7).

COMPATIBILITY NOTE
In models generated with previous GeneXus versions, you should review the default value properties because their behavior may change in this version. More Information

Comparador de Navegaciones

El listado de navegacin de un objeto GeneXus es lo que permite ver el comportamiento del mismo y es lo que debe analizarse cuando se cambia la versin de GeneXus (o cuando se cambia la lgica del objeto). Es un archivo HTML que se crea a partir de un XML aplicando un XSL (Extensible Stylesheet Language). Para comparar las navegaciones se crearon nuevos xsl para generar un archivo de texto en lugar de un HTML. Este archivo de texto tiene un formato unificado entre las diferentes versiones de GeneXus (caracterstica que los XML originales no cumplen). Esto se decidi considerando que la alternativa de comparar los archivos XML de la especificacin puede ser compleja (principalmente por legibilidad y por diferencias de formato entre versiones) y la alternativa de comparar los HTML no era viable porque las herramientas disponibles actualmente en el mercado no permiten comparar el HTML de la forma que requerimos (s el cdigo pero no como se visualiza). Se dispone tambin de un utilitario que genera -masivamente- para un directorio los archivos de texto aplicando el xsl. De esta forma se tiene como resultado las navegaciones en formato de texto y se puede aplicar cualquier comparador sobre stas.

Alcance
Esta herramienta de comparacin de navegaciones puede aplicarse a las bases de conocimiento realizadas con las versiones 7.5, 8.0, 9.0 y 10 de GeneXus . Para las bases de conocimiento de versiones anteriores, se sugiere realizar una conversin intermedia a la versin 7.5 de GeneXus para poder utilizar esta herramienta. Esta conversin implica nicamente abrir la base de conocimiento con GeneXus 7.5 y especificar forzado todos los objetos (sin navegacin detallada) y sin necesidad de generar.

Comparacin
Para comparar los archivos se deben seguir los siguientes pasos: 1. Realizar un Build All en ambas versiones de GeneXus para especificar todos los objetos del modelo _sin_ marcar la opcin "Detailed Navigation". Cuando se compare con GeneXus 9.0 se sugiere indicar en la propiedad del modelo Optimize Find Navigation del grupo Specification el valor NO. 2. Hacer una copia del directorio NVG del modelo de la versin 1 (ubicado en el directorio gxspcnnn/genmm) con el nombre NVGBASE. Este ser el directorio con las navegaciones esperadas. 3. Crear los directorios NVGBASE_TXT y NVGV2_TXT donde se generarn los archivos de texto correspondientes.

4. Obtener el utilitario de http://www2.gxtechnical.com/portal/hgxppredirect.aspx?15,19,0,,,2058 y descomprimir en un directorio el archivo.zip 5. Ejecutar el utilitario "Transform XML Files" para generar las navegaciones de la versin 1 en formato texto, con las siguientes opciones: Input Folder: <path>NVGBASE Output Folder: <path>NVGBASE_TXT Template for input: <?xml version="1.0" encoding="iso-8859-1" ?>$xmlData$ Select Transformation File: spec75To80.xsl (para comparar GeneXus 7.5 con 8.0) spec75To90.xsl (para comparar GeneXus 7.5 con 9.0) spec80To90.xsl (para comparar GeneXus 8.0 con 9.0) spec90ToX.xsl (para comparar GeneXus 9.0 con 10) 6. Ejecutar el utilitario "Transform XML Files" para generar las navegaciones de la versin 2 en formato texto, con las siguientes opciones: Input Folder: <path>NVG (se obtiene directamente del modelo de la versin 2) Output Folder: <path>NVGV2_TXT Template for input: <?xml version="1.0" encoding="iso-8859-1" ?>$xmlData$ Select Transformation File: spec80to75.xsl (para comparar GeneXus 8.0 con 7.5) spec90to75.xsl (para comparar GeneXus 9.0 con 7.5) spec90to80.xsl (para comparar GeneXus 9.0 con 8.0) specXTo90.xsl (para comparar GeneXus 10 con 9.0) 7. Comparar los directorios NVGBASE_TXT y NVGV2_TXT con alguna herramienta de comparacin de archivos. Es importante (para minimizar las diferencias no esperadas) que la herramienta soporte la definicin de reglas de comparacin. Para el caso del Beyond, se adjunta un archivo con las reglas que es necesario importar antes de realizar la comparacin: (IgnoreRules7580.xml para comparar GeneXus 8.0 con 7.5) (IgnoreRules7590.xml para comparar GeneXus 9.0 con 7.5) (IgnoreRules8090.xml para comparar GeneXus 9.0 con 8.0) (IgnoreRules90X.xml para comparar GeneXus 9.0 con 10) Luego se selecciona la opcin "Compare Contents -> Rules-based comparison". 8. Analizar las diferencias de estos archivos. Aqu se describen las posibles diferencias detectadas.

Metodologa
Se sugiere incorporar la comparacin de navegaciones como una etapa ms en el proyecto la que deber realizarse luego de cambiar la versin de GeneXus o la lgica de la aplicacin. Para esto, se recomienda mantener actualizado el directorio NVGBASE con aquellas navegaciones esperadas en formato XML. Es decir, si la navegacin de la versin 2 es correcta, copiar el archivo xml de la navegacin al directorio NVGBASE. De esta forma, aplicando los puntos 3 al 6, se puede tener siempre las diferencias que faltan procesar o detectar fcilmente las diferencias que aparecen/desaparecen luego de aplicar algn cambio en la base de conocimiento No existe an un mecanismo sencillo para mantener esta sincronizacin entre los directorios de archivos de texto y los xml. Cuando se est analizando la base de conocimientos completa realizar la sincronizacin de cada archivo enlentece el anlisis, por lo que puede realizarse posteriormente luego de haber finalizado. Para esto, se sugiere identificar la lista de los archivos de texto que se corresponden a la versin 1 y a la versin 2 y copiar los archivos xml correspondiente generando un .bat Los directorios de los archivos de texto se pueden generar cada vez que se necesite ver las diferencias. Adems, el directorio con los archivos xml de la navegacin actual se genera cada vez que se quiera hacer la comparacin.

You might also like