< Anterior | Siguiente >

Lección 3: Configuración de los proyectos y utilización de la característica de recuperación de SQL EGL

Antes de escribir la lógica, cree dos proyectos EGL, así como un componente de registro que se base en la tabla de base de datos.

Una aplicación EGL está organizada en uno o varios proyectos, cada uno de ellos es una carpeta física en el espacio de trabajo. Un proyecto contiene una carpeta fuente EGL que se le proporciona al usuario y esa carpeta contiene uno o varios paquetes, que a su vez contienen archivos fuente EGL. Esta jerarquía es básica para su trabajo en EGL: un proyecto, después una carpeta fuente EGL, después un paquete con archivos fuente EGL.

Los archivos fuente EGL incluyen componentes EGL, que son definiciones de tipo que crea el usuario. Por ejemplo, un componente Servicio contiene lógica y un componente Registro puede ser la base de una variable que el usuario declarara en el componente Servicio.

Los paquetes son importantes porque separan componentes en distintos contextos o espacios de nombres:
  • Un nombre de componente puede estar duplicado en dos paquetes distintos, y cualquier código fuente EGL puede hacer referencia a cada componente de forma precisa. La principal ventaja de los espacios de nombres es que diferentes equipos pueden desarrollar diferentes componentes EGL sin provocar colisiones de nombres.
  • Cada nombre de componente de un determinado paquete es único en ese paquete:
    • Un componente de un paquete puede hacer referencia fácilmente a otro componente del mismo paquete especificando el nombre del componente. Por ejemplo, aquí encontrará una declaración de un registro que se basa en el componente Registro MyRecordPart:
      myRecord MyRecordPart{};
    • Un componente de un paquete también puede hacer referencia a un componente en un segundo paquete indicando el nombre del paquete y el nombre del componente, o mediante un acceso directo que implique importar el componente.

Un proyecto puede hacer referencia a los componentes de un segundo proyecto, pero solamente si la vía de acceso de construcción de EGL del proyecto al que se hace referencia identifica el proyecto en cuestión. De nuevo, en esta guía de aprendizaje encontrará ejemplos. Sin embargo, en todos los casos, evite utilizar el mismo nombre de paquete en distintos proyectos porque si lo hiciera podría tener problemas con la resolución de nombres.

La siguiente tarea en esta guía de aprendizaje es crear los proyectos siguientes:
PaymentService
Conserva un componente Servicio EGL y las definiciones relacionadas
PaymentClient
Conserva los manejadores de UI enriquecida y las definiciones relacionadas

Puede incluir todo el código en un simple proyecto pero la separación que aquí se muestra le permitirá desplegar fácilmente los dos tipos de código de distintas formas.

Los componentes de un proyecto pueden utilizar componentes de un proyecto distinto. EGL utiliza una vía de acceso de construcción para buscar las referencias no resueltas. Más adelante en esta lección, añadirá el proyecto PaymentService a la vía de acceso de construcción para el proyecto PaymentClient.

Creación del proyecto PaymentService

Para crear un proyecto EGL que contenga el servicio:

  1. Vuelva a la perspectiva EGL pulsando el botón EGL en la esquina superior derecha del entorno de trabajo.
    El botón Perspectiva EGL está junto al botón Perspectiva de datos.
  2. Pulse Archivo > Nuevo > Proyecto EGL o pulse el icono Proyecto EGL nuevo en la barra de menús.
    El icono del proyecto nuevo es el primero de cuatro iconos que están en el segundo grupo de iconos de la barra de menús.
  3. En la ventana Proyecto EGL nuevo, especifique la información siguiente:
    1. En el campo Nombre de proyecto, escriba el nombre siguiente:
      PaymentService
    2. En la sección Tipos de proyecto EGL, pulse Proyecto general.
      La ventana Proyecto EGL nuevo con el nombre de proyecto "PaymentService."
    3. Pulse Siguiente.
  4. En la segunda ventana Proyecto EGL, los valores predeterminados que proporciona EGL deberían ser correctos. Compruebe la información siguiente:
    1. La Plataforma de tiempo de ejecución destino es Java. Este valor indica que EGL genera código fuente Java procedente del componente Servicio EGL.
    2. En Opciones de descriptor de construcción, el botón de selección Crear un descriptor de construcción estará marcado. Los descriptores de construcción controlan el proceso de generación. Puesto que está creando un proyecto independiente para el servicio, puede utilizar el descriptor de construcción predeterminado que EGL crea.
  5. Pulse Finalizar.
