You are on page 1of 41

myApplicationGenerator Introduccin:

"myAppGen", es un generador de aplicaciones sumamente innovador, intuitivo, fcil de utilizar, pensado y diseado para producir increbles beneficios tanto al desarrollador de la aplicacin como al usuario final de la misma. El desarrollador podr construir una aplicacin completa, con todos los programas de carga de datos, consultas, informes, consultas de totales por grupo, informes de totales por grupos, procesos de cierre, etc. Pero al decir completa, no nos quedamos solamente con estos programas, vamos mucho ms lejos y agregamos los mdulos de seguridad, auditora, ayuda, multi-idioma, anexo de documentos, email, suscripcin para que la aplicacin le enve por correo peridicamente cualquier informe de la aplicacin, suscripcin para que la aplicacin avise por correo cuando se cumpla alguna condicin u ocurra algn evento, consola de administracin de los usuarios que utilizan la aplicacin, mecanismo de distribucin de nuevas versiones, etc. Construir una aplicacin con estas caractersticas con las herramientas convencionales llevara mucho tiempo y sera muy costoso; sin embargo, con myAppGen es slo cuestin de habilitar estos mdulos y las funcionalidades estarn disponibles en todos los programas de cualquier aplicacin. Otro aspecto importante para el desarrollador es que el trabajo debe ser lo ms fcil posible para que pueda ser realizado lo ms rpido posible. Hacer que el desarrollo de aplicaciones sea fcil y rpido, es una tarea bastante difcil, y sin lugar a dudas, sta ha sido la meta de casi todas las herramientas de desarrollo, pero precisamente en este punto myAppGen presenta las ms grandes innovaciones que le dan otra perspectiva al desarrollo y produce increbles ventajas. Para que esto no sean slo palabras, me voy a referir solamente a tres caractersticas que son las responsables del mayor cambio en el paradigma de desarrollo. La primera, es la posibilidad de definir campos del tipo frmula en el diccionario de datos; estos campos se calculan automticamente de forma similar a las planillas de clculo, pero con la diferencia que en este caso se refieren a campos de las tablas de la base de datos. Esto es, cuando se ingresa, modifica o borra un dato, automticamente se calculan todas las frmulas que son afectadas por ese dato. Esta simple definicin, produce un gran beneficio y hace que los programas de registro de datos sean solamente eso, programas de registro de datos y no complejos algoritmos de actualizacin de archivos. A partir de esta definicin, todos los programas de registro de datos se vuelven simples, siendo igualmente simple el registro de clientes que el registro de compras, ventas, pagos, etc. Todos ellos solamente cargan los datos del registro y los procesos de clculo se realizan automticamente de acuerdo a las frmulas definidas en el diccionario de datos; as, ya no tenemos que preocuparnos porque al modificar el registro se debe revertir el valor anterior y actualizar con el nuevo valor y como tampoco que al borrar debamos revertir todas las operaciones que habamos realizado. La segunda, es que la aplicacin se construye progresivamente mientras se est ejecutando. Con este nuevo paradigma, en vez de escribir el programa, simplemente se

le pide al generador que prepare una propuesta del programa que se est necesitando; el generador construye la propuesta y la ejecuta inmediatamente; entonces, al verla en funcionamiento, se puede pasar al modo edicin, modificar sus propiedades, agregar nuevos componentes, e incluso agregar botones que llamen a nuevos programas; luego se pasa al modo ejecucin y se sigue ejecutando la misma aplicacin, ahora con sus nuevos componentes y sus nuevos programas, que a su vez al ser ejecutados, podrn ser editados y as sucesivamente. Evidentemente, as el trabajo de desarrollo se vuelve mucho ms simple, fcil e intuitivo, disminuyndose drsticamente el tiempo y los costos correspondientes; es ms, es tan fcil construir las aplicaciones, que usted podr encarar el desarrollo por medio de la construccin de prototipos sucesivos. La tercera, en el trabajo de desarrollo de aplicaciones la mayor dificultad no est precisamente en desarrollar la aplicacin sino ms bien en el mantenimiento que se debe realizar durante toda la vida til de la aplicacin. Este problema en myAppGen se resuelve gracias al mecanismo de sincronismo que existe entre las definiciones del diccionario de datos y las aplicaciones construidas a partir de l. Gracias a esta funcionalidad cualquier cambio en el modelo lgico de datos se refleja automticamente en todos los programas de todas las aplicaciones definidas en el diccionario. As, si usted modifica el nombre de un campo, su prompt, ttulo, tipo de dato, longitud, validacin, valor inicial, frmula, etc., estos cambios sern aplicados en todos los programas de todas las aplicaciones construidas en el diccionario. Incluso si se realizan cambios ms radicales como borrar un campo o an ms, como borrar un archivo o borrar un relacionamiento, tambin se mantendr la integridad, modificndose tambin radicalmente las aplicaciones de acuerdo al nuevo modelo de datos. Con respecto al usuario final de la aplicacin, myAppGen sabe que el destinatario de todo el esfuerzo de desarrollo es el usuario final, por eso genera aplicaciones que son agradables, fciles de utilizar, con muchas funcionalidades y sumamente configurables, dando al usuario final autonoma para hacer consultas y obtener informes no previstos. Las principales funcionalidades que tendr el usuario son: - Todas las listas de la aplicacin son configurables: se pueden reordenar las columnas, agregar filtros, totales, etc. - Todas las listas tienen el botn de impresin: el informe puede ser reconfigurado por el usuario, definiendo columnas, filtro, orden, corte, subtotales, totales, etc. Estas definiciones pueden ser grabadas para ser utilizadas en el futuro. - Si se habilitaron los mdulos externos, todas las listas tienen la posibilidad de anexar documentos, ver el histrico de auditora, enviar por email. - Todos los informes son configurables por el usuario, definiendo las columnas, orden, filtro, subtotales, totales, etc.; incluso se pueden definir nuevos informes y grabarlos para utilizarlos cuando sea necesario. - Los usuarios se pueden suscribir para que la aplicacin les enve cualquier informe peridicamente por email. - Los usuarios se pueden suscribir para que la aplicacin les avise por email, cuando ocurre algn evento o se cumple alguna condicin. - Las consultas e informes de grupos/expresiones pueden ser configuradas por el usuario, creando nuevos grupos, nuevas expresiones, filtros, etc. y grabarlas para que sean utilizadas cuando sea necesario. - En cualquier lista que contenga el email, los usuarios pueden crear cartas personalizadas, con variables de sustitucin y emitirlas a todos los registros que

cumplan cierta condicin; las cartas son emitidas en una bandeja temporal para que sean verificadas, corregidas, seleccionadas y finalmente enviadas. - Mediante la consola de administracin de usuarios se puede ver la lista de usuarios que estn utilizando la aplicacin, a qu hora ingresaron y que programa estn utilizando en este momento. Se les pueden enviar mensajes, sacarles fuera de la aplicacin, impedirles que vuelvan a ingresar, etc. La Aplicacin generada tendr las siguientes caractersticas: - Arquitectura Cliente/Servidor en dos capas. - Interfase Windows (componentes swing) Funciona con cualquier base de datos (mySql, Oracle, SqlServer, Db2, Informix) Procesamiento de transacciones y control de concurrencia a nivel de campos Consultas Gerenciales (totales por grupo de expresiones) Informes configurables por el usuario, definicin de columnas, totales, subtotales, filtros, etc. Informes Gerenciales (totales por grupo de expresiones) Seguridad (restricciones en componentes visuales, filtros en listas, filtros en informes) Auditora (Histrico de quin, cundo y qu datos fueron modificados) Ayuda Multi-Idioma Correo electrnico (suscribirse para recibir peridicamente informes, notificaciones de eventos, mailing list, etc.) Anexo de Documentos Importacin y Exportacin de datos Consola de administracin de Usuarios.

