Actualizacion a GeneXus 9

17
Actualizacion a GeneXus 9.0 English version Actualización de Aplicaciones GeneXus a la versión 9.0 Introducción Actualizar su aplicación a GeneXus 9.0 significa convertirla a la versión 9.0 manteniendo las mismas funcionalidades y principalmente manteniendo la plataforma de la aplicación generada. Esta actualización le permitirá utilizar -sin que el desarrollador tenga que intervenir de modo alguno- las funcionalidades implícitas de la versión (por ejemplo las disponibles en el Development Environment como también las optimizaciones generales de la aplicación que pueden repercutir en performance, interfaz, etc.) Acceda a http://www.gxtechnical.com/gx90 para tener una visión general de la versión. Acceda aquí para ver las funcionalidades implícitas de las cuales podrá hacer uso en esta versión sin costos de programación. Documentación Guía de la Conversión a 9.0 Siga esta guía paso a paso para convertir su base de conocimiento a la versión GeneXus 9.0 Tools Comparación de Navegaciones Aplique esta herramienta para comparar los listados de navegaciones de los objetos entre la versión inicial y la versión 9.0. Esto le permitirá ver las diferencias que pueden surgir por las mejoras/cambios introducidos en la versión. Capacitación Curso de Actualización a GeneXus 9.0 Se recomienda realizar este curso de actualización 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 envíe un email a [email protected] Funcionalidades de GeneXus 9.0 English version Funcionalidades de GeneXus 9.0 Introducción Este documento clasifica las funcionalidades de la versión 9.0 de GeneXus según el costo y el beneficio de incluirlas en una base de conocimiento existente. Decimos que una funcionalidad es implícita cuando el desarrollador no tiene que intervenir de modo alguno para utilizarla (o solamente requiera configurar una propiedad general del modelo). Las funcionalidades explícitas son las que requieren la intervención del desarrollador para sacar provecho de las mismas. Además, una funcionalidad nos brindará un beneficio Directo cuando es visible en la solución final provista al cliente. Mientras que el beneficio será Indirecto cuando sea una mejora en el ambiente d desarrollo/productividad. La documentación completa se encuentra disponible en las Release Notes de GeneXus 9.0 Clasificación Funcionalidades Implícitas

Transcript of Actualizacion a GeneXus 9

Page 1: Actualizacion a GeneXus 9

Actualizacion a GeneXus 9.0English version

Actualización de Aplicaciones GeneXus a la versión 9.0

IntroducciónActualizar su aplicación a GeneXus 9.0 significa convertirla a la versión 9.0 manteniendo las mismas funcionalidades y principalmente manteniendo la plataforma de la aplicación generada. 

Esta actualización le permitirá utilizar -sin que el desarrollador tenga que intervenir de modo alguno- las funcionalidades implícitas de la versión (por ejemplo las disponibles en el Development Environment como también las optimizaciones generales de la aplicación que pueden repercutir en performance, interfaz, etc.)Acceda a http://www.gxtechnical.com/gx90 para tener una visión general de la versión.Acceda aquí para ver las funcionalidades implícitas de las cuales podrá hacer uso en esta versión sin costos de programación.

DocumentaciónGuía de la Conversión a 9.0Siga esta guía paso a paso para convertir su base de conocimiento a la versión GeneXus 9.0

ToolsComparación de NavegacionesAplique esta herramienta para comparar los listados de navegaciones de los objetos entre la versión inicial y la versión 9.0. Esto le permitirá ver las diferencias que pueden surgir por las mejoras/cambios introducidos en la versión.

CapacitaciónCurso de Actualización a GeneXus 9.0Se recomienda realizar este curso de actualización que se brinda en modalidad no presencialPara obtener el material acceda a http://www.gxtechnical.com/main/hgxtrain.aspx?2,4,272,4Para inscribirse al curso envíe un email a [email protected]

Funcionalidades de GeneXus 9.0English version

