diseño de componente para el framework zathura code que permita

Anuncio
DISEÑO DE COMPONENTE PARA EL FRAMEWORK ZATHURA CODE QUE
PERMITA LA MIGRACIÓN DE CÓDIGO FUENTE DE FORMULARIOS CON
TECNOLOGÍA ORACLE FORMS 6I A COMPONENTES CON TECNOLOGÍA
JAVA ENTERPRISE EDITION
ALEX YAMIL MADERA VILLADA
JUAN CARLOS TORRES BALAGUERA
UNIVERSIDAD DE SAN BUENAVENTURA
FACULTAD DE INGENIERÍA
PROGRAMA DE INGENIERÍA DE SISTEMAS
SANTIAGO DE CALI, 2012
DISEÑO DE COMPONENTE PARA EL FRAMEWORK ZATHURA CODE QUE
PERMITA LA MIGRACIÓN DE CÓDIGO FUENTE DE FORMULARIOS CON
TECNOLOGÍA ORACLE FORMS 6I A COMPONENTES CON TECNOLOGÍA
JAVA ENTERPRISE EDITION
ALEX YAMIL MADERA VILLADA
JUAN CARLOS TORRES BALAGUERA
Informe de Investigación presentado
Para optar por el Titulo de
Ingeniero de Sistemas
Director
JOHAN BEJARANO
Ingeniero de Sistemas
UNIVERSIDAD DE SAN BUENAVENTURA
FACULTAD DE INGENIERÍA
PROGRAMA DE INGENIERÍA DE SISTEMAS
SANTIAGO DE CALI, 2012
AGRADECIMIENTOS
Primero que todo queremos agradecer a Dios por las oportunidades que nos ha
dado a lo largo de nuestras vidas. A nuestra familia, padres, hermanos los cuales
nos han brindado todo el apoyo necesario para realizar este proyecto de grado. A
nuestro director Johan Bejarano que dedicó gran parte de su tiempo en
asesorarnos y a la Universidad de San Buenaventura por la educación que nos
impartió.
TABLA DE CONTENIDO
1.
INTRODUCCIÓN. ..................................................................................................................... 6
2.
DEFINICIÓN DEL PROBLEMA. ............................................................................................ 7
3.
OBJETIVO GENERAL. ............................................................................................................ 8
OBJETIVOS ESPECÍFICOS. ......................................................................................... 8
3.1.
4.
ALCANCE DEL PROYECTO. ................................................................................................ 9
5.
MARCO TEÓRICO................................................................................................................. 10
5.1.
¿QUÉ ES UN LENGUAJE DE PROGRAMACIÓN? ..................................................... 10
5.2.
LENGUAJE JAVA........................................................................................................... 11
5.3.
LENGUAJE PL/SQL....................................................................................................... 12
5.4.
FORMS 6i ........................................................................................................................ 13
5.4.1.
FORM BUILDER (diseñador). .................................................................................. 14
5.4.2.
FORM COMPILER (generador) ............................................................................... 14
5.4.3.
FORM RUNTIME (ejecutor) ...................................................................................... 15
5.5.
BLOQUE DE DATOS..................................................................................................... 15
5.6.
AST (Abstract Syntax Tree – Árbol de sintaxis abstracta) ....................................... 15
5.7.
MIGRADOR DE CÓDIGO FUENTE. ........................................................................... 16
6.
ESTADO DEL ARTE. ......................................................................................................... 17
MIGRADORES DE CÓDIGO FUENTE. ..................................................................... 17
6.1.
6.1.1.
PLSQL WIZARD. ........................................................................................................ 17
6.1.2.
SWISSQL-ORACLE TO JAVA. ................................................................................ 18
6.1.3.
ORINDABUILD™. ...................................................................................................... 19
6.1.4.
In2j. ............................................................................................................................... 20
6.2.
DESCRIPCIÓN DEL PROCESO DE MIGRACIÓN. ................................................. 22
6.3. DISEÑO ARQUITECTONICO DE LAS APLICACIONES GENERADAS CON
POR ZATHURA JAVA EE FORMS. ........................................................................................ 30
6.4.
COMPONENTES DE LA ARQUITECTURA DEL MIGRADOR .............................. 31
7.
RESULTADOS.................................................................................................................... 36
8.
CONCLUSIONES. .............................................................................................................. 38
10.
BIBLIOGRAFÍA. .............................................................................................................. 40
TABLA DE ILUSTRACIONES.
Ilustración 1. Ventana de migración PL/SQL WIZARD. ........................................................... 17
Ilustración 2. Ventana de migración SWISSQL-ORACLE TO JAVA. .................................... 18
Ilustración 3. Ventana de migración ORINDABUILD™ ............................................................ 19
Ilustración 4. Ventana de migración INJ2 ................................................................................... 20
Ilustración 5. Ventana de migración IN2J. .................................................................................. 21
Ilustración 6. Forma en Oracle Form 6i. ..................................................................................... 24
Ilustración 7. Pantalla de la herramienta de Oracle Forms 6i ................................................. 25
Ilustración 8. Composición de la Forma en Oracle Forms 6i. ................................................ 26
Ilustración 9 Código Java donde se ubica la forma y se llama al generador....................... 27
Ilustración 10. Vista del método generate. ................................................................................. 27
Ilustración 11 Template para una clase en Java. ...................................................................... 28
Ilustración 12. Clase de Zathura que genera código a partir del modelo de datos.............. 29
Ilustración 13. Arquitectura de las aplicaciones generadas por Zathura Code. ................... 31
Ilustración 14. Diagrama de clases del migrador de código de bloque de datos de formas a
JAVA................................................................................................................................................. 33
Ilustración 15. Proyecto Zathura ................................................................................................. 36
Ilustración 16. Zathura Oracle Forms to Java Generator ......................................................... 37
1. INTRODUCCIÓN.
Debido al constante avance de la tecnología, las compañías deben ir
modernizando sus sistemas (software y hardware), es por eso que se hace
necesario realizar integraciones entre aplicaciones y así tener un sistema central y
robusto entre las herramientas que apoyan los procesos internos y externos de
negocio los cuales pueden ser fundamentales para que estas sean competitivas.
Este proyecto se basa en la idea del ingeniero Johan Bejarano, la cual nace a
partir de observar la necesidad de algunas empresas en realizar migraciones de
algunas aplicaciones desarrolladas en Oracle Forms 6i a una tecnología con
mayor capacidad de integración con otros sistemas, generando así la posibilidad
de agregar un nuevo modulo al proyecto zathura-code, desarrollado por la
Universidad de San Buenaventura, lo cual permitirá tener a las aplicaciones
generadas a partir del proceso de migración una arquitectura definida.
Existen diversas herramientas para la migración de código fuente Oracle Forms 6i
a Java, de las cuales
se escogieron las herramientas ya investigadas en el
proyecto de grado Diseño de una arquitectura para la migración de código fuente
entre lenguajes de programación,
Buenaventura Cali en el año 2004.
realizado en la Universidad de San
2. DEFINICIÓN DEL PROBLEMA.
En los últimos años el surgimiento de nuevos lenguajes de programación
orientados a objetos, como por ejemplo JAVA o .Net, que por su versatilidad,
eficiencia y portabilidad, han hecho que las empresas migren sus aplicaciones a
estos entornos, este proceso de migración de código fuente, en otras palabras es,
la traducción de código fuente de un lenguaje de programación a otro, es por eso
que uno de los retos que afrontan los desarrolladores al realizar un migrador es el
de mantener al máximo su funcionalidad inicial y tener en cuenta la equivalencia
entre los lenguajes de programación.
La problemática fue detectada por el Ingeniero Johan Bejarano que se ha
enfrentado en algunas empresas del sector las cuales tiene la necesidad de migrar
aplicaciones que se encuentran implementadas en Oracle Forms 6i a otro lenguaje
de programación, con el fin de agregar otras funcionalidades y permitir la
integración con otros sistemas y teniendo el inconveniente que en el mercado
existen algunas herramientas que podrían tener este fin pero surgen algunos
problemas como se describen a continuación: generación de código basura; No
se define una arquitectura y no se utilizan patrones en e código generado; además
para estas herramientas es necesario pagar su uso (licenciamiento). Entonces se
ha planteado implementar un sistema que permita la transformación de formularios
de Oracle Forms 6i de base de datos a la tecnología J2EE con el fin de suplir esta
necesidad.
3. OBJETIVO GENERAL.
Diseñar el prototipo de una herramienta que permita la migración de código fuente
ubicado en los bloques de datos de formas Oracle Forms, a código fuente con
tecnología Java Enterprise Edition, enmarcada dentro del proyecto Zathura
desarrollado por el LIDIS – Universidad de San Buenaventura Cali.
3.1.
OBJETIVOS ESPECÍFICOS.