Principales Componentes de myAppGen: - Diccionario de Datos o Definicin lgica de Base de Datos, Tablas, Campos, Claves, Relaciones o Creacin fsica de Base de Datos, Tablas, Campos, Claves, Relaciones o Importacin de la Base de Datos fsica a la definicin lgica o Sincronizacin entre la definicin lgica y fsica de la Base de Datos. o Definicin de campos del tipo FORMULA (se calculan automticamente) o Interfase para agregar, modificar, borrar, registros en las tablas definidas. o Impresin de registros de las tablas o Impresin de la estructura lgica del diccionario de datos o Exportacin de datos o Importacin de datos

Runtime Application Builder o Runtime Menu Builder o Runtime Browse Builder, child Browse Builder o Runtime Form Builder, lookup parent file, Tab child Browse o Runtime Query Builder o Runtime Report Builder o Runtime Report Total Builder o Runtime Query Total Builder o Runtime Process Builder o Application Wizard o Default Application Components

Mdulos Integrados o Seguridad o Auditora o Ayuda o Multi-Idioma o Anexo de Documentos o Comunicacin (email) Interface visual para envo y recepcin de emails Envo de pantallas o informes de la aplicacin Suscripcin para recepcin peridica de informes Suscripcin para avisos por evento o condicin Correos con formatos definibles para listas que contengan emails entre sus datos o Consola de Administracin de Usuarios Visualizar usuarios activos y en qu programa se encuentran Enviar mensajes a usuarios activos Sacar del sistema a usuarios, bloquear el acceso al sistema Distribuir la nueva versin de la aplicacin a las estaciones de trabajo Generacin de Cdigo Fuente en lenguaje Java o Creacin del Proyecto Java para NetBeans Compilacin y creacin del archivo Jar y de las carpetas para distribucin.

Construccin de la Aplicacin
El proceso de construccin de la aplicacin es sumamente simple, todas las tareas necesarias han sido pensadas para que myAppGen las pueda realizar o en su defecto, tenga herramientas que faciliten el trabajo. Para tener una visin de contexto, ahora vamos a hacer un breve resumen de los pasos que se deben realizar para construir una aplicacin, ms adelante se tratar detalladamente cada uno de estos temas. 1. Creacin del Diccionario de Datos Presionando el botn del toolBar se crea el diccionario de datos que es un nico archivo con extensin dct que contiene el modelo lgico de datos (tablas, campos, claves, relaciones, frmulas), as como tambin el modelo lgico de las aplicaciones (men, browse, form, query, queryTotals, report, reportTotal, process) 2. Creacin del Modelo Lgico de Datos Consiste en la definicin lgica de las tablas, con sus campos, tipos de datos, validaciones, frmulas, clave primaria, relaciones entre archivos, etc. El generador utiliza el modelo de datos relacional para la construccin de la aplicacin, por ese motivo es fundamental tener una correcta y completa definicin de la estructura de datos y sus relaciones. Todas estas estructuras de datos pueden ser registradas , pero si ya existen los archivos en la base de datos, es mucho manualmente ms fcil y rpido importarlos y luego hacer las correcciones necesarias. 3. Creacin del Modelo Fsico de Datos A partir del modelo lgico de datos se generan y luego se ejecutan las sentencias SQL que crean las tablas, campos, ndices y restricciones en la base de datos (mySql, Oracle, Db2, SqlServer, Informix, etc). Construccin de la Aplicacin Con seguridad, la innovacin ms grande de myAppGen es que la aplicacin se construye progresivamente mientras se est ejecutando. Con este nuevo paradigma, en vez de escribir el programa, simplemente se le pide al generador que prepare una propuesta del programa que se est necesitando; el generador construye la propuesta y la ejecuta inmediatamente; entonces, al verla en funcionamiento, se puede pasar al modo edicin, modificar sus propiedades, agregar nuevos componentes, e incluso agregar botones que llamen a nuevos programas; luego se pasa al modo ejecucin y se sigue ejecutando la aplicacin, ahora con sus nuevos componentes y sus nuevos programas, que a su vez podrn ser editados y as sucesivamente. Evidentemente, as el trabajo de desarrollo se vuelve mucho ms simple e intuitivo, disminuyndose drsticamente el tiempo y los costos correspondientes; es ms, es tan fcil construir las aplicaciones, que usted podr encarar el desarrollo por medio de la construccin de prototipos sucesivos. Entonces, para construir la aplicacin se empieza ejecutando la aplicacin . Al principio, est compuesta por el men principal y los mdulos habilitados. En la figura de abajo, se muestra la aplicacin en ejecucin; para modificarla, simplemente se pasa del modo ejecucin al modo edicin .

4.

Cambio del modo de ejecucin a edicin. El men contiene los mdulos habilitados.

En el modo edicin, se pueden agregar, modificar o borrar componentes de la pantalla. Para hacer esto, se selecciona el componente, se aprieta rightClic y se selecciona la opcin deseada; las opciones cambian de acuerdo al componente seleccionado; por ejemplo, si se selecciona el item de men Update, se podr agregar Menu Item, Menu y Separador, sin embargo, si se selecciona el panel principal, se podr agregar Label, Button, Panel, SplitPanel.

Seleccionar Update y apretar rightClic

Ejecutar Wizard que construye Browse, Update, Report, Query, Process, etc.

Salir del modo edicin y pasar a ejecucin.

Al agregar un Men tem, adems de definir sus caractersticas visuales, tambin se definen las caractersticas del programa que se ejecutar al seleccionar este tem.

El nombre del programa que ser ejecutado. El archivo sobre el cual actuar el programa.

El tipo de programa que se construir.

En este caso, seleccionamos el Pattern Browse y el archivo Customer y con solo estas definiciones, myAppGen construye una propuesta del programa Browse, de Customer, el Form de Customer, con el lookup para los archivos padres (Country, City), el Informe de Customer, la auditora, el correo, etc. La propuesta de Browse es construida con los botones de agrega, modifica, borra, busca, filtra, exporta, imprime y sale. Adems, dependiendo de los mdulos habilitados, se agregan los botones de auditora, correo y documentos anexos. Los campos Memos son definidos como showFields y son desplegados en la parte inferior de la pantalla al

seleccionar cada registro; si existen campos del tipo frmula se los define como Sum Column, lo que hace que se agregue el rengln de Total.

Correo Auditoria Agrega, modifica y borra registros. Anexar documentos Impresin, configurable por el usuario. Agrega el rengln de total para los campos del tipo formula

Campos memos. Se muestran al seleccionar cada rengln

Por supuesto que este Browse es slo una propuesta, que puede ser modificada; basta con pasar del modo ejecucin al modo edicin , donde con doble clic, podemos modificar las propiedades de cualquier componente (clic en el header)

Se pueden hacer cambios ms estructurales editando y reconfigurando el template presionando doble clic sobre los datos de la lista.
Tabs, con las opciones de configuracin.

Archivo primario y sus archivos padres relacionados

Campos disponibles para incluir en el Browse.

Columnas del Browse

Edicin de la columna

Reordenar columnas

La propuesta de Form, es construida con los campos entry con sus validaciones respectivas, los campos memos en Tabs independientes, los campos Foreign Key con su botn de lookup y los campos del tipo frmula como texto (no modificable).

Despliega lista lookupProcedure Display field Campos tipo Formula