Funcionalidades de GeneXus 9.0 Introducción Este documento clasifica las funcionalidades de la versión 9.0 de GeneXus según el costo y el beneficio de incluirlas en una base de conocimiento existente. Decimos que una funcionalidad es implícita cuando el desarrollador no tiene que intervenir de modo alguno para utilizarla (o solamente requiera configurar una propiedad general del modelo). Las funcionalidades explícitas son las que requieren la intervención del desarrollador para sacar provecho de las mismas. Además, una funcionalidad nos brindará un beneficio Directo cuando es visible en la solución final provista al cliente. Mientras que el beneficio será Indirecto cuando sea una mejora en el ambiente de desarrollo/productividad. La documentación completa se encuentra disponible en las Release Notes de GeneXus 9.0 

Clasificación Funcionalidades Implícitas  

Funcionalidad

Costo Beneficio Comentario

Ajax - Web client side validation Implícito Directo  

Application LocalizationImplítico Directo Requiere generar la aplicación y

traducir los textos

.NET Mobile Generator Implícito Directo Requiere generar la aplicación

MySQL Implícito Directo Requiere generar la aplicación

Theme Editor Version 2.0 Implícito Directo  

Database Reverse Engineering Tool Implícito Indirecto  

Page 2: Actualizacion a GeneXus 9

Export Compare Tool Implícito Indirecto  

Server side constraints Implícito Directo Mejora de performance

Using Filters as Hints Implícito Directo Mejora de performance

Optimized find navigation Implicito Indirecto  

"For each exit" code optimization Implícito Indirecto  

Optimization for mass updates Implícito Directo Mejora de performance

Improved Concurrency handling: Additive Attributes Implícito Directo  

Improvements in Developer Experience Implícito Indirecto  

More tooltips Implícito Indirecto  

Delete multiple interrelated KB objects at once Implícito Indirecto  

Procedures can now call web objects Implícito Indirecto  

Automatic date/date time validations Implícito Directo  

 Linked combo or list boxes Implícito Directo  

Web Transactions with more than 2 levels support

Implícito Directo  

URL access Property Implícito Indirecto  

Rows Property Implícito Indirecto  

New options on rightclick in win Implícito Directo  

New sql syntax for oracle 9.x and higher Implícito Indirecto Requiere generar la aplicación

Help "in any language" Implícito Directo  

New option to import just the Help Implícito Indirecto  

New option to generate again the changed help only Implícito Indirecto  

 Funcionalidades Explícitas Las funcionalidades explícitas se describen en Funcionalidades explícitas de GeneXus 9.0.

Funcionalidades explícitas de GeneXus 9.0English version

Funcionalidades Explícitas 

Funcionalidad

Costo Beneficio Comentario

Master PagesExplícito Indirecto Cambiar

programación

Business Components Explícito Indirecto  More J2EE support than ever Explícito Indirecto  Applications monitoring and management support Explícito Directo  LUW managed by the EJB Container Explícito Indirecto  GXchart 3.0 Explícito Directo  Option to Sign database updates Explícito Indirecto  

Data Area, a new control for web stylesExplícito Indirecto Cambiar

programación

BLOBs in Web forms Explícito Directo  

SDTs can be on the formExplícito Indirecto Cambiar

programación

Web Services: Grouping Locations Explícito Indirecto  Null handling optimizes navigations Explícito Indirecto  Message Queue handling data types Explícito Directo ??

DirectoryDataType Explícito Indirecto  FileDataType Explícito Indirecto  Ime Mode Property Explícito Directo  InputType property Explícito Directo Cambiar

propiedades

Page 3: Actualizacion a GeneXus 9

LDAP DataType Explícito Directo  

Suggest PropertyExplícito Directo Cambiar

propiedades

New Before Connect property Explícito Indirecto  New IIF function Explícito Indirecto  New byte count function Explícito Indirecto  New call syntax Explícito Indirecto  XSLTApply Method Explícito Indirecto  New Methods for attributes, variables and enumerated domains!

Explícito Indirecto 

Changes in Textblock handling in Web forms Explícito Indirecto  More events available in Rules Explícito Indirecto  Update Rule Explícito Indirecto  

Noaccept rule supports multiple attributes as parametersExplícito Indirecto Cambiar

Programación

New Dependencies clause in assignments Explícito Indirecto  Defined by clause support in new Explícito Indirecto  

Page 4: Actualizacion a GeneXus 9

Guía de la Conversión a GeneXus 9.0English version

Guía de Conversión de Bases de Conocimiento a GeneXus 9.0