Diseñar un componente de software que se encargue de realizar la
transformación de bloques de datos de formas desarrolladas en Oracle
Forms 6i a la tecnología Java Enterprise Edition.

Implementar un componente que permita la transformación de una
formas de Oracle Forms 6i a una Java Server Page.

Diseñar un componente que permita realizar CRUD hacia la base de
datos implementados en un formulario de Oracle Forms 6i en la
tecnología Java Enterprise Edition
4. ALCANCE DEL PROYECTO.
En el alcance del proyecto se han definido los puntos que se considera son
relevantes y deben estar implementados y algunos que aunque son importantes
no fueron considerados como parte del alcance del proyecto debido a que se
pueden considerar muy complejos y fueron planteados como proyectos futuros a
implementar, los siguientes son los ítems que contemplara el proyecto:

Generará los CRUDs o gestión de mantenimiento de las tablas de una Base
de datos.

Generará artefactos de software cuyo diseño detallado aplica un conjunto
de patrones.

Generará una arquitectura de tres capas basada en la tecnología Web que
se maneja actualmente. (tomados del doc de zathura).

Se considera como funcionalidad principal la transformación de formularios
desarrollados en Oracle forms 6i a la tecnología Java Enterprise Edition.
De acuerdo a los objetivos definidos y al tiempo definido para la implementación
de la herramienta, los siguientes ítems hacen referencia a las cosas que no
contemplará el proyecto:

No se considera la implementación de un plugin para el IDE eclipse.

No esta considerado la transformación
de formularios que no estén
relacionados con una base de datos Oracle, ya que estos realizan una
consulta estructurada e implementan lógica en PL/SQL, lo que hace parte
de proyectos definidos como futuros.

