Sei sulla pagina 1di 11

Migracin Win a Web

Cada vez ms, el uso masivo de Internet propicia el desarrollo de aplicaciones de mayor versatilidad y complejidad para el ambiente Web. Es por esto que est surgiendo la necesidad de aplicar una reingeniera a las aplicaciones existentes y tambin, en muchos casos, la necesidad de desarrollar nuevas aplicaciones para Internet. Existen varias diferencias entre los ambientes GUI (aplicaciones con Interfaz de Usuario Grfica) y Web, las que debern considerarse en la conversion de la KB. La migracin no debera verse como una conversin objeto a objeto sino que normalmente es una modernizacin de la aplicacin usando otras herramientas tales como Patterns, GXportal, GXflow, Reporting, etc..

295

Comparacin GUI Web


Introduccin

AplicacionesGUI:
CompuestasporunoovariosprogramasGeneXus,utilizandoobjetosde tipo:Transaccin,WorkPanel,ProcedimientosyReportes

Aplicaciones(Full)Web
Lasquelainterfazdeusuarioesnicamenterealizadautilizandolos siguientesobjetos:WebPanels,TransaccionesWeb, Procedimientos(call protocol:HTTP),ejecutadosdesdeunbrowser.

Aplicaciones con Interfaz de Usuario Grfica Las aplicaciones con Interfaz de Usuario Grafica (GUI) estn compuestas por uno o varios programas GeneXus que utilizan objetos de tipo: Transaccin, Work Panel, Procedimientos y Reportes. Aplicaciones Web Se entender por aplicaciones Full Web a aquellas aplicaciones en las que la interfaz del usuario es nicamente realizada utilizando el lenguaje HTML y son accedidas desde un browser. En GeneXus estas aplicaciones se implementan con objetos Web como ser: Web Panels,Transacciones Web o Procedimientos (call protocol: HTTP).

296

Objetivos
Comprender:
FuncionamientodelainterfazWeb ManejodeIntegridadTransaccionalenAplicacionesWeb

ParacrearomigraraplicacionesWeb,tenerencuenta:
Requerimientosyprocesodeinstalacindelaaplicacinfinal,enunoo msservidores. Diseogrfico(sepuedetercerizaraespecialistas) ManejodelasLUW(UnidadesdeTrabajoLgicaenTransacciones) Otrascaractersticasqueveremosacontinuacin

297

Diferencias entre ambientes y como manejarlas

Conversin GUI Web

WorkPanelsaWebPanels: TenerencuentaeldisparodeEventos Filtros ComandoRefresh

Cuando se ejecuta un Web Panel por primera vez, se ejecuta un GET de la pgina ( ver disparo de eventos en GET). Cuando se ejecuta algn evento de usuario, se vuelven a ejecutar todos los eventos (Start, Refresh, Load), siguiendo un orden establecido (ver disparo de eventos en POST). Si se vuelve desde un Web Panel a otro con return (o se vuelve invocndolo mediante un CALL o link), se ejecutan los eventos del Web Panel llamado siguiendo el orden para el disparo de eventos en el GET explicado anteriormente. Esto tiene como consecuencia lo siguiente: 1.- Filtros ingresados en un Web Panel A se pierdan cuando se llama a otro Web Panel (B) y se vuelve hacia A nuevamente, por lo cual, se deben guardar los filtros en la sesin como se explicara ms adelante. 2.- Se deriva tambin de la diferencia en el comportamiento del disparo de eventos, que no es necesario forzar un Refresh del Web Panel A si un cambio en B (llamado por A) produce un cambio en A, puesto que en la ejecucin de A se re-disparan los eventos, incluido el evento Refresh. 3.- Si se tiene un Web Panel en donde mediante un evento de usuario se realiza un cambio en una tabla de la base de datos (llamando a un procedimiento por ejemplo) y dicho Web Panel tiene un grid que navega por la misma tabla, no es necesario hacer grid.Refresh o grid.load, puesto que la carga del grid se realiza a causa de la ejecucin de los eventos del POST (Start, Refresh, Load).

298

Diferencias entre ambientes y como manejarlas

Conversin GUI Web

WorkPanelTrabajarcon.Posibilidaddegenerarlo automticamenteaplicandoelPatternWorkWith. Procesamientodevariasfilasengrid ForEachSelectedLine PersistenciadeFiltros.

