Capítulo 1. Empezando con gvHIDRA

Tabla de contenidos

1.1. Introducción
1.1.1. Acerca de este documento
1.1.2. ¿Qué es gvHIDRA?
1.1.3. Versiones
1.2. Requerimientos
1.2.1. Hardware
1.2.2. Software
1.3. Entendiendo el entorno
1.4. Instalación del entorno
1.4.1. ¿El entorno funciona correctamente?
1.5. Creando mi “hola mundo” en gvHidra

1.1. Introducción

1.1.1. Acerca de este documento

Este documento pretende ser un punto de referencia para todo aquel que se vaya a embarcar en el desarrollo de aplicaciones basadas en el framework gvHidra.

A lo largo de los diferentes capítulos, se van a ir mostrando las posibilidades del framework, las mejoras que aporta frente a otras opciones y, por supuesto, como instalar y ejecutar una primera aplicación basica. Con todo ello, se tendrá preparado un entorno de trabajo funcional para poder ir desarrollando y practicando los conceptos adquiridos a lo largo de este manual.

Este manual ha sido desarrollado por el equipo de gvHIDRA para favorecer y agilizar el acceso a cualquier usuario novel o avanzado en el desarrollo de aplicaciones basadas en este mismo framework.

Complementariamente existe una lista de distribución [http://listserv.gva.es/cgi-bin/mailman/listinfo/gvhidra_soporte] a la que cualquier desarrollador puede suscribirse y hacer llegar sus peticiones de ayuda o sugerencias para mejorar la herramienta.

Por otro lado existen unos servicios de archivo que permiten realizar búsquedas en el histórico de mensajes de la lista simulando el funcionamiento tipo "foro". Se puede acceder a las listas de gvHIDRA desde la interfaz de nabble, obtener orígenes RSS e incluso escribir a la lista.

1.1.2. ¿Qué es gvHIDRA?

gvHidra son las iniciales de Generalitat Valenciana: Herramienta Integral de Desarrollo Rápido de Aplicaciones.

Si hay que dar una explicación rápida de qué es este proyecto, podemos decir que se trata de un entorno de trabajo (framework) para el desarrollo de aplicaciones de gestión en entornos web con PHP siguiendo una guía de estilo (una guía para unificar los criterios de aspecto y usabilidad en el proceso de desarrollo de aplicaciones).

Evidentemente, esto no responde a la pregunta que da título a este punto. Por ello, vamos a explicar las motivaciones que nos llevaron a su creación y las características que cubre.

1.1.2.1. Un poco de historia

El Servicio de Organización e Informática (SOI) de la Conselleria de Infraestructuras y Transporte de la Generalitat Valenciana (CIT) ha trabajado tradicionalmente con la premisa de aumentar la productividad en base a entornos de trabajo que facilitan el desarrollo de aplicaciones. Concretamente, una de sus líneas de desarrollo, utilizaba unas plantillas en PowerBuilder que, en una arquitectura cliente servidor, reducían los tiempos de desarrollos resolviendo la parte general del problema.

Dentro de este marco, la CIT emprendió el proyecto gvPONTIS cuyo objetivo principal era migrar todos los sistemas a sistemas de código abierto. Entre otras facetas afectadas se encontraban los lenguajes de programación (se seleccionaron PHP y Java), los SGBD (se decidió fomentar el uso de Postgresql), la arquitectura (pasar al desarrollo web/tres capas)...

Con todo ello, se decidió crear un proyecto en PHP que, basándose en la guía de estilo de las aplicaciones de la CIT, aportara las mismas ventajas que las anteriores plantillas de PowerBuilder: aumentar la productiva de nuestros desarrollos.

Pero claro, a todos esos requerimientos, teníamos que añadir las dificultades que generaba el nuevo ámbito de trabajo: el entorno web (HTML, Javacript,...), el enfoque OpenSource, ... Por tanto se decidió incorporar como requerimiento la simplificación del entorno de trabajo para un desarrollador.

Con todo ello se creó un proyecto (igep: Implementación de la Guía de Estilo en Php) que componía el core del framework cuya primera versión estable salió el 16-11-2004. Este proyecto, al ser liberado con licencia GPL tomó la denominación gvHIDRA. A partir de este hito, empezaron a colaborar con el proyecto numerosas entidades públicas y privadas que nos ayudan a mantener el proyecto vivo y actualizado.

1.1.2.2. Pero ¿Qué es gvHIDRA?

Con lo expuesto en el punto anterior, quedan claras las premisas que nos movieron a plantearnos la creación de este proyecto pero, ¿Cómo hemos logrado unos objetivos tan ambiciosos? Bien, es dificil afirmar que los hemos alcanzado todos, pero creemos que buena parte de ellos quedan resueltos en el proyecto con las siguientes características del framework:

  • Patrones de interfaz

    Una de las tareas más costosas es en la definición de la interfaz con el usuario. Para facilitar el trabajo, se han definido una serie de patrones de básicos. Estos patrones definen la forma de representación de la información (formato tabular, registro,...) y la forma con la que interacciona el usuario con dicha información. Esto nos lleva a que con la selección de un patrón obtenemos el diseño global de la ventana.

    Ejemplos de patrón simple tabular, maestro detalle y árbol.

  • Componentes complejos

    La experiencia acumulada nos dice que todas las aplicaciones necesitan de una serie de componentes “complejos”. Ventanas de selección (en PowerBuilder listas de valores), listas enlazadas, acciones de interfaz (en WEB tec. AJAX), mensajes de información,... El framework genera estos componentes simplificando su utilización en las aplicaciones.

  • Operaciones preprogramadas y parametrizables

    Al igual que con los componentes, hemos advertido que cierta problemática se repite en todas las aplicaciones que desarrollamos. Por esa razón, la hemos generalizado y resuelto en el framework, siendo incorporada a las aplicaciones de forma transparente. Algunos ejemplos son:

    • Control de acceso concurrente: es importante que el garantizar la integridad de los cambios realizados por ello el framework incorpora de forma transparente un mecanismo de control.
    • CRUD: el framework genera las sentencias SQL necesarias para Crear, Leer, Actualizar y Borrar un registro.
    • Persistencia y validación de tipos: completando lo que nos ofrece el PHP, el framework incorpora objectos persistentes y validación de tipos de datos.
  • Soporte a diferentes SGBD

    A través del proyecto PEAR::MDB2, el framework permite trabajar con diversos SGBD. Además, incorpora un capa de intermedia propia del framework que nos permite independizarnos de las diferentes interpretaciones del SQL que hace cada gestor (definición de límites, transacciones, ...).

  • Listados e informes

    Uno de los mayores retos que hemos encontrado en el ámbito del proyecto fue generar informes de forma tan versatil como los datawindows de PowerBuilder. Gracias al proyecto jasperreports lo hemos conseguido. Apoyados por herramientas como el iReport, conseguimos listados e informes muy completos y en diferentes formatos.

  • Arquitectura MVC

    El framework garantiza la arquitectura MVC en todos nuestros desarrollos forzando la separación de la lógica de negocio de la presentación mediante la distribución física de los ficheros fija.

  • Control de la vista

    Como hemos comentado, uno de los objectivos principales de la herramienta es simplificar la labor del programador. Con esta premisa, hemos conseguido que un desarrollador de gvHIDRA realice una aplicación WEB sin necesidad de introducir ninguna línea de HTML o Javascript. La idea es que centre su trabajo únicamente en PHP, siendo así mucho más productivo.

  • Custom y temas

    La herramienta está pensada para su despliegue en diferentes organizaciones, por ello, se distribuye en una arquitectura App/Custom/Core que permite modificar tanto el aspectos (CSS, imágenes, ...) como definir comportamientos propios de la organización.

  • Testing

    Incorpora la herramienta PHPUnit para que se puedan realizar testeos sobre el código generado. También se incorporan consejos y reglas para poder realizar test automáticos son Selenium.

  • Autentificación, auditoría y depuración

    Para poder incorporarse en diferentes organismos incorpora un mecanismo de validación extensible siendo capaz de acloplarse a cualquier sistema de validación a través de PHP. Dispone de herramientas para reliazar auditorías y depuración.

Como buen proyecto opensource, el proyecto siguen en constante evolución incorporando nuevas funcionalidades que nos permitan, ante todo, ser más productivos.

1.1.3. Versiones

Desde su liberación, el xx-xx-2xxx, gvHIDRA ha seguido una estrategia de versiones con el fin de incorporar nuevas funcionalidades y resolver errores siendo la versión actual la 3.1.0 (rama 3.1.x). La numeración de las versiones corresponde al siguiente patrón: x.y.z Un cambio en el último número (z) implica corrección de errores/bugs, en este caso será invisible el cambio de versión en lo desarrollado a partir del framework. Si el cambio es en el segundo número (y), implica una mejora del framework o la adición de una nueva funcionalidad, esto sí puede provocar algún cambio en la programación de lo desarrollado a partir del framework. Por último, el cambio del primer número (x) sí que lleva una gran mejora en el framework o una nueva funcionalidad importante.

Recomendaciones:

  • Trabajar siempre en la versión más reciente posible, para facilitar la resolución de errores, evitar usar una versión correspondiente a una rama no activa. Esto no significa que se descarten problemas de versiones anteriores, sino que si la solución implica cambios, éstos no se publicarán en ramas no activas.