No hace parte del proyecto la migración de lógica de los formularios o de
funciones que se encuentren implementadas dentro de este, debido a que
esta funcionalidad se considera como un futuro proyecto a implementar.
5. MARCO TEÓRICO.
5.1.
¿QUÉ ES UN LENGUAJE DE PROGRAMACIÓN?
Un lenguaje de programación es un sistema notacional para describir
computaciones en una forma legible tanto para la maquina como para el ser
humano. Estos se componen de un conjunto de reglas sintácticas y semánticas
que permiten expresar instrucciones que luego serán interpretadas, los lenguajes
de programación se clasifican de forma amplia en tres niveles: lenguaje maquina,
lenguaje ensamblador y lenguaje de alto nivel1.
Un lenguaje maquina es el único que lenguaje de programación que entiende la
CPU, y cada tipo de CPU tiene su propio lenguaje maquina las instrucciones de
lenguaje maquina están codificadas en binario y son de muy bajo nivel.
En un nivel por encima del lenguaje maquina se encuentra el lenguaje
ensamblador, que permite la programación simbólica de más alto nivel. Este
lenguaje permite al programador escribir programas utilizando códigos simbólicos
de operación y no en secuencia de bits como el lenguaje anterior. Puesto que los
programas escritos en lenguaje ensamblador no son reconocidos por la CPU, es
necesario usar un ensamblador para traducir los programas escritos en lenguaje
ensamblador a sus equivalentes en lenguaje maquina.
Los lenguajes de alto nivel se desarrollan para permitir a los programadores
escribir los programas más rápido que cuando usan ensamblador. Puesto que los
programas escritos en lenguajes de alto nivel no son reconocidos por la CPU, es
necesario usar un compilador para traducirlos en sus equivalentes de lenguaje
ensamblador.
1
LOUDEN, Kenneth C. Lenguajes de Programación principios y práctica. Editorial THOMSON. Segunda
edición.2004. 635p.
5.2.
LENGUAJE JAVA.
Es un lenguaje de programación orientado a objetos, desarrollado por James
Gosling y su equipo de Sun Microsystems California.
Java fue diseñado como un lenguaje orientado a objetos desde el principio. Los
objetos agrupan en estructuras encapsuladas tanto sus datos como los métodos
(o funciones) que manipulan esos datos. Java proporciona una colección de
clases para su uso en aplicaciones de red, que permiten abrir sockets y establecer
y aceptar conexiones con servidores o clientes remotos, facilitando así la creación
de aplicaciones distribuidas. Java es compilado, en la medida en que su código
fuente se transforma en una especie de código máquina, los bytecodes,
semejantes a las instrucciones de ensamblador.2
Por otra parte, es interpretado, ya que los bytecodes se pueden ejecutar
directamente sobre cualquier máquina a la cual se hayan portado el intérprete y el
sistema de ejecución en tiempo real (run-time). Java está diseñado para soportar
aplicaciones que serán ejecutadas en los más variados entornos de red, desde
Unix a Windows Nt, pasando por Mac y estaciones de trabajo, sobre arquitecturas
distintas y con sistemas operativos diversos. Para acomodar requisitos de
ejecución tan variopintos, el compilador de Java genera bytecodes: un formato
intermedio indiferente a la arquitectura diseñada para transportar el código
eficientemente a múltiples plataformas hardware y software. La indiferencia a la
arquitectura representa sólo una parte de su portabilidad. Además, Java especifica
los tamaños de sus tipos de datos básicos y el comportamiento de sus operadores
aritméticos, de manera que los programas son iguales en todas las plataformas.
Estas dos últimas características se conocen como la Máquina Virtual Java (JVM).
Java puede ser usado para crear dos tipos de programas: aplicaciones
independientes y applets.
2
DEITEL, Harvey M y DEITEL, Paul J. Cómo programar en Java. Editorial Pearson Prentice Hall. Quinta
edición. México 2004. 1268p
Las aplicaciones independientes se comportan como cualquier otro programa
escrito en cualquier lenguaje, como por ejemplo el navegador de Web HotJava,
escrito íntegramente en Java. Por su parte, las applets son pequeños programas
que aparecen embebidos en las páginas Web, como aparecen los gráficos o el
texto, pero con la capacidad de ejecutar acciones muy complejas, como animar
imágenes, establecer conexiones de red, presentar menús y cuadros de diálogo
para luego emprender acciones, etc.
5.3. LENGUAJE PL/SQL.
PL/SQL (Procedural Language/SQL) es un lenguaje de programación para
acceder a base de datos Oracle desde varios entornos. Está integrado con el
servidor de datos por lo que el código es procesado rápida y eficientemente.3
PL/SQL es un lenguaje procedimental que está incorporado en Oracle para
solventar las grandes limitaciones que se tienen con los editores SQL 4, este
soporta todos los comandos de consulta y manipulación de datos, aportando al
lenguaje SQL estructuras de control y otros elementos propios de los lenguajes
procedimentales de tercera generación como por ejemplo:

Variables y tipos.

Estructuras de control.

Procedimientos y funciones.