Este Formulario es slo una propuesta que puede ser modificada, basta con pasar del modo ejecucin al modo edicin , donde podemos seleccionar y modificar las propiedades de cualquier componente (doble clic),
Modo Edicin

Doble clic, edita las propiedades.

Se pueden hacer cambios ms estructurales, editando las propiedades del Template .

Tabs, con las opciones de configuracin.

Select/Unselect, campos del Formulario de actualizacin

Reordena campos Modifica propiedades del campo

Para demostrar la flexibilidad que nos permite la configuracin del template, hemos pasado los campos memos al Tab General, los reordenamos y agregamos el child Order; el resultado se muestra en la figura de abajo: el formulario de carga de datos ahora permite actualizar los datos del cliente y registrar sus rdenes.

5.

Generacin del Cdigo Fuente, Compilacin y Distribucin . Con un simple clic en el botn el generador crea el cdigo fuente en lenguaje JAVA, compila y crea la carpeta de distribucin donde se copian todos los archivos necesarios para la ejecucin de la aplicacin. Para llevar la aplicacin a otro computador, simplemente se copia todo el contenido de la carpeta "dist" al otro computador y se ejecuta la aplicacin. Creacin de Security, Help y Translate No es necesario hacer ningn trabajo de programacin de estos mdulos, basta con slo habilitarlos al crear la aplicacin para que sean incorporados a todos los programas. La definicin de los valores especficos salen del mbito de desarrollo y pasan al mbito de produccin de la aplicacin donde un usuario con perfil de administrador ejecutando la versin compilada de la aplicacin puede definir la seguridad, crear las pantallas de help y traducir la aplicacin a cualquier idioma.

6.

6.1. Security: El manejo de estas restricciones de seguridad permite que la aplicacin en ejecucin cambie sus caractersticas de acceso, dependiendo del usuario que ingres en la misma. As evitamos por ejemplo, que los empleados de venta puedan hacer asientos contables o emitir informes de contabilidad. Esta funcionalidad se obtiene haciendo que determinados elementos de la aplicacin estn inhabilitados o incluso invisibles para todos los usuarios del grupo con restriccin; existen tambin otros casos en los que se necesita ocultar columnas en las listas, o limitar el acceso a un subconjunto de datos, o restringir la cantidad de registros en un informe. Para realizar esta tarea, basta que algn usuario con perfil de administrador ejecute la aplicacin y defina las restricciones de acceso mientras est ejecutando la aplicacin; as, en cualquier ventana puede entrar al modo de edicin de seguridad, seleccionar el grupo de usuarios al que se aplicarn las restricciones y definir

restricciones para cualquier componente de esa ventana; luego puede seguir ejecutando la aplicacin y ver inmediatamente como quedar la ventana cuando ingrese cualquier usuario de ese grupo. 6.2. Ayuda (Help): Disponer de la tecla F1 Help es un estndar en las aplicaciones de hoy en da; todos nosotros, cuando estamos empezando a utilizar una nueva aplicacin y tenemos alguna duda casi automticamente recurrimos a la tecla F1. Al construir myAppGen, he pensado mucho como podra hacer que el generador nos ayude en la construccin del Help; a primera vista parece imposible que un software pueda hacer este trabajo, pero tambin pareca imposible construir una aplicacin mientras se la ejecutara; entonces, no puede ser que no podamos encontrar ningn mecanismo ms eficiente y que tengamos que seguir redactando todos los manuales y conectndolos en cada programa. La solucin que encontr se basa en el mismo principio que utilic para construir la aplicacin; as como ella se va construyendo a s misma y nosotros solamente la modificamos, tambin la propia aplicacin debe construir su propio Help y nosotros simplemente lo modificamos. Profundicemos un poco ms en esta idea; realmente lo que queremos explicar en el Help es precisamente lo que ya est haciendo la aplicacin, y si ella ya lo est haciendo, entonces ella debera poder explicarlo. Aqu podramos decir que la aplicacin debera conocerse a s misma y as, poder explicarnos qu hace y porqu lo est haciendo. Lastimosamente no llegamos tan lejos, pero todava les tengo alguna sorpresa. Imagnese que usted pueda desarrollar toda la aplicacin sin tener que preocuparse completamente del Help. Y que con la aplicacin ya terminada, simplemente la ejecuta y en el men principal le pide a la propia aplicacin que ella misma vaya construyendo su mdulo Help mientras usted recorre cada una de las pantallas de la aplicacin. De hecho, si cada pantalla se conoce a s misma, entonces ella puede redactar su propia pgina Help. Como mnimo, de las pantallas podemos obtener su propia imagen y a todos los botones que se ven en esa imagen podemos aplicarles el hiperlink que nos lleve a su pgina Help correspondiente; as, con slo las imgenes de las ventanas podremos construir un Help dinmico en el que se puede navegar de pgina a pgina como si fuese la propia aplicacin navegando de ventana en ventana!!!! Es increble, como con tan poco, podemos hacer tanto, pero no solamente podemos utilizar las imgenes, adems las ventanas nos pueden dar muchos datos sobre su contenido, pudiendo ser utilizados para escribir un pequeo texto explicativo en cada pgina de Help. Por otro lado, las pginas de Help construidas por la aplicacin son slo una propuesta que usted puede editar y agregar toda la explicacin que considere necesaria. Es ms, como este trabajo es totalmente independiente del desarrollo de la aplicacin, tambin el propio usuario administrador del sistema puede complementar las pginas de Help, editando y agregando las explicaciones que considere necesarias para el correcto uso de la aplicacin en los procesos administrativos de la empresa.

As, no slo podemos automatizar la construccin de las pginas de Help, tambin podemos pasar la responsabilidad de mejorar su redaccin a la propia empresa que utiliza la aplicacin. 6.3. Multi-Idioma: Al desarrollar una aplicacin cada vez es ms frecuente la necesidad de tenerla disponible en varios idiomas. Existen varias maneras de encarar este problema, pero en la mayora de ellas requieren de bastante trabajo, no slo para implementarla sino principalmente para mantenerla actualizada durante los mantenimientos sucesivos de la aplicacin. El generador "myAppGen" resuelve el problema de una forma sumamente simple, de hecho el desarrollo de la aplicacin se hace en el idioma que usted habla sin preocuparse de los otros idiomas. Despus de haber terminado el desarrollo de la aplicacin e incluso cuando ya se est utilizando se pueden crear tantos glosarios de idiomas como fuesen necesarios y la aplicacin funcionar indistintamente en cualquiera de ellos sin tener que hacer ningn tipo de mantenimiento. Esto es posible porque al generar la aplicacin se crea un diccionario que contiene todas las palabras o textos que se utilizan en la aplicacin. De esta manera, en cualquier momento, incluso cuando la aplicacin ya se encuentra en produccin, se puede editar este diccionario, crear un glosario para el nuevo idioma, traducir todas las palabras, y a partir de ese momento la misma aplicacin funcionar indistintamente en cualquiera de los dos idiomas sin necesidad de hacer ningn tipo de mantenimiento. Es ms, como no se necesita hacer mantenimiento, este trabajo no necesita ser hecho por el analista sino que simplemente lo puede hacer el usuario administrador de la aplicacin. 7. Auditora, DocumentMgr, email, Importacin/Exportacin, Consola de Usuarios No es necesario hacer ningn trabajo de programacin de estos mdulos, basta con habilitarlos al crear la aplicacin para que sean incorporados a todos los programas y funcionen totalmente integrados como si hubiesen sido programados especialmente para ellos.

