El objetivo de esta extensión es agilizar el cambio a llamadas a
objetos que se llaman desde muchos sitios en una kbase.
Por ejemplo, en una aplicación de logística, el prompt
de selección de un artículo puede llamarse desde centenares de objetos. Si se necesita
añadir un cierto parámetro, por ejemplo la familia de artículos a proponer en el prompt,
exige ir a todos los llamadores para añadir dicho parámetro.
Esta extensión permite, de forma automática, añadir o quitar un parámetro en todas las llamadas a un objeto, o reemplazar la llamada a un objeto por otro. En caso de añadir un parámetro, el valor a pasar en todas las llamadas puede ser una variable o una constante especificada por el usuario.
Los parámetros sólo se pueden agregar o quitar uno a uno. En caso de necesitar añadir más de uno, hay que repetir el proceso por cada parámetro. En caso de querer quitar un parámetro, hay que ejectar este proceso antes de quitarlo de la regla parm del objeto llamado. Si se quiere añadir uno, hay que ejecutar el proceso despues de haberlo añadido a la regla parm.
La extensión permite visualizar los cambios que se harán sin guardar los cambios, para revisar que no habrá problemas.
La extensión se encuentra en el menú Lsi.Extensions > Tool Windows > Edit object calls. El formato de la ventana es el siguiente:
Object | Aquí se indica el nombre del objeto del que editar las llamadas. |
Operation |
Aquí se indica la operación a ejecutar en los llamadores al objeto:
|
Parameter to add / remove | Aquí se selecciona el parámetro que hay que añadir o quitar de las llamadas, si así se indico. También muestra información sobre el tipo del parámetro seleccionado. |
New parameter value (variable name / literal) | En caso de haber indicado que se quiere añadir un parametro, aquí se indica el valor del parametro a pasar. Si era un valor literal, indica el valor constante a pasar. Si era una variable, indica el nombre de la variable a pasar |
New object | Si se indico que se quieren reemplazar las llamadas a un objeto por otro, aquí se indica cual es el nuevo objeto que se quiere llamar en lugar del antiguo. |
Callers with name that starts with | Si se indica un texto en este campo, solo se modificarán los objetos cuyo nombre empieze por este texto. Si se deja en blanco, se modificarán todos los objetos llamadores. |
View objects: | Permite filtrar en la lista "Objects with calls" los objetos según si ha habido problemas o no con la edición de las llamadas. Puede filtrarse para ver los objetos sin problemas, con avisos o con errores. |
Validate objects when testing | Se aplica al revisar los cambios en las llamadas. Indica si Genexus tiene que hacer una validación del objeto para ver si tras el cambio en las llamadas, los objetos llamadores quedarán bien. Si se activa esta opción, la validación del objeto tardará mucho más. Esta opción no se aplica al hacer realmente los cambios, ya que en ese caso Genexus siempre valida el objeto. |
Test changes | Hace una revisión de los cambios que se harán en los llamadores, sin hacer realmente ningún cambio. Los cambios que se harían se muestran en la lista "Objects with calls". |
Do changes | Hace los cambios en las llamadas. Los cambios hechos se muestran en la lista "Objects with calls". |
Objects with calls | Esta lista se llena cuando se pulsa el botón "Test changes" o "Do changes". Muestra una lista de los objetos que tienen llamadas al objeto, e indica si hay algún problema con los cambios en las llamadas del objeto. Al selecciónar algún objeto, en el campo "Cambios en el objeto" se muestran los cambios que se han hecho o harán en las llamadas del objeto. |
Object changes | Muestra información sobre los cambios hechos en el código del objeto seleccionado. En caso que haya habido errores o avisos, aquí se muestra el detalle de estos. |
///*** Reglas del objeto PObjeto. ***/// parm( in:&ParametroEntrada, out:&ParametroSalida1 );se cambia a:
parm( in:&ParametroEntrada, out:&ParametroSalida1 , out:&ParametroSalida2);Una llamada como la siguiente no se modificará, dando un error en los resultados:
&Variable = PObjeto( &OtraVariable )
// Llamada 1 Objeto1.call() // Llamada 2 Modulo1.Objeto1.call()La extensión intentará cambiar las llamadas para que queden así:
// Llamada 1 Objeto2.call() // Llamada 2 Modulo1.Objeto2.call()La segunda llamada es erronea, y GeneXus dará un error al intentar guardar los cambios.