Tipos de objetos y métodos.
Por esto se creó PL/SQL, puesto que combina la flexibilidad de SQL con la
potencia y configurabilidad de los 3 GL.
La mayor parte de las aplicaciones de BBDD utilizan un modelo cliente-servidor.
En la máquina cliente está el programa PL/SQL y envía peticiones de información
3
GABILLAUD, Jérome. Colección recursos informáticos Oracle 9i SQL, PL/SQL, SQL*Plus. Ediciones ENI. Mayo
2003. 435p.
4
PL/SQL es un lenguaje de cuarta generación, es decir el lenguaje describe lo que debe hacerse pero no
cómo hacerse. Los 4GL (lenguajes de cuarta generación) son bastante simples y tienen menos órdenes que
los de 3GL (como C ó Pascal).Sin embargo tienen limitaciones en cuanto al control de la secuencia de
ejecución de instrucciones, el uso de variables, la modularidad, gestión de errores
a un servidor de base de datos. Las peticiones se llevan a cabo mediante SQL. Se
enviaría una petición por la red por cada orden SQL. Para evitar esta congestión
de tráfico se empaquetan varias órdenes SQL en un bloque PL/SQL.
Con esto aumenta la velocidad de la aplicación. PL/SQL no es un lenguaje creado
para interactuar con el usuario, sino para trabajar con la base de datos, por lo que
no dispone de sentencias para capturar datos por el teclado o visualizar en
pantalla.
La unidad básica en PL/SQL es el bloque. Todos los programas PL/SQL están
compuestos por bloques que pueden estar situados de manera secuencial (uno
tras otro) o anidados. Cada bloque realiza una unidad lógica de trabajo en el
programa, estando así separadas unas tareas de otras. Está constituido por un
conjunto de declaraciones, instrucciones y mecanismos de gestión de errores y
excepciones.
Una vez visto las principales definiciones de los lenguajes de programación como
JAVA y PL/SQL pasamos a definir las herramientas del cual se basa este
proyecto.
.
5.4. FORMS 6i
Forms es un componente que forma parte del conjunto de productos Developer
2000 y es lo que Oracle utiliza en el campo de las GUI (Interfaces Gráficas de
Usuario) para diseñar pantallas las cuales permiten crear, borrar y modificar datos
de la Base de Datos mediante el lenguaje PL/SQL, de una forma rápida y
eficiente.5
Esta es una herramienta de desarrollo que permite construir aplicaciones tipo
cliente-servidor6, y que usa la base de datos de Oracle. Algunas de las
5
Oracle FORMS. Disponible en: http://www.oracle.com/technetwork/developertools/forms/overview/index.html. [Fecha de consulta: mayo 22 de 2011.]
6
Se refiere a un modelo de diseño que se puede pensar como aplicaciones que se ejecutan en una red de
área local (LAN). En términos muy básicos, puede describir que el cliente solicita y que el servidor ejecuta o
de alguna forma realiza las solicitudes de trabajo.
características que podemos encontrar en las aplicaciones con Oracle Forms son
las siguientes:

Introducir, actualizar, borrar y consultar datos almacenados en la base de
datos.

Presentar datos utilizando texto, imágenes y controles VBX (Visual Basic
Extensión).

Controlar formularios a través de varias ventanas.

Realizar transacciones en la Base de Datos.

Acceder a menús integrados.

Enviar datos directamente a Oracle Reports.
Forms se compone básicamente de tres partes.
5.4.1. FORM BUILDER (diseñador).
Es la que se encarga del diseño y la definición de los formularios, menús y
librerías de las aplicaciones. Se compone de:

FORMULARIO: Está formado por objetos y líneas de código. En él se
diseñan las pantallas y ventanas para trabajar con los datos de la Base de
Datos. Están los objetos y los datos de la Base de Datos que un usuario
puede visualizar y utilizar.

MENÚ: El menú puede estar compuesto por una jerarquía de menús que
forman parte de la aplicación.

LIBRERÍA: Colección de procedimientos y funciones, unidades de
programa PL/SQL, que se pueden utilizar dentro de la aplicación o ser
llamadas desde otro módulo.
5.4.2. FORM COMPILER (generador)
Se generan las aplicaciones construidas en el Form Builder, convirtiéndolas en
ejecutables que puede manejar el programa de ejecución.
5.4.3. FORM RUNTIME (ejecutor)
Se usa para ejecutar las aplicaciones generadas por el generador de aplicaciones
Form Compiler. El Form Runtime crea un acceso directo al ejecutable, así es
posible ejecutar la aplicación sin entrar en el Form Builder.
5.5. BLOQUE DE DATOS
Contiene información heterogénea pero conceptualmente relacionada entre sí. Un
bloque es una interconexión entre el formulario y una única tabla de la base de
datos, es por eso que debe contener unos objetos adicionales que permitan
acceder al contenido de dicha tabla. La tabla a la que está conectada el bloque se
le denomina tabla base.7
De acuerdo a su relación con las tablas los bloques pueden ser de dos tipos:

Bloque de control: en él está la información no relacionada directamente
con la base de datos.