Work Panel Trabajar Con Es muy comn el uso de Web Panels del estilo Trabajar con donde se despliega un grid con registros y una cantidad de opciones aplicables a cada una de las lneas del mismo. Manejo de opciones La primera opcin es implementarlo con el Pattern WorkWith. Tambin existen otras alternativas para implementar el Web Panel: 1. 2. 3. 4. Agregar en el grid una variable de tipo Combobox y programar las diferentes acciones en el evento Click de la misma. Definir una imagen o un text block en el grid por cada una de las opciones y programar la accin en el evento click. Si se utiliza un grid Free Style, puede utilizarse en lugar de una imagen con el evento click, un botn para cada una de las opciones. Configurar la propiedad AllowSelection del grid.

Para profundizar en el tema de grids, ver Captulo Grids. Filtros Si un Web Panel Trabajar con tiene variables que se aplican como filtro a los registros desplegados en el grid, al seleccionar un registro y llamar a otro objeto (por ej. Transaccin Web) que tiene un Return, se vuelve al Web Panel Trabajar con pero se pierden los valores ingresados en los filtros. Para poder mantener el comportamiento de los Work Panels Trabajar con se deberan utilizar cookies o websessions que almacenen los filtros ingresados.

299

Procesamiento De Varias Filas En Grid - For Each Selected Line En Web Panels, no existe la forma de seleccionar con el mouse varias lneas del grid. Para implementar la seleccin mltiple, se debe definir una variable en el grid y asignarle un valor a cada una de las lneas que se quieren procesar. Luego, se debe usar el comando For each line para procesar cada una de las lneas y filtrar por las que estn seleccionadas (&valor = X). Debe considerarse que se puede utilizar nicamente para invocar a objetos sin interfaz. Si se invoca a otro Web Panel, solamente se ejecuta para el ltimo registro del grid. Para la seleccin de una lnea se cuenta con la propiedad AllowSelection. Si se realiza una invocacin a objetos con interfaz desde un loop, solo se invocar una vez a dicho objeto, y la llamada corresponder a la ltima recorrida del loop. Por ejemplo, se desea llamar desde un evento de usuario que recorre un grid a una Transaccin para actualizar los elementos del grid: Event Update For each line in CustomerGrid TCustomer.call(CustomerId,UPD) //Customer es la Transaccin de clientes EndFor EndEvent Dicho cdigo no es correcto, porque el comportamiento no es el mismo que para Work Panels, y deber recodificarse con algunas de las opciones vistas anteriormente para implementar un Work With.

Diferencias entre ambientes y como manejarlas

Conversin GUI Web

Transacciones: Disparodereglasyfrmulas.DisparodeEventos. IntegridadTransaccional:ManejodeLUW

Hay diferencias en el orden del disparo de eventos (para profundizar en el tema ver Captulo Transacciones). Las reglas de las Transacciones comprenden reglas de negocio (el saldo del cliente no puede ser negativo), y reglas de "flujo" (llamadas a objetos con interfaz). Las reglas de negocio en general no requieren de conversin, mientras que el resto de las reglas (las que implican llamadas a objetos con interfaz) deben convertirse. Integridad Transaccional: Manejo de LUW Una opcin es usar Business Components en el form e ir guardando en una session la informacin hasta que llegue el momento de hacer el commit en el cual se debe levantar la informacin de la session. La otra opcin es usar tablas temporales o actualizaciones lgicas y no fsicas. (Ver Captulo Transacciones para profundizar en el tema).

301

Diferencias entre ambientes y como manejarlas

Conversin GUI Web

UsodeTabDialogsymens. MasterPages,WebComponentsyEstilos

