miércoles, 20 de junio de 2012

Programar en Genexus 9 usando Master Page

Bueno este tutorial está enfocado a la programación con un master page. 
Un master page en genexus, ayuda al programador facilitando la tarea de programar, todos los objetos web en genexus tienen algo en común: cabezal, menu, pie, área de datos, tema y algún otro propio de la aplicación.
La idea de un master page es juntar todas estas características y aplicarlas de forma automática a cualquier otro webpanel.

Primero que nada creamos un nuevo objeto del tipo webpanel.  Luego en las propiedades del objeto le indicamos que tipo de objeto será:



Donde dice "Type", indicamos que será Master Page y aceptamos.

Luego hay que diagramar el diseño del objeto, en mi caso lo que hice fue bien sencillo, un cabezal, pie, menu y area de datos.





En este caso se agregan objetos del tipo WebComponent en las distintas áreas de la página, y como podemos ver también agregué un objeto del tipo Content Place Holder, que es el objeto que mostrará el área de datos.

Ahora la base de nuestra página ya está pronta, lo único que hace falta es aplicar este Master Page en los WebPanel que queremos aplicarle un diseño.

Creamos un nuevo WebPanel y abrimos sus propiedades, vemos que donde dice "Master Page" ahora nos permite elegir el WebPanel que definimos como Master Page.


Ahora bien, el funcionamiento de esto sería de esta manera, cuando mostramos un webpanel, este aparecerá en el área de datos del Master Page (Content Place Holder), de esta manera, no es necesario que se programe un cabezal, menu o pie en cada uno de los webpanel que deseamos abrir, y todo el código necesario para mostrar un menú, estaría en el Master Page y no en cada WebPanel.

Realmente con esta funcionalidad, se pueden obtener buenos resultados y un look & feel interesante.






lunes, 30 de enero de 2012

Hacer deploy una aplicación GX9+Java+Apache

Estos son los pasos para poder compilar una aplicación Genexus utilizando el generador de Java corriendo sobre Apache Tomcat utilizando una base de datos MySQL.

Una vez que tengamos nuestro modelo pronto para ser compilado, presionamos la tecla F5, la cual nos lleva a la siguiente ventana:


En esta ventana podemos ver una lista con varios items que corresponden a las diferentes opciones de nuestra aplicación.
En el primer item veremos "WinDeveloperMenu", lo seleccionamos y hacemos click en el botón Execute.
Inmediatamente se mostrará esta ventana:


Hacemos click en el menú Utilities y elegimos la opción "Deployment Wizard", nos saldrá otra ventana como esta:


En esta ventana podemos ver dos listas, en la lista de la izquierda, se encuentran todos los objetos de nuestra aplicación que tienen la propiedad "Main Program = True".  En nuestro caso tenemos el objeto Inicio que es un web panel.  Entonces debemos seleccionar nuestro objeto main, y hacer click en la flecha que apunta hacia la derecha para poder realizar el deploy del resto de la aplicación.
Hecho esto seguimos a la siguiente ventana del asistente, nos volverá a salir una pantalla como esta:



En este apso simplemente pasaremos a la siguiente pantalla sin modificar nada.


En esta otra pantalla del asistente debemos activar la opción "Transfer location files", ya que se deben copiar los archivos compilados por genexus a la carpeta de la aplicación.  En modo de transferencia tenemos dos opciones, la primera es la copia por FTP, simplemente hay que escribir la ruta de la carpeta donde vamos a hacer deploy, el nombre del host, el usuario y la contraseña.
La segunda opción es la copia en el equipo local, es decir, hay que indicarle al asistente la ruta donde se guardan las aplicaciones, en este caso en la carpeta "webapps" dentro del directorio de instalación de Apache Tomcat.
Este es el último paso antes de realizar el deploy, hacemos click en Finish, al finalizar el asistente se nos abrirá otra ventana donde se nos pedirá configurar la aplicación para hacer War Deployment.


Los servlets pueden ser ejecutados por motores de servlets (Tomcat, Resin, Jrun, etc.), o por servidores J2EE (WebSphere, BEA Weblogic, etc.).