Bloque de tabla base: Contiene ítems relacionados con una tabla de la base
de datos y también ítems de control, es decir, no relacionados con ninguna
tabla, como por ejemplo los botones.
5.6. AST (Abstract Syntax Tree – Árbol de sintaxis abstracta)
Básicamente un árbol sintáctico se corresponde con una sentencia, obedece a
una gramática, y constituye una representación que se utiliza para describir el
proceso de derivación de dicha sentencia. La raíz del árbol es el axioma inicial.
Como nodos internos del árbol, se sitúan los elementos no terminales de las
reglas de producción que vayamos aplicando, y cada uno de ellos poseerá tantos
hijos como símbolos existan en la parte derecha de la regla aplicada.
7
MARQUÉS, Andrés. ALIAGA, José. GARCIA, Salvador. QUINTANA, Gregorio. Sql y Desarrollo de aplicaciones
en oracle 8. Publicacions de la Universitat Jaume I. 2001. 159p .
Una secuencia de derivaciones con origen en el axioma inicial y destino en la
cadena a reconocer constituye una representación del árbol sintáctico. A cada
paso de derivación se añade un nuevo trozo del árbol, de forma que al comienzo
del proceso se parte de un árbol que sólo tiene la raíz (el axioma inicial), al igual
que las derivaciones parten también del axioma inicial. De esta forma, en cada
derivación se selecciona un nodo hoja del árbol que se está formando y se le
añaden sus hijos. En cada paso, las hojas del árbol que se va construyendo
constituyen la forma sentencial por la que fluye la derivación. Por otro lado, la
secuencia de derivaciones no sólo representa a un árbol sintáctico, sino que
también da información de en qué orden se han ido aplicando las reglas de
producción.
Una vez abordado los temas principales que se relacionan con un migrador de
código fuente pasamos a definir qué es un migrador de código fuente y cuales
herramientas están en el mercado actualmente.
5.7.
MIGRADOR DE CÓDIGO FUENTE.
Un migrador de código fuente, es una herramienta, que permite homologar
aplicaciones hechas en un lenguaje de programación a otro lenguaje diferente sin
que esta aplicación pierda su funcionalidad además esta herramienta permite
ahorrar tiempo de desarrollo.
6. ESTADO DEL ARTE.
6.1. MIGRADORES DE CÓDIGO FUENTE.
Entre las aplicaciones/herramientas de migración de código fuente a Java para el
lenguaje PL/SQL, se encuentran las listadas a continuación.
6.1.1. PLSQL WIZARD.
Es un software que permite la migración del código fuente PL/SQL a Java,
distribuido por informatikatelier. Esta herramienta tiene una interface muy fácil de
utilizar para el usuario. La forma de utilizar este software es pegando el código
fuente de PL/SQL y la herramienta lo convierte a código fuente Java, mostrando el
resultado final en una ventana al lado derecho del código fuente de PL/SQL, lo
que se puede intuir que para algunas aplicaciones, como suele ser muy frecuente
en PL/SQL, en donde un paquete tiene muchas de líneas de código, es posible
que se generen problemas con el software.
Una vista de esta herramienta se muestra a continuación:
Ilustración 1. Ventana de migración PL/SQL WIZARD.
6.1.2. SWISSQL-ORACLE TO JAVA.8
Esta herramienta al igual que la anterior permite la migración de código fuente
PL/SQL a Java, esta herramienta es distribuida por Adventnet. Para realizar una
migración de código fuente se debe realizar de la siguiente forma: se debe
adicionar el fichero donde se encuentre el código PL/SQL luego esta herramienta
se encarga de leer el contenido y realizar la migración y este resultado es
almacenado en archivos (clases) java.
Una vista de esta herramienta se muestra a continuación:
Ilustración 2. Ventana de migración SWISSQL-ORACLE TO JAVA.
8
http://www.swissql.com/products/oracle-to-java/oracle-to-java.html
6.1.3. ORINDABUILD™9.
Al igual que las otras, permite la migración de código fuente de PL/SQL a Java y
es distribuida por Orinda Software. Para realizar una migración con esta
herramienta, es necesario primero establecer una conexión a la base de datos, el
siguiente paso a seguir es ubicar los procedimientos o funciones (código fuente),
después de seleccionar el código fuente la herramienta se encarga de leer y
genera el equivalente en java, con sus respectivas clases .java.
Una vista de esta herramienta se muestra a continuación:
Ilustración 3. Ventana de migración ORINDABUILD™
9
http://www.orindasoft.com/public/features.php4
6.1.4. In2j.10
Quien se encarga de distribuir esta herramienta es Quintessence System. Para
realizar una migración de un código fuente desde PL/SQL a Java, lo primero que
se debe realizar es ubicar el archivo con los fuentes que desean ser migrados, una
vez se tenga seleccionado el fichero que se desea migrar, la herramienta
comienza a generar su equivalente en java, después en otra pantalla aparece un
reporte de la migración en la cual se especifica la ubicación de los fuentes
resultantes, en sus respectivas clases .java.
Una vista de esta herramienta se muestra a continuación:
Ilustración 4. Ventana de migración INJ2
10
http://www.quintessencesystems.com/in2j.php
Ilustración 5. Ventana de migración IN2J.
Estas herramientas descritas son las más comerciales que se pueden encontrar
en el mercado en cuanto a la migración de código fuente PL/SQL a Java, como
son herramientas que tienen un costo o en algunos casos están descontinuadas,
dejan un espacio en la investigación y desarrollo de las herramientas para la
migración de código fuente entre lenguajes de programación, en nuestro caso
FORMS to IceFaces.
6.2.
DESCRIPCIÓN DEL PROCESO DE MIGRACIÓN.
En algunas de las herramientas que existen en el mercado permiten realizar esta
funcionalidad, pero tienen algunos inconvenientes como; no definen una buena
arquitectura del código generado, genera mucho código basura, el costos de
mantenimiento y modificación es alto y por ultimo el software es licenciado. De
acuerdo con los inconvenientes encontrados descritos anteriormente, se ha
realizado la pregunta, ¿Es posible realizar una herramienta que permita la
migración de Formulario de Oracle Forms, con una arquitectura definida y la
optimización del código generado?
Al planteamiento de esta pregunta se puede generar la siguiente hipótesis: Definir
una herramienta que no genere código basura, que sea de código abierto y defina
una arquitectura con patrones de diseño. Además se ha planteado la posibilidad
que sea un del framework de zathura-code, con el fin de reutilizar algunos de los
componentes ya implementados y tener así una herramienta mas robusta y de
mayor funcionalidad y lo mas importante que este en la comunidad opensources
En el caso de usar el framework de zathura el lenguaje de programación para el
proyecto que se debería de utilizar es Java. Con la hipótesis ya definida el
siguiente paso fue validar que tan viable era implementar una aplicación con estas
características, por lo que se entro en detalle sobre la aplicación zathura y
encontramos que esta genera un código con una arquitectura en capas y con
patrones de diseños, además que permite la integración de nuevos utilidades y la
reutilización de algunos componentes del mismo, teniendo esta herramienta como
parte de la solución nos enfocamos en dar solución a la transformación de los
formularios de Oracle forms6i, en la que se dio como posible solución utilizar
templates de velocity que permitan definir una estructura y equivalencia entre
datos de Oracle y Java, también , PL/SQL y Extensible Markup Langague XML.
Con el fin dar a conocer el proceso que se realiza al momento de migrar un
formulario de Oracle Forms a Java, a continuación se describe el proceso y la
interacción de algunas clases.
Se tiene como entrada del proceso el formulario de Oracle Forms, al cual se desea
realizar una migración de plataforma, el actor principal es la herramienta que se ha
implementado encargada de realizar la migración de las formas de Oracle forms a
JSP, como segundo actor, esta la herramienta de Zathura code que es utilizada
para la generación de las clases de persistencia y acceso a datos.
El proceso que se realiza para una migración consta como primera fase
seleccionar el formulario de Oracle forms como elemento de entrada, a partir de
este se definen las JSPs con su respectivo bean que se construyen por cada vista
que tenga definida el formulario, la transformación se realiza por medio de
templates de velocity que permite definir un estilo y algunas variables que son
remplazadas de acuerdo a las características que tenga el formulario. Lo mismo
se realiza para los objetos de dominio que en este caso ya que un bloque de base
de datos hace referencia a una tabla específica se utiliza la misma tecnología de
template para realizar las clases de dominio Java, con los objetos de dominio
creados, se puede hacer uso de zathura-code que desde sus primeras versiones
funciona suministrándole los objetos de dominio y este dando como resultado una
arquitectura definida, clases de persistencia con sus respectivos métodos.
La clase principal de la herramienta de migración de formularios de Oracle forms a
la tecnología Java Enterprise Edition es ZathuraOracle2JeeGenerator la cual
implementa de la Interface IZathuraOracle2JeeGenerator y su método principal
generate en el cual se realiza la transformación de JSPs, bean de la vista y las
clases de dominio (Pojos), de acuerdo como se dijo antes por medio de un fichero
.vm equivalente a un template para cada una de los elementos a construir son
remplazado por valores equivalentes al formulario en el estilo de cada template,
existe un template para cada una de los elementos construidos, después es
instanciado el componente zathura-code, por medio de la clase IZathuraGenerator
y del cual se invoca el método toGenerate el cual cuando es ejecutado y esta bien
configurado se encarga de la generación de la persistencia y comunicación entre
la vista y los objetos de dominio.
La generación de clases se realiza por medio de templates que permiten
establecer la estructura de una clase y definir variables que después en el
momento de ser invocados se puede remplazar esas variables por valores
específicos.
A continuación mostramos el proceso que se realiza desde que se obtiene una
forma de Oracle Forms hasta que se hace la migración a Java en él se muestran
las clases principales que interactúan en este proceso.
A continuación se muestra las partes más importantes dentro del proceso de
migración de código fuente:
Se tiene la forma desarrollada en Oracle Forms 6i, en este caso tenemos una
ventana que tiene la descripción de un cliente.
Ilustración 6. Forma en Oracle Form 6i.
A continuación observamos como se compone la forma dentro de la herramienta
de Oracle Forms 6i, en la parte derecha se encuentra la parte grafica y en la parte
izquierda la definición de un bloque de dato de base de datos, que en este caso se
llama y hace referencia a una tabla clientes de la base de datos, con la descripción
de sus elementos.
Ilustración 7. Pantalla de la herramienta de Oracle Forms 6i
Con mas detalle observamos como se compone la forma y en nuestro caso lo que
nos importa el data blocks donde cada ítem corresponde a una columna dentro de
la tabla en la base de datos.
Ilustración 8. Composición de la Forma en Oracle Forms 6i.
Una vez que se tiene la forma que se desea migrar es necesario saber la
ubicación donde se encuentra y el destino donde va a quedar el código migrado.
El método generate es quien empieza todo el proceso de migración.
Ilustración 9 Código Java donde se ubica la forma y se llama al generador.
Acá se muestra la implementación del método generate, en él se hace la
equivalencia entre los lenguajes y se llama a Zathura en el método toGenerate.
}
Ilustración 10. Vista del método generate.
En la siguiente imagen se puede observar la forma en que esta implementado el
template para la definición de los Pojos, en el cual se definen algunas constantes y
variables que son remplazados por los valores específicos que se obtienen del
bloque de datos, referente a una tabla de la base de datos
Ilustración 11 Template para una clase en Java.
Clase del proyecto Zathura que crea el acceso a datos.
Ilustración 12. Clase de Zathura que genera código a partir del modelo de
datos
6.3.
DISEÑO ARQUITECTONICO DE LAS APLICACIONES GENERADAS
CON ZATHURA JAVA EE FORMS.
.
La arquitectura implementada para la migración de Formulario de Oracle Forms
reutiliza los componentes de negocio de Zathura JEE WEB Centric como Business
Delegate, Lógica de Negocio, POJOs, DAO y Entity Manager Helper vistos en el
capítulo 6.4 de la documentación de Zathura Code, es por esto que en este
capítulo solo se nombraran los componentes de presentación que se muestran a
continuación:
Ilustración 13. Arquitectura de las aplicaciones generadas por Zathura Code.
6.4.
COMPONENTES DE LA ARQUITECTURA DEL MIGRADOR
La herramienta se encarga de leer los data blocks definidos en la aplicación de
Oracle Forms, genera la capa de presentación y los transforma a JSP, creando así
la configuración del fichero xml de ice-faces y la lógica del BackEndBean que
llama al BusinessDelegate, este componente es creado por la aplicación zathura,
por lo cual se hace uso de este, en la generación de este componente y los demás
para el acceso a datos.
En el diagrama a continuación se observan las clases principales del componente
de zathura Forms y una descripción del componente de Zathura Forms que
permite la migración de las Formas de Oracle a iceFaces, en el que interactúan los
proyectos engine y generator.
Ilustración 14. Diagrama de clases del migrador de código de bloque de
datos de formas a JAVA.