Espero que con esta explicacin resumida, usted haya podido tener una visin de contexto del funcionamiento del generador en todo el proceso de construccin, compilacin y distribucin de una aplicacin. Ahora trataremos detalladamente cada una de las funciones que describimos anteriormente.

myApplicationGenerator, explicacin detallada


En la figura de abajo, mostramos la pantalla principal de myAppGen, donde se pueden ver las funciones que nos permiten construir sofisticadas aplicaciones orientadas al manejo de base de datos; con esta nica interfase se realiza todo el proceso; no es necesario ejecutar ningn otro programa, inclusive la compilacin y copia de todos los archivos necesarios para la distribucin se hace con esta nica interfase. A continuacin explicamos detalladamente el funcionamiento de "myAppGen", mostrando cada pantalla y describiendo sus funciones.
Crear aplicacin Ejecutar/construir aplicacin Importar de la base de datos Conectar con base de datos Crear database, table, key, relations Crear files, fields, keys, relations Reconstruir aplicacin Generar cdigo fuente, compilar y distribuir

Formulas

El proceso de construccin de la aplicacin empieza con la creacin del diccionario; el diccionario es el repositorio que contiene el modelo lgico de datos (tablas, campos, claves, relaciones, frmulas), as como tambin el modelo lgico de las aplicaciones (men, browse, form, query, queryTotal, report, reportTotal, process). Es importante aclarar que con un modelo lgico de datos se pueden definir varias aplicaciones y todo este conjunto se encuentra en un nico archivo .dct.

A continuacin describimos algunas caractersticas importantes del generador: Integridad/Sincronismo (modelo de datos aplicaciones) Gracias a esta funcionalidad cualquier cambio en el modelo lgico de datos se refleja automticamente en todos los programas de todas las aplicaciones definidas en el diccionario. As, si usted modifica el nombre de un campo, su prompt, ttulo, tipo de dato, longitud, validacin, valor inicial, frmula, etc., estos cambios sern aplicados en todos los programas de todas las aplicaciones construidas en el diccionario. Incluso si se realizan cambios ms radicales como borrar un campo o an ms, como borrar un archivo o borrar un relacionamiento, tambin se mantendr la integridad, modificndose tambin radicalmente las aplicaciones de acuerdo al nuevo modelo de datos. Observacin: Este mecanismo es muy til cuando se est abordando el desarrollo de la aplicacin por medio de la construccin de prototipos sucesivos. En este caso, hacer modificaciones de este tipo no constituye ningn riesgo ya que los programas no tienen ninguna importancia ms que la de aproximarnos a las necesidades del usuario. Sin embargo, no es recomendable utilizarlo con aplicaciones ya terminadas que se encuentran en produccin; en este caso si fuese necesario, tome las medidas de seguridad y guarde una copia de la aplicacin antes de hacer ningn cambio. Crash Recovery Si el sistema cae mientras est trabajando, usted slo corre el riesgo de perder los cambios que realiz en los ltimos 30 segundos, ya que el resto es recuperado automticamente al volver a ejecutar el diccionario. Esto ocurre gracias a que myAppGen cuenta con un agente que est vigilando todas las modificaciones que se realizan y si es necesario, cada 30 segundos las graba en un archivo de recuperacin. Backup Todos las definiciones necesarias para la generacin de la aplicacin, se encuentran en un nico archivo *.dct; haciendo backup de este archivo, podemos volver a generar todas las aplicaciones definidas en el diccionario. Por otro lado, el sistema nos ayuda haciendo backup automticamente utilizando el siguiente procedimiento: En la carpeta donde se crea el diccionario, el sistema crea una subcarpeta con el nombre de Backup; en esta carpeta, se guardan automticamente las diez ltimas versiones del diccionario, que corresponden a las diez ltimas veces que usted grab el diccionario. Adems, dentro de esta carpeta, se encuentra otra subcarpeta con el nombre de Daily, en donde se tiene la ltima versin de cada da.

Creacin del diccionario de datos Se selecciona la carpeta y se define el nombre del diccionario de datos. Dentro de esta carpeta, el generador crear una carpeta para cada aplicacin definida en ese diccionario y dentro de esa carpeta, se crearn todas las subcarpetas necesarias para la construccin, generacin de los programas fuentes, compilacin y distribucin de la aplicacin.

Una vez creado el diccionario, lo primero que se debe definir es la conexin con la base de datos. Sin embargo, establecer la conexin con la base de datos no suele ser muy simple, ya que tenemos que instalar varios softwares y configurarlos para que todos funcionen integradamente. Para evitar estas complicaciones, al instalar myAppGen, tambin se instala una versin de desarrollo de la base de datos mySql con su driver JDBC, totalmente configurado para que funcionen en forma integrada. As, al crear un nuevo diccionario, ya est definida esta conexin y usted podr trabajar sin ms trmites en el desarrollo de la nueva aplicacin. En caso necesario, puede utilizar la interfase que se muestra en la figura de abajo, para modificar la conexin o crear otras conexiones con otras bases de datos (mySql, Oracle, Db2, Informix, SqlServer, etc). De hecho, el diccionario puede tener varias conexiones activas, incluso con distintas bases de datos. Es ms, podemos construir aplicaciones que funcionen con varias bases de datos a la vez. Sin embargo, es recomendable que la aplicacin actualice tablas de una sola conexin, ya que no se cuenta con procesamiento de transacciones entre distintas bases de datos. Conexin con la Base de Datos Para establecer la conexin, la base de datos debe estar instalada y en funcionamiento, adems se debe conocer el valor de los parmetros de conexin, tales como el Host, Port, Database, User, Password. Si usted instal la base de datos, por favor tome nota de estos valores, en caso contrario, consulte con el administrador.

Host: Es el nombre del servidor donde est funcionando la base de datos. Port: Es el puerto donde la base de datos escucha los pedidos de informacin. Database: Es el nombre de una Database y/o Schema definido en la base de datos. Dentro de la base de datos se crean particiones llamadas Database y/o Schema y dentro de estas particiones se crean las tablas, campos, claves, etc. Cuando nos conectamos a la base de datos debemos especificar con cual particin deseamos conectarnos. Esto no quiere decir que no tengamos acceso a los datos que se encuentran en otras particiones, ya que el acceso esta definido por el perfil del usuario. User: Es un usuario definido en la base de datos. Si no se trata de la base de datos de produccin, es deseable que el usuario tenga accesos para creacin, modificacin o borrado de Database, Schema, Tablas, Campos, Indices, Restricciones. Password: Es el password del usuario creado en la base de datos.

Driver JDBC: Para conectarse con la base de datos es imprescindible contar con el driver correspondiente. El driver es un archivo con extensin jar y es proporcionado por el fabricante de la base de datos. Normalmente, se encuentra disponible al instalar la base de datos en alguna subcarpeta relacionada a java o jdbc. Si no lo encuentra puede hacer download del sitio del fabricante. El driver (archivo jar) se debe copiar en la carpeta /myAppGen/extLib Para las Bases de Datos (mySql, Oracle, SqlServer, DB2, Informix), podemos seleccionar el driver de la lista que nos propone los valores estndar de los parmetros de conexin, pero lastimosamente, esto no garantiza que se pueda establecer la conexin, ya que el valor de estos parmetros depende de lo que fue especificado en el momento de la instalacin de la base de datos. Si no consigue establecer la conexin, asegrese de que el driver (archivo jar) est copiado en la carpeta /myAppGen/extLib, lea la documentacin del driver y asegrese que est utilizando los parmetros correctos: Driver, Host, Port, Database, Url, User, Password.