Configurar en forma adecuada los distintos motores de servlets o servidores J2EE, para ejecutar las aplicaciones web Java, tiene cierta complejidad, se necesita conocer en cual directorio deben ir los servlets, en cual directorio deben ir los archivos adicionales (driver JDBC, classes adicionales, etc.) y dónde colocar el contenido estático. Además, una vez que se hace funcionar todo en un ambiente de prototipo hay que llevarlo a producción, es decir, configurar todo esto en el cliente. Entonces, el generador Java provee el War Deployment, que es un ‘output processor’ del Deployment Wizard, que permite empaquetar en un solo archivo, todo lo necesario, para la instalación y ejecución de una aplicación web Java, en los distintos motores de servlets, o servidores J2EE, de forma sencilla.

El War Deployment genera archivos con extensión .WAR (Web Archive Resource), los cuales son básicamente archivos .JAR a los cuales se les cambia la extensión a .WAR. Estos archivos empaquetan servlets, contenido estático, librerías adicionales y un archivo con formato xml, al cual se le llama descriptor, que contiene cierta información de la aplicación web como por ejemplo el nombre de la aplicación, nombre de los servlets, mapeos, etc.).
Las opciones son:

Location
Aquí se debe seleccionar el Location para el cual se quiera armar el .WAR. En caso de tratarse de un .WAR para una aplicación web se debe seleccionar el Location <Client>; el resto de los locations son para el caso de querer distribuir las clases necesarias para ejecutar el servidor de aplicaciones en un aplicación en 3 capas con protocolo HTTP.
Deploy this Location
Sirve para confirmar que se desea armar un .WAR para la Location actualmente seleccionado.
Descriptor Type
Aquí se debe seleccionar el motor de servlets que se va a utilizar y en función de ello se arma el descriptor correspondiente (se profundiza  más adelante), en mi caso utilizo Generic Servlet v2.2
Web Application Name
Este es el nombre que identifica a la aplicación web. Para algunos motores de servlets va a ser utilizado luego en la URL para invocar los servlets.
Additional Libraries
Aquí se deben agregar todos las librerías adicionales para ejecutar la aplicación; el caso más común es el de los drivers JDBC.
Additional Files
Esta es una estructura de directorios (que por defecto es vacía) en la cual se puede agregar todo el contenido estático que se necesite para ejecutar la aplicación.
Add Directory
Permite agregar un directorio a la estructura de directorios de Additional Files.
Remove Directory
Permite borrar un directorio a la estructura de directorios de Additional Files.
Add Files
Permite agregar un contenido estático a los Additional Files en el directorio seleccionado.
Remove Files
Permite borrar un contenido estático antes agregado en los Additional Files.

En la otra pestaña (Deployment descriptor), se edita el descriptor del .WAR a generarse, en formato XML.



Las opciones son:

Use Custom Deployment Descriptor
Al chequear esta opción se permite modificar el descriptor por defecto
Get Default
Vuelve a obtener el descriptor por defecto
Validate
Valida el XML del descriptor en caso de haberlo modificado.

Eso es todo lo necesario para realizar un deploy de la aplicación que desarrollamos.
Notar que cuando se haga algún cambio en genexus en algún objeto, no es necesario realizar el deploy, ya que cuando se compila, genexus reemplaza todos los archivos que están dentro de la carpeta de servlets de java; solamente cuando se agrega un nuevo objeto en genexus sí es necesario que se realize un nuevo deploy, o en su defecto, que se modifique el archivo web.xml y se agregen las líneas correspondientes.

Espero que este tutorial haya servido de ayuda.


sábado, 28 de enero de 2012

Programar con Genexus 9+MySql+Java+Apache

Todo el que alguna vez programó con genexus sabe que es un herramienta bastante potente que permite desarrollar aplicaciones de manera profesional, reduciendo el tiempo al simplificar muchos procesos que siempre nos pueden dar mas de un dolor de cabeza, y sobre todo si programamos en ambiente web.

Primero que nada necesitamos que genexus esté con todas las actualizaciones y parches disponibles hasta el momento, tanto para el ide como para los generadores, con sus respectivas licencias.