EGL crea un proyecto denominado PaymentService. Fíjese en las carpetas del directorio:
EGLSource
Coloque aquí los paquetes y los archivos fuente.
EGLGen/JavaSource
EGL coloca aquí los archivos Java que genera.
JavaSource
Coloque aquí los archivos fuente Java personalizados. Estos archivos no se sobrescriben durante el proceso de generación.
Biblioteca del sistema JRE
EGL utiliza esta carpeta para los archivos JAR que admiten Java Runtime Environment.
La vista Explorador de proyectos muestra el proyecto y las carpetas nuevos.

Creación del proyecto PaymentClient

Un proyecto de UI enriquecida de EGL incluye muchos accesos directos para agilizar el desarrollo de una interfaz de usuario para la web.

Para crear un proyecto de UI enriquecida de EGL:

  1. Pulse el icono Proyecto EGL nuevo en la barra de menús.
  2. En la ventana Proyecto EGL, especifique la información siguiente:
    1. En el campo Nombre de proyecto, escriba el nombre siguiente:
      PaymentClient
    2. En Tipos de proyecto EGL, pulse Proyecto de UI enriquecida.
    3. Pulse Siguiente.
  3. En la segunda ventana Proyecto EGL, los valores predeterminados que proporciona EGL deberían ser correctos. Compruebe la información siguiente:
    1. La opción Utilizar la ubicación predeterminada para el proyecto está seleccionada.
    2. La lista Bibliotecas de widgets contiene los proyectos siguientes:
      • Widgets de IU enriquecida de EGL
      • Widgets Dojo de EGL
    3. En el grupo Características de proyecto EGL, la opción Crear un descriptor de despliegue EGL está seleccionada.
  4. Pulse Siguiente.
  5. En la página de los valores de construcción, seleccione PaymentService.
    Se ha seleccionado el proyecto PaymentService

    El proyecto PaymentService se añade a la vía de acceso de construcción para el proyecto que se está creando de forma que el manejador de UI enriquecida pueda utilizar componentes que se han definido en PaymentService.

  6. Pulse Finalizar.
EGL crea un proyecto denominado PaymentClient y añade proyectos de soporte al espacio de trabajo para la UI enriquecida, los widgets Dojo y la biblioteca de tiempo de ejecución Dojo. Además de los directorios que ha creado EGL para el proyecto General, un proyecto de UI enriquecida incluye el directorio siguiente:
WebContent
Contiene los archivos de soporte como, por ejemplo, hojas de estilo en cascada (CSS) e imágenes.
La vista Explorador de proyectos muestra el proyecto y las carpetas nuevos.
La primera vez que añade un proyecto de UI enriquecida al espacio de trabajo, se añaden otros tres proyectos automáticamente:
  • com.ibm.egl.rui
  • com.ibm.egl.rui.dojo.runtime.local
  • com.ibm.egl.rui.dojo.widgets

Estos tres proyectos contienen widgets y otros archivos de soporte que el usuario puede utilizar a la hora de crear una aplicación de UI enriquecida.

Edite el descriptor de construcción para el proyecto PaymentService

El archivo de construcción EGL tiene la extensión .eglbld y contiene componentes de construcción, que son definiciones XML que son entradas al generador EGL.
Un archivo de construcción normalmente incluye varios descriptores de construcción, por lo que podrá generar código EGL de varias formas. Por ejemplo, EGL ha creado los descriptores de construcción siguientes en el archivo PaymentService.eglbld:
  • PaymentServiceJavaBuildOptions
  • PaymentServiceDebugBuildOptions

Debe cambiar los descriptores de creación para el proyecto de forma que la lógica que escriba pueda acceder a una base de datos.

Para editar el descriptor de construcción:

  1. En el proyecto PaymentService, expanda la carpeta EGLSource. Efectúe una doble pulsación en el archivo PaymentService.eglbld. Se abrirá el editor Componentes de construcción.
  2. En el campo Cargar opciones de base de datos utilizando la conexión, pulse la flecha hacia abajo y seleccione Conexión a base de datos Derby.
  3. Busque la vista Esquema, que se haya de forma predeterminada en la esquina inferior izquierda del entorno de trabajo. El descriptor de construcción PaymentServiceJavaBuildOptions debería aparecer resaltado. Efectúe una doble pulsación en PaymentServiceDebugBuildOptions y repita el paso 2 para el otro descriptor de construcción, que lo utiliza el depurador EGL.
    La vista de esquema muestra los diversos descriptores de construcción del archivo de construcción.
  4. Guarde y cierre el archivo del descriptor de construcción.

Utilización de la característica de recuperación de SQL EGL para crear un componente de registro