El DatabaseUrl, puede ser modificado presionando ; adems, usted puede escribir en forma genrica utilizando las etiquetas <HOST>, <PORT>, <DB> como variables de sustitucin. Observacin: Establecer la conexin con alguna base de datos es imprescindible para iniciar la construccin de la aplicacin. Si no consigue hacerlo, consulte con el profesional encargado de la administracin de la Base de Datos. De todos modos, puede iniciar el desarrollo utilizando la conexin con la base de datos mySql que trae por default cuando se crea el diccionario.

Definicin del Modelo Lgico de Datos Despus de crear un nuevo diccionario, se despliega la pantalla que se muestra en la figura de abajo. Para continuar con el desarrollo, debemos definir el modelo lgico de datos (tablas, campos, claves, relacionamientos). Esto podemos hacerlo de tres maneras distintas: registro manual , importacin de la base de datos y por ltimo copiar de otro diccionario y pegar en el diccionario actual. A continuacin describimos estos tres mecanismos:

1. Registro Manual Se utilizan las interfases visuales del sistema para el registro de las propiedades de Database, Files, Fields, Keys y Relations. Para registrar estos elementos debemos seleccionar el Tab correspondiente y oprimir los botones , , . Database: En las Bases de Datos, las tablas, campos, claves y relacionamientos se encuentran dentro de particiones llamadas Schemas y/o Database; por lo tanto, para registrar estos elementos, primero debemos crear la definicin lgica de estas particiones. Para hacerlo, seleccionar el nombre del diccionario en el panel de la izquierda y presionar

El nombre de esta particin es agregado automticamente al nombre fsico de las tablas. Para modificarlo se selecciona la particin y se oprime el botn ; modificado el nombre de la particin, se modifica tambin el prefijo del nombre fsico de todas las tablas de esa particin; sin embargo, para borrar la particin, primero se deben borrar todas las tablas de esa particin.

Definicin de Tablas Para registrar manualmente una nueva tabla, debemos seleccionar la base de datos en el panel de la izquierda, el tab Files en el panel de la derecha y luego oprimir el botn , desplegndose la pantalla que se muestra en la figura de abajo.

A continuacin pasamos a describir los atributos: Para todos los elementos de la base de datos (Files, Fields, Keys), el sistema maneja dos nombres, el nombre fsico y el nombre lgico. El nombre fsico es el nombre que tiene el elemento en la base de datos, mientras que el nombre lgico es el nombre con el que nos referimos a ellos en los programas de la aplicacin. Se crea esta dualidad porque muchas veces los administradores de las bases de datos utilizan convenciones tcnicas que hacen que el nombre fsico sea complejo y sobre todo inexpresivo. - Table Name: Es el nombre lgico de la tabla, el que utilizamos en todos los programas de la aplicacin para referirnos a ella, e incluso lo utilizamos al escribir las sentencias SQL. Existen algunas reglas para escribir el nombre lgico, tales como: no puede haber nombres lgicos repetidos en el diccionario; ellos deben empezar con minsculas y no deben tener espacios o caracteres especiales. (Usted no necesita preocuparse en memorizar estas reglas, ya que el sistema se encargar de avisarle si no se cumplen.) - Prefix: Es el alias de la tabla. En las sentencias SQL, cuando se manejan varias tablas, es necesario cualificar a los campos para aclarar la tabla a la que pertenecen. Esto se hace utilizando el Prefix. En myAppGen, todos los campos estn compuestos por el Prefix de la tabla seguido del nombre del campo; ejemplo: cus.name, es el campo name de la tabla Customer cuyo Prefix es cus. - Database Table Name: Es el nombre fsico de la tabla definido en la base de datos, siguiendo reglas del administrador de la base de datos. Como en los programas se utiliza el nombre lgico, y la base de datos solo entiende el nombre fsico, el sistema traduce las sentencias SQL, pasando de nombre lgico a nombre fsico. - Database Driver: Indica la Base de Datos (mySql, Oracle, SqlServer, Db2, Informix, etc) en la que se encuentra la tabla. Especficamente, es la conexin con la base de datos.

Entity Package: Es buena prctica agrupar los programas por funcionalidad, tales como, Contabilidad, Compras, Ventas, DatosMaestros, etc. El Package, asociado a las tablas, nos permite agrupar los programas creados con esas tablas en subcarpetas o Packages. Config Table (one record, global data): Resulta muy til cuando se necesitan variables globales que deben estar disponibles en toda la aplicacin. Adems tiene la ventaja que sus valores pueden ser grabados. Se trata de una tabla con un solo registro en donde las variables globales son los campos de la tabla. Embed code enabled: Habilitando esta propiedad podemos insertar cdigos fuentes Embed Code en diversos puntos dentro del objeto Entity que representa a la tabla as como tambin en todos los Browse(s) y Form(s) construidos con esa tabla como archivo principal. Si el cdigo fuente no es aplicable en algn Browse o Form, se podr deshabilitarlo especficamente en ese programa editando sus propiedades. Cancel instead of delete record: Al habilitar esta opcin, la operacin de borrar el registro se transforma en anulacin. Esto es especialmente til en el caso de facturas y otros documentos emitidos que por disposiciones legales no pueden ser borrados; estos documentos slo pueden ser anulados. El proceso de anulacin aplica todas las reglas de negocio correspondientes al borrado, dejando el registro marcado como anulado. Con esta propiedad usted automatiza el proceso de anulacin de registros y se evita todo el costo de programacin. Para la implementacin, es imprescindible la definicin de un campo con validacin del tipo true/false. El valor true, significar que el registro fue anulado. Record change locked: Indica que deseamos inhibir la modificacin de un registro. Por ejemplo: si la factura fue emitida, entonces ya no puede ser modificada. Es imprescindible la definicin de un campo con validacin del tipo true/false. El valor true, significar que el registro no puede ser modificado. Record delete locked: Semejante al atributo anterior, permite inhibir el borrado de un registro; en el caso de la factura emitida la misma queda llaveada y ya no puede borrarse. Es imprescindible la definicin de un campo con validacin del tipo true/false. El valor true, significar que el registro no puede ser borrado. Enable Export Data to txt file: permite habilitar que los datos de esta tabla puedan ser exportados. Enable Import Data to txt file: habilita la importacin de datos a esta tabla. Si al crear la aplicacin se habilita en "Extension modules" la opcin de Exportacin/Importacin, entonces el generador construir los programas necesarios para exportar/importar todos los archivos que hayan sido habilitados. Menu Text: Cuando desde el men se llama a un programa que tiene como archivo principal a esta tabla, el generador utilizar este texto para crear el men Item. Lo recomendable es simplemente utilizar el nombre de la Entity (Cliente, Producto, Vendedor, Factura, Stock, etc.) Button Icon: Es el cono que tendr el botn de navegacin hacia los programas que tengan esta tabla como archivo primario (Browse, Report). Button Text: Es idntico a Men Text, pero aplicado a botones de navegacin. Button ToolTips: Es el tip que se despliega al poner el mouse sobre el botn.

En realidad, al digitar el nombre lgico, el sistema propone el valor de todas las otras propiedades, por lo que usted puede simplemente aceptar o corregir las que fuesen necesarias.

Al presionar tab se completan los dems atributos

Al oprimir Ok se registra la tabla y automticamente el sistema selecciona el tab Fields y pasa al registro de los campos de la tabla. Definicin de Campos