Tambien necesitamos todas estas herramientas:

1 - Servidor mysql. Aquí
2 - Apache tomcat en su última versión. Aquí
3 - Maquina virtual de java (JDK). Aquí
4 - Librerías necesarias para compilar y ejecutar. Aquí


Una vez que tengamos el servidor mysql instalado, el apache tomcat y la maquina virtual, vamos a descomprimir las librerías, dentro veremos que contiene el conector mysql para java, y diversas librerías propias de genexus.

Ahora cuando estemos en genexus y quieramos pasar a prototipo, nos saltara una ventana para configurar el modelo.

Paso 1 - Se configuran las opciones generales:
  1. Nombre del modelo
  2. Lenguaje, en este caso seleccionamos Java
  3. Tipo de interfaz, seleccionamos Web
  4. Motor de base de datos, elegimos MySQL

Paso 2 - Se configura el motor de base de datos
  1. El driver a utilizar, seleccionamos mySQL JDBC Driver
  2. Usar un JDBC personalizado, le damos que no
  3. Escribimos el nombre de la base de datos, previo a este paso crear el schema en mysql
  4. Nombre del servidor, escribimos localhost
  5. Escribir el puerto utilizado en la conexión, en este caso 3306 que es por defecto, si cuando instalamos mysql habilitamos otro puerto, entonces cambiarlo
Paso 3 - Configurar el usuario para la conexión
  1. En este paso podemos utilizar el usuario root que elegimos durante la instalación de la base de datos, o simplemente usar algún otro
  2. Contraseña del usuario

Paso 4 - Configuración de las carpetas de la aplicación
En este paso necesitaremos crear ciertas carpetas, para ello nos iremos a la carpeta de instalación de Apache, dentro veremos una carpeta de nombre webapps que contendra las aplicaciones, luego crearemos una carpeta con el nombre de nuestra aplicación, ej. prueba.
Dentro de la carpeta de nuestra aplicación, debemos crear otras dos carpetas, un de nombre images y otra con el nombre WEB-INF (en mayuscula), y dentro de WEB-INF crearemos otras dos carpetas mas de nombre classes y lib (dentro de esta carpeta descomprimiremos el archivo que descargamos previamente que contenía las librerías necesarias para la ejecución).
Una vez que tengamos todas las carpetas de nuestra aplicación creadas, pasamos al paso 4 en genexus.
 


  1. En servlet directory ubicaremos la carpeta "classes" dentro de WEB-INF
  2. En static content base URL escribiremos /images
  3. Y en static content directory ubicaremos la carpeta "images" dentro de la carpeta raiz de nuestra aplicación
Paso 5 - Configuración de Java
Este paso es muy importante, sobre todo si escribimos mal algún parámetro, que nos podría dar dolores de cabeza mas adelante cuando compilemos.


  1.  Primero elegimos la plataforma para trabajar, seleccionamos Java
  2. Aquí debemos ubicar el compilador de java, es decir el javac.exe, para ello buscamos en la carpeta de instalación de java jdk.
  3. Como 3er paso debemos ubicar el archivo nmake.exe, que se encontraba dentro del archivo de librerías que descargamos.
  4. Ubicamos el interprete java.exe.
  5. En classpath debemos ir ubicando cada una de las librerías que se encuentran en el archivo que descargamos.
    Recordar que cada línea se va a separar por ";" y que al final debe llevar doble ";".
    Debería quedar algo así:

    C:\Librerias\gxclassd.jar;C:\Librerias\gxclassp.jar;C:\Librerias\gxclassr.jar;C:\Librerias\GxUtils.jar;C:\Librerias\iText.jar;C:\Librerias\mysql-connector-java-5.0.4-bin.jar;C:\Librerias\servlet-api.jar;;
  6. Aquí escribimos la ruta URL de nuestra aplicación:
    En este caso http://localhost:8080/prueba/servlet/
Luego de este paso, finalizamos el asistente, y ya tendremos pronta la aplicación para compilarla y ejecutarla.

Espero que les haya servido!