IZathuraOracle2JeeGenerator: Interface que define los métodos públicos
que permitirán la transformación de un formulario de oracle a jsps en la
plataforma J2EE

ZathuraGeneratorForm: Clase que implementa
IZathuraOracle2JeeGenerator, permite crear los objetos de dominio a partir
de un bloque de datos de entrada de Oracle Forms y por medio de
templates de velocity se remplazan las propiedades de las formas por
equivalencias en código JAVA. Hace uso de la herramienta de Zathura para
la generación del acceso a datos (DAOs) y la configuración del entorno
para generar una aplicación web.

GeneratorUtil: Se encarga de definir estándares (equivalencias) para el
proceso de transformación de los formularios a Java. Esta clase brinda
utilidades comunes en todo el proceso de transformación con el fin de que
pueda ser accedida desde cualquier punto del proceso de transformación.

GenerationModel: Clase de dominio en la que se asignan cada uno de los
elementos construidos en el proceso de transformación de los formularios
de Oracle a Java.

IMetadataReader: Interface que se utiliza para consultar los metadatos del
módulo de bloque de datos devolviendo una lista con varios mapas. Cada
mapa contiene un par clave-valor que incluyen módulos de información y la
información de los bloques Artículos

MetadataReader: Esta clase se utiliza para leer un Metadato de una forma
en Oracle utilizando la librería JDAPI11.