A continuacin pasamos a describir los atributos. Al igual que las tablas, tambin los campos tienen nombre lgico y nombre fsico. El nombre lgico es el utilizado en la aplicacin y el fsico es el verdadero nombre del campo en la base de datos. - Field Name: Es el nombre lgico del campo utilizado en toda la aplicacin, incluso al escribir las sentencias SQL. Existen algunas reglas, tales como: el nombre lgico debe empezar con minscula, no puede tener espacios en blanco o caracteres especiales y no puede estar repetido en la misma tabla.

Db Field Name: Es el nombre fsico del campo en la base de datos, que debe seguir las reglas de la base de datos que est siendo utilizada. El mayor cuidado que debemos tener es el de evitar utilizar nombres que podran ser palabras reservadas en la base de datos, tales como SUM, Date, Time, Select, etc. Aunque el sistema hace estas verificaciones, no se puede garantizar que todas las palabras reservadas de todas las bases de datos estn contempladas. Si utiliza alguna palabra reservada, ocurrir un error al crear fsicamente la base de datos. Prompt Text: Es el ttulo del campo que se utiliza al construir las pantallas de entrada de datos. Aunque puede estar compuesto por varias palabras, debe ser corto y conciso. Recuerde que cuanto ms largo sea el prompt, menos longitud podr tener el campo de entrada de datos. Column Heading: Es el ttulo del campo que se utiliza en las columnas de las listas y en las columnas de los informes. Si el dato es corto, trate de utilizar un ttulo corto, ya que el ancho de la columna es el mayor valor entre el ancho del ttulo y el ancho del dato. Tips: Es el mensaje que se despliega al poner el Mouse sobre el campo. Data Type: Es el tipo de datos que puede ser: String, Number, Date-Time, Date, Time, Memo, Image. Cuando se crea el campo en la base de datos, se reduce al tipo de dato ms conveniente; cuando se importa de la base de datos, siempre se reduce a uno de los siete tipos mencionados. Data Size: Es la longitud del dato; la longitud mxima vara de acuerdo a la base de datos que se est utilizando. La mxima longitud del campo numrico en una base de datos puede ser de 17, en otras de 30 y en otras de 38. En el caso de Date-Time, Date, Time, no es necesario indicar la longitud. Dec.: Es la cantidad de decimales que tendr el campo numrico. Data Size es la longitud total e incluye los decimales. As, en un campo numrico con Data Size = 4 y Dec.=1, podr tener tres enteros y un decimal. Picture: Es el formato de impresin/display del campo. Para campos del tipo fecha, es recomendable dejar el valor estndar, entonces el sistema utiliza el formato definido en la configuracin regional del computador. Include as Browse Column: Si se desmarca, el campo no ser incluido como columna en la propuesta de Browse construida por el generador. Usted tendr que agregarlo explcitamente en la pantalla que lo necesite. Include as Form Field: Si se desmarca, el campo no ser incluido en la propuesta de Form construida por el generador, a no ser que el campo sea requerido o sea un componente de la clave fornea de otro archivo. En estos casos, de todos modos ser incluido en el Form de actualizacin de datos. Validity Check: Las validaciones pueden ser: No Check, sin validacin; No Blank, no permite dejar el campo sin cargar algn valor; Range, el valor debe estar dentro del rango definido; True/False, puede tener slo dos valores y el componente visual utilizado al generar la aplicacin es el CheckBox; List Values, el valor debe ser uno de los definidos en la lista y el componente visual es el ComboBox. Type: Es el tipo de componente visual que ser utilizado al generar la aplicacin. Dependiendo de la validacin puede ser Entry, CheckBox, ComboBox o del tipo formula. Las frmulas pueden ser del tipo: o formulaCurrent: expresin de campos del mismo registro. o formulaUp: expresin de campos de su archivo hijo (con cada operacin en el archivo hijo, se actualiza la frmula en el archivo padre)

o formulaDown: expresin de campos de su archivo padre (con cada operacin en el archivo padre se actualiza la frmula en todos sus registros hijos) o formulaEntry: conjunto de expresiones que pueden utilizar indistintamente campos del mismo registro o de otros archivos (padres o de configuracin). El contenido de la formulaEntry se ejecuta cada vez que el campo que posee la frmula gana o pierde foco. De esta manera, usted puede definir el modelo lgico de datos con campos del tipo formula y obtener el mismo comportamiento que una planilla de clculo. Los programas slo se encargarn de actualizar los registros, y todas las operaciones entre archivos se realizarn automticamente. - Caps: Puede ser Normal, Uppercase, Lowercase - Type: Puede ser Normal, ReadOnly - Initial Value: Es el valor con que es inicializado este campo en el formulario de carga de datos al crear un nuevo registro. Despus de haber digitado el nombre lgico del campo, el sistema carga automticamente todas las dems propiedades. Al oprimir el botn OK, se agrega el campo a la tabla y se vuelve a desplegar la misma pantalla para seguir agregando otros campos. Si desea dejar de agregar campos, presione el botn Cancel. Para continuar agregando campos a una tabla, seleccione la tabla en el panel de la izquierda, luego seleccione el Tab Fields, y oprima el botn correspondiente. Al definir campos de la clave fornea, o campos que deben ser idnticos a otros ya definidos en otras tablas, se puede crear una referencia al campo de la tabla original. En este caso, los atributos se cargan automticamente. La ventaja no es solamente la carga de los atributos, sino principalmente la garanta que al modificar el campo original, se modifiquen los campos referenciados en las dems tablas. Para crear una referencia a un campo, se oprime el botn que se indica en la figura y se selecciona el campo original.

Para sincronizar las modificaciones podemos utilizar las funciones de Distribute y Refresh. La funcin Distribute toma las propiedades del campo y las distribuye a todos los campos referenciados, mientras que la funcin Refresh trae las propiedades al campo seleccionado.

Las funciones Distribute y Refresh pueden ser aplicadas a nivel de archivos o campos. Por ejemplo, se selecciona el archivo Country, se oprime right clic y se selecciona Distribute. En este caso, el archivo Country distribuye los atributos de los campos referenciados a otros archivos. Antes de distribuir se despliega la pantalla que se muestra en la figura, donde se pueden seleccionar los atributos que se desean distribuir, e incluso campo a campo se puede decidir si se aplica la distribucin o se pasa al siguiente campo.

Definicin de Claves Para definir las claves, en el panel de la izquierda se selecciona el archivo, en el panel de la derecha se selecciona el Tab Keys y luego se oprime el botn , desplegndose la pantalla que se muestra en la figura de abajo.

Para que los archivos puedan ser utilizados, deben obligatoriamente tener definida su clave primaria, en caso contrario, no se podr construir la aplicacin. Si el ltimo componente de la clave primaria es numrico, la clave podr ser definida como Auto Number; en este caso, la aplicacin agregar el algoritmo necesario para auto numerar este campo, cada vez que se agreguen registros a la tabla. Definicin de Relaciones Para definir las relaciones, en el panel de la izquierda se selecciona el archivo, en el panel de la derecha se selecciona el Tab Relations y luego se oprime el botn , desplegndose la pantalla que se muestra en la figura de abajo.

Cardinalidad del relacionamiento

Archivo destino

Select Country Fields

Select City Fields