Puede recuperar automáticamente los campos de un componente Registro que corresponda a la tabla PAYMENT de la base de datos PaymentDB. Los nombres de columna son la base de los nombres del campo en el componente Registro.
  1. Cambie las preferencias de la característica de recuperación de SQL:
    1. Desde el menú principal del entorno de trabajo, pulse Ventana > Preferencias > EGL > SQL.
    2. En el tercer grupo de opciones, Reglas de control de mayúsculas/minúsculas para la denominación de elementos de estructura, seleccione Cambiar a minúsculas y mayúscula inicial tras el subrayado. Los nombres de campo estarán en mayúsculas y minúsculas.
    3. En el cuarto grupo de opciones, Reglas de control de subrayado para la denominación de elementos de estructura, seleccione Eliminar subrayados. Los nombres de campo no incluirán los subrayados en los nombres de columna.
    4. En el último grupo de opciones, asegúrese de que se haya seleccionado Recuperar información de la clave primaria del catálogo del sistema. Uno o más campos del componente Registro corresponderán a los campos clave de la tabla SQL, lo cual resulta útil cuando se confía en el proceso predeterminado de SQL EGL.
    5. Desmarque Solicitar el ID de usuario y la contraseña SQL cuando sea necesario. Evita que se abra una ventana de diálogo cada vez que acceda a la base de datos.
    6. Pulse Aceptar.
  2. En la vista Explorador de proyectos, pulse con el botón derecho del ratón en PaymentService y, a continuación, pulse Nuevo > Registro
  3. En la ventana Nuevo registro fuente EGL, escriba la información siguiente:
    1. En el campo Nombre de archivo de origen EGL, escriba el nombre siguiente:
      ServiceRecords
      EGL añade automáticamente la extensión de archivo .egl.
    2. En el campo Paquete, escriba el nombre siguiente:
      registros
    3. Pulse Finalizar.
    EGL crea el directorio records y el archivo ServiceRecords.egl y, a continuación, abre el archivo en el editor EGL.
  4. Sustituya el contenido del archivo copiando y pegando el código siguiente:
    package records;
    
    record paymentRec type SQLRecord {tableNames = [["PAYMENT"]]}
    
    end
    Nota:
    1. La utilización de un componente Registro que se ha etiquetado como SQLRecord significa que, en el caso siguiente, el generador EGL creará código que resulte apropiado para la E/S SQL:
      • Se codifica una sentencia de E/S como, por ejemplo, add, tal como se muestra en este ejemplo:
        add mySQLRecord;
      • El registro en el que funciona la sentencia de E/S (en el ejemplo, mySQLRecord) es un registro SQL; es decir, el registro se basa en un componente Registro que está etiquetado como SQLRecord.
    2. El componente Registro SQL utiliza varias propiedades como, por ejemplo, tableNames, en muchos casos para cambiar la salida del generador EGL y así cambiar el comportamiento del tiempo de ejecución.
    3. Los nombres de tabla se especifican como matrices bidimensionales porque puede que tenga razón al especificar una etiqueta de tabla (un alias SQL), que resulta útil cuando se escriben sentencias SQL personalizadas. He aquí un valor de propiedad tableNames que incluye una etiqueta de tabla:
      tableNames=[["PAYMENT", "A"]]
    4. Puede evitar establecer la propiedad tableNames si crea un componente Registro que corresponda a una tabla de base de datos única y su este componente Registro tiene el mismo nombre que la tabla de base de datos. En esta guía de aprendizaje, el componente Registro tiene un nombre distinto y la propiedad tableNames es necesaria.
  5. Pulse con el botón derecho del ratón en cualquier lugar de la sentencia de registro y pulse Registro SQL > Recuperar SQL. EGL crea automáticamente campos para el componente Registro de acuerdo con la información que proporciona el sistema de gestión de bases de datos. El usuario ha especificado poco más que el nombre de la tabla y he aquí el resultado:
    Las declaraciones de campo se recuperan de la base de datos SQL.
  6. Cambie el tipo de amount de decimal(10,2) a money. El cambio proporciona opciones adicionales cuando arrastra y suelta el componente Registro de la vista de datos EGL a la superficie de diseño de la UI enriquecida, tal como se verá posteriormente.
  7. Cambie el tipo de fixedPayment a booleano. De nuevo, el cambio resulta útil durante una operación posterior de arrastrar y soltar.
  8. Guarde (Control-S) y cierre el archivo ServiceRecords.egl.

Punto de comprobación de lección

En esta lección, ha llevado a cabo las tareas siguientes:
  • Creación de un proyecto EGL para desarrollar un servicio de acceso a datos.
  • Creación de un proyecto EGL para desarrollar una aplicación de UI enriquecida.
  • Modificación de los descriptores de construcción en un archivo de construcción; específicamente, añadiendo información de base de datos de una definición de conexión en el entorno de trabajo.
  • Establecimiento de preferencias para la característica de recuperación SQL EGL.
  • Creación de un componente Registro, recuperando más información de una base de datos.

En la siguiente lección, va a desarrollar aplicaciones de UI enriquecida y va a ver el código de prototipo en acción.

< Anterior | Siguiente >

Comentarios