MetadataReaderFactory: Permite crear una instancia del Metadatareader.

ModuleMetadata: Clase de dominio en la que se asignan cada uno de los
elementos del formulario de Oracle.

ZathuraGeneratorForm: Clase principal la cual se encarga de invocar los
componentes de transformación de los formularios Oralce a código Java.
11
Java Design-time API (JDAPI) es una conjunto de clases Java facilitadas por Oracle que nos permiten
cargar, crear, manipular y compilar formularios (.fmb), menús (*.mmb), librerías PL/SQL (.pll) y librerías de
objetos (.olb).

FormUtility: Obtiene cada uno de los elementos del formulario.
7. RESULTADOS.
Para realizar una herramienta que permita la migración de código fuente es
necesario tener claro algunos conceptos implícitos durante este proceso, por eso
se realiza una pequeña descripción de qué es un lenguaje de programación, así
como de los lenguajes de programación Java y PL/SQL. También es necesario
mostrar el contexto en el cual se va a desenvolver este proyecto, por lo que se
realiza una introducción y se listan algunas herramientas de migración de código
fuente.
La idea principal de Zathura es permitir a los desarrolladores elegir entre
diferentes arquitecturas basándose en estándares abiertos y patrones de diseño
JEE. Lo que se espera es poder agregar nuevos módulos que permitirán tener una
herramienta más robusta y lo más importante OpenSource (Código abierto).
Se ha encaminado una problemática con el futuro de esta herramienta, puesto
que esta se encuentra en un punto estable lo que permite decir que está
cumpliendo a cabalidad con su objetivo, pero como lo presupuestado para esta
herramienta no es solo para desarrollos web, se han planeado implementar
algunos módulos que permitirán generar vistas en otros lenguajes tales como
GWT (ya implementado), migración de código PL/SQL a java, conversión de
formularios Oracle a SWT y Icefaces.
Para centralizar un poco la problemática o mejor la estructura del futuro de
Zathura se tiene un diagrama el cual permite visualizar donde se encuentra
ubicado este proyecto.
Zathura Web Centric generator
Gwt Generator
Zathura Oracle Forms to Java
Generator
Road Map
Ilustración 15. Proyecto Zathura
El proyecto a realizar se encuentra en el apartado 3 de la figura 1 (Zathura Oracle
Forms to Java Generator), pero este modulo abarca otros tres puntos los cuales
se describen a continuación:
Zathura Oracle Forms to Java Generator
PL/SQL to JAVA
Forms
to
-
Triggers
-
Programas de Unidad.
IceFaces
Forms
to
SWT
Ilustración 16. Zathura Oracle Forms to Java Generator
Analizando el detalle de este apartado se puede observar los módulos en los que
se divide, del cual el proyecto se va a encargar de Forms to IceFaces.
Para la migración de código fuente nos basamos en el proyecto de grado realizado
en la Universidad de San Buenaventura – Cali, Diseño de una arquitectura para la
migración de código fuente entre lenguajes de programación,
hecha por los
estudiantes Danny Gerardo Van Arcken y Ligia Lorena Varela Rodríguez en el año
2004 y en algunas referencias bibliográficas.
8. CONCLUSIONES.