Observacin: Para poder construir las aplicaciones con myAppGen, es fundamental la definicin correcta y completa de los relacionamientos; myAppGen utiliza el modelo relacional para que sus templates puedan construir la aplicacin. La definicin incorrecta o incompleta llevar necesariamente a la construccin incorrecta o incompleta de la aplicacin. Es importante aclarar que no es obligatorio crear los relacionamientos fsicamente en la base de datos, pero s deben estar definidos en el diccionario. Definicin de Frmulas Los campos tipo frmula se calculan automticamente a medida que se cargan, modifican o borran los datos en las tablas. De esta manera, los programas slo se encargarn de actualizar los registros, y todas las operaciones entre archivos se realizarn automticamente. Una frmula puede ser escrita en funcin al resultado de otra frmula; en este caso, debemos tener el cuidado de ordenar los campos en el orden en que deben ejecutarse las frmulas. Las frmulas se escriben siguiendo la sintaxis del lenguaje JAVA; es ms, se puede escribir todo un algoritmo en lenguaje JAVA para evaluar su resultado. FormulaCurrent: expresin de campos del mismo registro deben ser del tipo (campo = expresin); no puede ser acumulativa (campo += expresin), (campo -= expresin). Por medio de una formulaCurrent tambin podemos cambiar las siguientes propiedades de los campos: Enabled, Editable, Focusable, Foreground, Background, Font, Icon. O inclusive indicar la inhabilitacin de las acciones de Add, Change, Delete en el formulario en el cual opera esta frmula.

A veces es necesario que el campo sigua permitiendo la entrada de datos y utilizar la frmula para modificar otras propiedades de ese campo o de otros campos del registro. En este caso simplemente se desmarca la opcin de Display only y se escribe la frmula correspondiente.

FormulaUp: Es una expresin de campos de su archivo hijo (con cada operacin en el archivo hijo, se actualiza la frmula en el archivo padre); deben ser del tipo acumulativo (campo += expresin) (campo -= expresin). En este caso se debe escribir la frmula para Insert y la operacin inversa que se utilizar para Delete: si por Insert, sumamos, por Delete, debemos restar. Cuando se escribe la frmula que se aplicar por Insert, el generador deduce la frmula por Delete, y la escribe automticamente. En casos complejos, esto no es posible y usted tendr que escribir ambas expresiones. Para esto, en el combo box seleccione Free.

formulaDown: expresin de campos de su archivo padre (con cada operacin en el archivo padre, se actualiza la frmula en todos sus registros hijos); debe ser del tipo (campo = expresin) y no puede ser acumulativa (campo += expresin), (campo -= expresin).

formulaEntry: conjunto de expresiones que pueden utilizar indistintamente campos del mismo registro o de otros archivos (padres o de configuracin). El contenido de la formulaEntry se ejecuta cada vez que el campo que posee la frmula gana o pierde foco. Tambin podemos cambiar las siguientes propiedades de los campos: Enabled, Editable, Focusable, Foreground, Background, Font, Icon.

Funcionamiento de Campos Frmulas En la figura de abajo se muestra como funciona el proceso automtico de actualizacin de los campos frmulas. En general, podemos decir que al actualizar una tabla, se produce una cadena de actualizaciones en las otras que dependen de ella. As, si actualizamos Item, se actualizan Order y Stock. Pero, por el hecho de actualizar Order, se actualizan Customer y Vendor. Todo este proceso se realiza automticamente, cubriendo todas las variaciones que podran surgir al agregar, modificar o borrar registros de cualquier tabla. Imagnese el complejo proceso de actualizaciones necesario al editar un tem y modificar el cdigo del producto, la cantidad, y el precio; pues bien, todo el proceso para recalcular estos valores se realizar automticamente.
Country

City

ProductGrp

Vendor

Customer

Product

Order

Stock

Item

Formula Up: Al agregar, modificar o borrar Item, se actualizan Order y Stock. Al actualizar Order, se actualizan Customer y Vendor. Formula Current: Al agregar Item, calcula otros campos Item. Formula Down: Al modificar en Order el campo de frmula Down, se actualizan todos sus tems, y por cada item se vuelven a actualizar Order y Stock y a su vez, al actualizar Order se actualizan Customer y Vendor. Evidentemente, cuando el modelo de datos tiene muchas frmulas, podra ser difcil saber como se calcula un campo; sin embargo, es muy fcil gracias a la informacin disponible en el Tab View Formulas. En esta pantalla se muestran todos los archivos que tienen campos frmulas y para cada uno de ellos, toda la cadena de actualizacin. As, al seleccionar Customer, podemos ver que OrderItem, actualiza a Order y Order actualiza a Customer. Al seleccionar el archivo, en el panel de abajo se muestran los campos frmulas y el archivo que los actualiza; a su vez, para cada campo frmula, en el panel de abajo se muestra la frmula.

Secuencia de actualizacin Campos frmulas del archivo seleccionado

Frmula del campo seleccionado

2. Importacin de la Base de Datos La segunda manera de construir el modelo lgico de datos es mucho ms rpida y consiste en la importacin de la base de datos. En este caso, el generador lee los metadatos de la base de datos y con esta informacin, crea la definicin lgica de las tablas, campos, claves y relaciones. Entonces solamente tenemos que verificar el modelo lgico, y si es necesario, corregir los atributos, agregar validaciones y probablemente los campos del tipo frmulas, ya que estos no se encuentran definidos en la base de datos. Para importar se presiona el botn .

Conexin con la base de datos Tablas seleccionadas Tablas disponibles en la conexin elegida

Tablas Importadas

3. Copia de otro Diccionario (External Copy) Tambin se puede definir el modelo lgico de datos copiando las definiciones de otros diccionarios definidos anteriormente. Aqu la ventaja es que los campos tienen correctamente definidos sus atributos, validaciones y frmulas.

Ya tenemos definidos los archivos Country y City, y ahora vamos a agregar el resto.

Como se puede ver en la figura de arriba, se seleccionan los archivos y luego se presiona el botn copy. Por ltimo, se selecciona el Tab Files y se presiona el botn paste .

Al copiar los archivos, tambin se copian los campos, las claves y las relaciones; incluso, las relaciones con los archivos que ya existan, en este caso, Country con Customer. Siguiendo un procedimiento similar, tambin se pueden copiar las definiciones de los campos.

Observacin: Como se puede ver en la figura de arriba, al copiar los campos, se copian todos sus atributos, inclusive las frmulas. Usted debe verificar y eventualmente corregir o borrar las frmulas, ya que pueden contener referencias a campos o archivos que no existen en su diccionario.

Definicin del Modelo Fsico de Datos A partir del modelo lgico de datos se generan y luego se ejecutan las sentencias SQL que crean las tablas, campos, ndices y restricciones en la base de datos (mySql, Oracle, Db2, SqlServer, Informix, etc). El botn crea una nueva estructura vaca de datos. Si ya existe, borra la estructura anterior con todos sus datos y luego la vuelve a crear con la nueva definicin. El botn actualiza la estructura. Para establecer la sincronizacin entre los datos del diccionario y la base de datos, se utiliza el nombre fsico del componente; entonces, si se lo encuentra en la base de datos, se lo modifica, dejndolo igual al del diccionario; si no se lo encuentra, se crea el componente con la definicin contenida en el diccionario. Con este proceso no se borran los campos que existen en la base de datos y no existen en el diccionario; tampoco se borran los datos que se encuentran en la base de datos, sino simplemente se modifica la estructura, haciendo que contenga la definicin del diccionario. El botn borra la estructura en la base de datos con todo su contenido.

Con los botones Select y UnSelect, puede seleccionar las sentencias SQL que desea ejecutar. Si no tiene los permisos necesarios en la base de datos para ejecutar estas sentencias, puede exportarlas a un archivo y enviar ste para que lo ejecute el administrador de la base de datos. Observacin: Las sentencias SQL no son tan estndar como deberan; las bases de datos tienen distintos tipos de datos, distintas palabras reservadas e incluso distintas sintaxis para escribir la misma sentencia; myAppGen ha sido probado con mySql, Oracle, Db2, SqlServer, Informix y se han ajustado estas diferencias. Para otras bases de datos, se generan las sentencias con la sintaxis estndar, por lo que estamos expuestos a pequeas diferencias que podran ocasionar errores de sintaxis al ejecutar las sentencias. En este caso, exporte la definicin, edite el archivo, haga las correcciones necesarias y luego ejecute desde la consola de administracin de la base de datos.