Se sugiere seguir esta guía paso a paso para convertir sus bases de conocimiento a GeneXus 9.0.Identificamos tres etapas en este proceso.Entendemos que convertir una aplicación es bastante mas que convertir la base de conocimiento.Para tener una visión general sobre la conversión de aplicaciones a GeneXus 9.0 recomendamos leer Conversión de aplicaciones GeneXus - Guía Técnica

Etapa 1 - Preparar la KB para la conversión Como el proceso no es back-compatible se recomienda realizar un respaldo previo. También se sugiere minimizar el tiempo de la conversión siguiendo los pasos que se detallan aquí:

1. Respaldar la base de conocimiento a convertirSe 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 versión 9.0 Debe recordarse que existen diferentes opciones de respaldo (ver más información enhttp://www2.gxtechnical.com/portal/hgxpp001.aspx?15,4,61,O,S,0,,7728) El respaldo únicamente de la Base de Conocimiento sería suficiente para esto.

2. Reconstruir los índicesPara 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 más información.

3. Borrar todos los modelos no utilizadosPara que la conversión sea más rápida 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 conversión es recomendable borrar todos los objetos no utilizados. Estos objetos no utilizados pueden tener errores de programación que eviten su conversión.

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

6. Conversión de la KB Ejecutar GeneXus 9.0 y abrir la base de conocimiento a convertir. Ver el proceso de conversión.Recuerde salvar el archivo de objetos que tienen errores de conversión. Este deberá ser utilizado para solucionar los problemas que se reporten.

Etapa 2 - Ajuste de la KB Se recomienda realizar un análisis 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. CompatibilidadAcceda aquí para ver temas de compatibilidad.

9. Nuevas propiedades Acceda aquí para ver las nuevas propiedades definidas en la KB. Estas nuevas propiedades no deberían implicar cambios en el comportamiento, de todos modos se recomienda revisarlas.

Etapa 3 - Análisis detallado de la KB Se realizará una comparación de las navegaciones de todos los objetos entre la versión inicial y la versión 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 metodología a seguir para comparar las navegaciones. Finalizada esta comparación, se puede garantizar que la base de conocimiento está convertida a la versión 9.0 manteniendo el comportamiento deseado. 

Page 5: Actualizacion a GeneXus 9

11. TestPara finalizar, se debe generar la aplicación en el Generador que corresponda y comenzar así el testeo de la misma. En el caso de realizar una conversión básica, este proceso podrá realizarse inmediatamente.

Descripción : ¿Que es necesario guardar cuando se quiere respaldar una KB?  Abstract La información a respaldar de una Base de Conocimiento puede variar. Se detallan los diferentes casos posible.

 Descripción 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 producción), se debe copiar el contenido del directorio raíz de la base de conocimientos. A partir de la versión 8.0 también es necesario respaldar el directorio KBDATA (y sus subdirectorios) ya que contiene la información que graba el WSDL inspector.

2) Respaldar la Base de Conocimiento, y algún modelo prototipo/producción: Se debe copiar el contenido del directorio raíz 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 raíz de la base de conocimientos y todo el árbol de directorios.

La distribución 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 vacía, se renumeran todos los atributos, tablas y objetos, y no se tendrá prototipo/producción.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 producción, 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 exportación. - Además se debe considerar que al importar, puede ser requerida una reorganización, 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 podría provocar pérdida importante de información 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 Descripción2106 Pasos a seguir para ejecutar un Rebuild

 

 Información de Productos Asociados 

Producto Reportado en Versión

Estimada corr. en versión

Liberado en versión

 Suscribirse al SAC

SAC  # 2106 Tipo : Tip 16/12/1996 IMPRIMIR   

 

Descripción : Pasos a seguir para ejecutar un Rebuild 

 

Abstract Para ejecutar un Rebuild de la Base de conocimiento GeneXus seguir los siguientes pasos:

Page 6: Actualizacion a GeneXus 9

1. Ejecutar una línea de comando (ventana DOS).2. Posicionarse en el directorio raíz de la KB.3. Ejecutar el archivo rbld.bat que se encuentra en la raíz de la instalación de GeneXus. IMPORTANTE: Es importante tomar el rbld.bat de la versión de GX correspondiente a la KB.

Ejemplo: C:\MyKB>C:\GeneXus\rbld.bat Descripción Detallada Modos de ejecución del Rebuild:

1. RBLD Reconstruye todos los IDX siempre. Leyendo la información del cabezal antes. Esto último es la principal diferencia con la siguiente opción.

2. RBLD habiendo borrado los IDX previamente.Reconstruye SOLAMENTE todos los IDX. También reconstruye los .DAT que estén dañados

3. RBLD -y (Rebuild Forzado)Fuerza la reconstrucción de los IDX pero TAMBIEN reconstruye TODOS los DATs (que también pueden estar dañados) estén dañados o no.

NOTA:_ IDX: Indices de acceso a la base de conocimiento._ DAT: estructura interna donde se almacenan los objetos GeneXus.  SAC Relacionados    SAC Descripción

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: 

Page 7: Actualizacion a GeneXus 9

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: 

Page 8: Actualizacion a GeneXus 9

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. 

Page 9: Actualizacion a GeneXus 9

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:

Page 10: Actualizacion a GeneXus 9

haccesoa.cs(490,13): error CS0117: 'GeneXus.Programs.haccesoa' no contiene una definición para 'refresh'/doesn't contains a definition for "refresh"haccesoa.cs(511,16): error CS0117: 'GeneXus.Programs.haccesoa' no contiene una definición 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

IntroductionIn 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

Page 11: Actualizacion a GeneXus 9

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 SectionUpdated 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. 

Page 12: Actualizacion a GeneXus 9

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 triggeringSince 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 

Page 13: Actualizacion a GeneXus 9

.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 NOTEIn 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 navegación de un objeto GeneXus es lo que permite ver el comportamiento del mismo y es lo que debe analizarse cuando se cambia la versión de GeneXus (o cuando se cambia la lógica 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 (característica que los XML originales no cumplen). Esto se decidió considerando que la alternativa de comparar los archivos XML de la especificación 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 código pero no como se visualiza).Se dispone también de un utilitario que genera -masivamente- para un directorio los archivos de texto

Page 14: Actualizacion a GeneXus 9

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 comparación 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 conversión intermedia a la versión 7.5 de GeneXus para poder utilizar esta herramienta. Esta conversión implica únicamente abrir la base de conocimiento con GeneXus 7.5 y especificar forzado todos los objetos (sin navegación detallada) y sin necesidad de generar.

Comparación

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 opción "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 versión 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 generarán 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 versión 1 en formato texto, con las siguientes opciones: 

Input Folder: <path>NVGBASEOutput Folder: <path>NVGBASE_TXTTemplate for input: <?xml version="1.0" encoding="iso-8859-1" ?>$xmlData$Select Transformation File:

 

Page 15: Actualizacion a GeneXus 9

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 versión 2 en formato texto, con las siguientes opciones:

Input Folder: <path>NVG  (se obtiene directamente del modelo de la versión 2)Output Folder: <path>NVGV2_TXTTemplate 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 comparación de archivos. Es importante (para minimizar las diferencias no esperadas) que la herramienta soporte la definición de reglas de comparación. Para el caso del Beyond, se adjunta un archivo con las reglas que es necesario importar antes de realizar la comparación: 

(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 opción "Compare Contents -> Rules-based comparison".

8. Analizar las diferencias de estos archivos. Aquí se describen las posibles diferencias detectadas.

Metodología Se sugiere incorporar la comparación de navegaciones como una etapa más en el proyecto la que deberá realizarse luego de cambiar la versión de GeneXus o la lógica de la aplicación.Para esto, se recomienda mantener actualizado el directorio NVGBASE con aquellas navegaciones esperadas en formato XML. Es decir, si la navegación de la versión 2 es correcta, copiar el archivo xml de la navegación al directorio NVGBASE. De esta forma, aplicando los puntos 3 al 6, se puede tener siempre las diferencias que faltan procesar o detectar fácilmente las diferencias que aparecen/desaparecen luego de aplicar algún cambio en la base de conocimiento No existe aún un mecanismo sencillo para mantener esta sincronización entre los directorios de archivos de texto y los xml. Cuando se está analizando la base de conocimientos completa realizar la sincronización de cada archivo enlentece el análisis, 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 versión 1 y a la versión 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.  Además, el directorio con los archivos xml de la navegación actual se genera cada vez que se quiera hacer la comparación.