La tecnología esta en constante cambio, la web ha sido uno de los avances
más importantes de la informática, es por eso que el desarrollo de software
ha respondido a sacar el mayor provecho de la Web, al pasar a una
arquitectura basada en Web.

Mediante la creación de componentes de generación de código es posible
disminuir los tiempos de desarrollo de software. Al iniciar un proyecto no es
necesario construir sus componentes desde cero; esto conlleva a disminuir
costos en el desarrollo de software para las empresas.

Es importante saber que existen equivalencias entre lenguajes de
programación, es por eso que se pueden hacer modelos que permitan
migrar de un leguaje a otro basándose en la gramática para homologar la
lógica entre ellos.

El uso de java para el desarrollo de aplicaciones hacen que estas puedan
crecer y ajustarse a la medida en que crece el negocio, y estos programas
pueden funcionar en navegadores web y en servicios web.
9. PROYECTOS FUTUROS.
De acuerdo a las utilidades agregadas hasta el momento al proyecto zathura se
tienen algunas ideas de otras utilidades a implementar para que se tenga una
herramienta más robusta para la comunidad, de las cuales se proponen que se
tenga en cuenta como las próximas utilidades para el zathura:

Plug-in de eclipse para la migración de formularios a ice-Faces, debido a
que este punto no estaba sobre el alcance del proyecto.

FORMS TO STANDARD WIDGET TOOLKIT (SWT).

Zathura Oracle Forms to Java Generator, PL/SQL TO JAVA PROGRAMS
UNIT: este apartado consiste en migrar la lógica que tenga un formulario de
Oracle a Java.
10. BIBLIOGRAFÍA.
1. LOUDEN, Kenneth C. Lenguajes de Programación principios y práctica.
Editorial THOMSON. Segunda edición.2004. 635p.
2. VAN ARCKEN, Danny Gerardo y VARELA RODRÍGUEZ, Ligia Lorena.
Diseño de una arquitectura para la migración de código fuente entre
lenguajes de programación. Cali, 2004, 148p. Trabajo de grado.
Universidad de San Buenaventura.
3. DEITEL, Harvey M y DEITEL, Paul J. Cómo programar en Java. Editorial
Pearson Prentice Hall. Quinta edición. México 2004. 1268p
4. GABILLAUD, Jérome. Colección recursos informáticos Oracle 9i SQL,
PL/SQL, SQL*Plus. Ediciones ENI. Mayo 2003. 435p.
5. Definición
PL/SQL,
disponible
en:
http://www.oracle.com/technetwork/database/features/plsql/index.html
[Fecha última consulta: 06 de Enero de 2012].
6. Oracle FORMS, disponible en: http://www.oracle.com/technetwork/developertools/forms/overview/index.html [Fecha de consulta: mayo 22 de 2011.]
7. Definición de cliente/servidor: KENDALL, Kenneth y KENDALL, Julie. Análisis
y diseño de sistemas. Sexta Edicion. Perarson Educación. Mexico 2004.
8. MARQUÉS, Andrés. ALIAGA, José. GARCIA, Salvador. QUINTANA,
Gregorio. Sql y Desarrollo de aplicaciones en oracle 8. Publicacions de la
Universitat Jaume I. 2001. 159p.
9. SWISSQL-ORACLE
TO
JAVA,
disponible
en:
http://www.swissql.com/products/oracle-to-java/oracle-to-java.html
[Fecha
última consulta: 06 de Enero de 2012].
disponible
10. ORINDABUILD™,
en:
http://www.orindasoft.com/public/features.php4 [Fecha última consulta: 06 de
Enero de 2012].
11. In2j, disponible en: http://www.quintessencesystems.com/in2j.php
[Fecha
última consulta: 06 de Enero de 2012].
12. Definición
de
JDAPI:
http://www.dbadvice.be/index.php/en/oracle-forms
[Fecha última consulta 26 de Diciembre de 2011].
Descargar