Uso De Tab Dialogs En las aplicaciones GUI, se pueden definir tab dialogs para organizar los datos del form en varias secciones. Igualmente, en aplicaciones GUI se puede usar objetos men y menbar. En las aplicaciones Web, podemos usar "User Controls" que permiten simular estos tabs, mens y cualquier tipo de control. Master Pages, Webcomponents y Estilos Los styles en Win se usan con dos propsitos: a. Definir un estndar para el form, manteniendo dinamismo (bsicamente del Style Area) b. Inicializar los objetos con algunas partes predefinidas (variables, cdigo de eventos, propiedades, etc.). En Web, los styles solo sirven para inicializar los objetos, pero no se mantiene el vnculo luego, por lo cual no hay dinamismo con los cambios realizados en el Style. Con el mismo propsito de los estilos en Win (mantener el dinamismo, primordialmente en cuanto a la lgica de los objetos); en Web se usan Web Components para centralizar en un solo objeto la implementacin de una cierta funcionalidad, y reducir el impacto del mantenimiento y de los cambios. Asimismo, se usan las Master Pages para optimizar la reutilizacin de cdigo y agilizar el mantenimiento. Es decir, en Web no se tendrn N objetos basados en un estilo, sino que se tiende a tener un solo objeto que implementa cierta funcionalidad y es reutilizado en el resto de los objetos. En cuanto al diseo esttico de la aplicacin puede tercerizarse a especialistas y se recomienda por motivos de performance de la aplicacin final, y facilidad de mantenimiento de la misma el uso de la tecnologa CSS a travs de GeneXus Themes. El uso de los Themes asegura que el diseo esttico de la aplicacin est centralizado en un solo objeto.

302

Diferencias entre ambientes y como manejarlas

Conversin GUI Web

Persistenciadeestado InvocacinaObjetosGeneXusyparmetros

Persistencia de estado: En los Web Panels no hay nocin de estado, en el sentido en que luego de ejecutado un evento que asigna valores a variables, debe persistir el valor de esas variables para poder recuperarlas en otro evento. Una de las maneras de hacerlo es teniendo esas variables (hidden) en el form. Si por ejemplo se tiene un evento que usa una variable cargada por otro evento disparado anteriormente (en el mismo Web Panel), la variable tiene que estar en el form y ubicada despus del control que la carga. El funcionamiento de esto est basado en el orden de disparo de los eventos. (Ver Captulo Web Panels, orden de disparo de los eventos). Otra manera de hacerlo es guardando la informacin en variables de sesin. Invocacin a objetos: 1. no se puede llamar a objetos con interfaz dentro de un loop. 2. cuando se vuelve de un objeto invocado se vuelve a ejecutar los eventos (GET) del llamador. 3. no se puede pasar por parmetros a objetos con interfaz (Web Panels, Web Transactions, Procedimientos HTTP): colecciones, SDTs, o arrays. Se debe usar sesiones en caso de querer almacenar dicha informacin. Por ejemplo, una tcnica usada es que luego de almacenar la informacin en el SDT o collection se usa el mtodo TOXML para pasar dicha informacin a un string y poder almacenarla en la sesin, y luego FROMXML para hacer el proceso inverso. En Web Panels no hay parmetros de retorno.

303

Diferencias entre ambientes y como manejarlas

Conversin GUI Web

InteraccinconelusuarioenWebObjects:
Losprogramasnopuedenquedaresperandoporunarespuesta:

Tenerencuentaqueelprogramaest ejecutandoenelservidor! Cmoseharaentonces? UnWebPanelquesolicitelainformacin. MedianteJavascripts:

304

Diferencias entre ambientes y como manejarlas

Conversin GUI Web

Reportes ImpresinlocalvsImpresinenelservidor Impresingrfica:reportesPDF

Las posibilidades de impresin dentro de lo que es modo grfico, son en general, formato PDF o reportes grficos usando la herramienta ReportViewer. El uso de cualquiera de estas variantes depende de la plataforma y la interfaz usada. En interfaz GUI Windows, es vlido el uso del ReportViewer. En interfaz GUI linux no lo es, debido a que la implementacin del Report.Viewer est basada en dlls para su funcionamiento. En interfaz Web tampoco es vlido el uso de dicha herramienta, porque no es posible ejecutar el ReportViewer dentro del browser (es una aplicacin GUI). En plataforma Web, los reportes mayoritariamente usados, son los reportes grficos en formato PDF, que se despliegan en el browser del cliente, dentro del cual ejecuta el Acrobat Reader. Este tipo de reportes se puede imprimir directamente en la impresora del cliente, sin necesidad de interaccin alguna por parte del usuario final. Por ms informacin, referirse a: http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?4042

305

Potrebbero piacerti anche