Tablas del Sistema Las aplicaciones construidas con myAppGen, podrn estar integradas con los mdulos de seguridad, auditora, correo, anexo de documentos, consola de administracin de usuarios, etc. Para que esto ocurra, usted no tendr que construir estos mdulos, ni siquiera tendr que disear sus archivos. Simplemente los habilitar y ellos estarn totalmente integrados a su aplicacin, con todas las funcionalidades, como si hubiesen sido construidos especialmente para su aplicacin. Para que esto sea posible, el generador necesita la definicin de varias tablas, campos y relaciones. Cuando se crea un nuevo diccionario de datos, aparentemente se encuentra vaco, pero no es as, ya que el diccionario tiene la definicin de todas las tablas del sistema necesarias para la implementacin de estos mdulos.

En System, tenemos varias tablas, campos

Aparentemente vaco, sin tablas, campos, etc

Las tablas del sistema estn disponibles en el diccionario, se puede acceder a su definicin seleccionando System Tables. Pero no slo deben estar disponibles en el modelo lgico, adems deben estar creadas fsicamente en la base de datos utilizada.

Creacin fsica de las tablas en la base de datos

Observacin: Si usted est utilizando la versin de desarrollo de la base de datos mySql instalada por myAppGen, entonces ya estn creadas todas las tablas y adems estn cargados los datos para configurar los mdulos. En este caso, no debe crear las tablas, porque borrar todos los datos y tendr que configurar de nuevo todos los mdulos.

Tratamiento de Datos Siempre es til ver el contenido e incluso poder agregar, modificar o borrar datos en las tablas. Para esto podemos utilizar el Tab Data, en donde, al seleccionar la tabla en el panel de la izquierda, se despliega la lista de los datos de la tabla en el panel de la derecha. Adems, tenemos disponibles los botones para agregar, modificar y borrar registros, as como tambin para emitir informes.

Como estamos trabajando con un generador de aplicaciones, entonces no nos debe extraar que las pantallas de carga de datos sean mucho ms sofisticadas que las que habitualmente encontramos en los utilitarios que nos permiten acceder a los datos de la base de datos. As, en estas pantallas las validaciones estn activas, los botones de lookup despliegan la lista correspondiente para seleccionar el registro, los campos frmulas estn en funcionamiento y los campos memos se encuentran disponibles en Tabs independientes.

Memos

Lookup button

Formulas

El nivel de sofisticacin de las pantallas de carga de datos es tal que incluso las funcionalidades ms complejas definidas para una tabla se encuentran disponibles. As tenemos las opciones de cancelacin y llaveo de registros, clculo de las frmulas e incluso la ejecucin del cdigo fuente asociado a las Entitys, Browse, Form y Reports, funcionan exactamente igual que en las aplicaciones generadas.

Por otra parte en el ejemplo de la siguiente figura podemos observar que una tabla definida como de configuracin de parmetros de la aplicacin puede ser actualizada directamente desde el diccionario, igual que cualquier otra tabla.

En el Tab Data las funciones de configuracin e impresin, son semejantes a las que se utilizan en el proceso de definicin de la aplicacin, por lo que las veremos detalladamente ms adelante. Por ahora, lo que sabemos es que podemos imprimir informes y configurarlos para seleccionar las columnas, definir filtros, cortes de control, con subtotales y total general.

Exportacin de Datos Muchas veces es til exportar los datos de las tablas para utilizarlos externamente, o para volver a importarlos en otra base de datos. El proceso de exportacin es sumamente simple: se marcan todos los archivos que se desean exportar y luego se presiona el botn Export de la parte inferior de la pantalla.

Los campos normales se exportan en archivos de texto, con extensin txt. En el archivo txt, el primer rengln corresponde al nombre lgico de los campos y los siguientes renglones son los datos; los campos se encuentran separados por el caracter TAB. Los campos memos y binarios, se encuentran agrupados en carpetas con el nombre del archivo al que pertenecen y dentro de las carpetas, cada campo memo se encuentra en archivos independientes. El nombre del archivo es el nombre del campo, seguido de la clave primaria del registro. Los campos memos tienen extensin html, mientras que los campos binarios tienen extensin binary.

Campos memos y binarios Campos normales en archivos txt

Importacin de Datos La importacin toma como fuente de datos a los archivos exportados o archivos con las mismas caractersticas que los utilizados en la exportacin; esto es, los campos normales se encuentran en archivos con el nombre lgico de la tabla y extensin txt, el primer rengln corresponde al nombre lgico de los campos y en los siguientes renglones se encuentran los datos separados por el caracter TAB. Los campos memos y binarios, se encuentran agrupados en carpetas con el nombre del archivo al que pertenecen y dentro de estas carpetas, cada campo memo se encuentra en archivos independientes. El nombre del archivo es el nombre del campo, seguido de la clave primaria del registro. Los campos memos tienen extensin html, mientras que los campos binarios tienen extensin binary.

El proceso de importacin es sumamente simple, se marcan todos los archivos que se desean importar y luego se presiona el botn Import de la parte inferior de la pantalla. Para importar se tienen tres opciones, que pueden marcarse independientemente. Esto nos permite: Borrar, borrar e insertar, insertar, insertar y actualizar, y slo actualizar. Al realizar la importacin, el sistema tiene en cuenta las relaciones entre los archivos, as, cuando borra los registros, primero lo hace en las tablas hijos y luego en las tablas padres, mientras que al insertar, primero lo hace en las tablas padres y despus en las tablas hijos. Si ocurre algn error durante la importacin, el sistema revierte toda la transaccin y deja los archivos como se encontraban antes de iniciar la importacin. El proceso de exportacin e importacin de datos es especialmente til cuando se necesita migrar datos entre bases de datos distintas. Supongamos que tenemos los datos en mySql y necesitamos crear las mismas tablas, con los mismos datos en DB2. Entonces podemos proceder de la siguiente manera: 1. En mySql exportamos todos los datos. 2. Creamos la conexin con la base de datos DB2. 3. Modificamos todas las tablas asignando el driver DB2. 4. Creamos el modelo fsico de datos en DB2 5. Importamos los datos. A continuacin mostraremos detalladamente como se realiza este proceso.

1. En mySQL exportamos todos los datos.

2. Creacin de la Conexin con la Base de Datos DB2

3. Modificamos todas las tablas asignando el driver DB2. Seleccionar todas las tablas, presionar , seleccionar el checkBox Database, seleccionar IBM_DB2

4. Crear Modelo Fsico de Datos en DB2

5. Importar los Datos Se marcan todas las tablas y se oprime el botn Import.

Observacin: En DB2, los caracteres acentuados consumen dos caracteres. Esto puede ocasionar el error que se muestra en la figura. Tal vez se pueda corregir esta anomala, eligiendo otro caracter set al configurar la base de datos DB2. Para ver los datos importados, podemos seleccionar la tabla y seleccionar el tab Data.

Impresin del modelo lgico de datos Se puede imprimir el listado de las tablas, campos, claves y relaciones, seleccionando el Tab correspondiente y presionando el botn .

Lista de Files

Lista de Fields: Seleccionar el Tab Fields y presionar el botn .

You might also like