Departament d’Enginyeria Informàtica i M atemàtiques Gestor de proyectos de investigación e I+D Autor: Laura de Antonio Gómez Director: Sergio Gómez Fecha: 09 / 2010 Titulación: Ingeniería Técnica Informática de Gestión Correo electrónico: [email protected] Resum: El projecte permet gestionar els projectes per als diferents grups de recerca de la universitat. Portarà un registre de tots els moviments dels diferents grups i un exhaustiu historial financer. La seva gestió es divideix segons cinc tipus de grups que tenen una interrelació entre ells: els projectes, les tasques, els usuaris, la comptabilitat i el calendari. I en tres tipus de rols per usuaris segons la seva responsabilitat: Administrador del sistema, coordinador del projecte i investigador. Els projectes encapsularan les tasques i la comptabilitat. Els usuaris seran distribuïts entre els projectes i a la seva vegada entre les diferents tasques que els hi seran assignades on estarà especificat el que han de fer. La comptabilitat registrarà els diferents moviments dels diners que pertanyin al projecte. Totes les despeses seran guardades i els usuaris podran consultar els estats dels pagaments de aquests. Cada usuari podrà tindre el seu propi calendari on podrà marcar els diferents esdeveniments importants als que vol assistir. La estructura del projecte es basa en un servidor sota tecnologia J2EE i una base de dades compatibles amb drivers JDBC. El llenguatge utilitzat es J2SE 1.6. S’utilitza el framework Hibernate per la persistència i la consulta de dades amb el servidor de BD mantenint el paradigma d'orientació a objectes. La base de dades guardarà totes les dades dels projectes així com els permisos dels diferents usuaris per les seves validacions per cada projecte. En conjunt amb J2EE utilitzarem el framework Struts2. Al ser un servei web l’usuari podrà utilitzar qualsevol explorador de Internet per accedir. Els jocs de proves han estat realitzats mitjançant JUnit per les funcionalitats de JAVA i Selenium per la interface web. 2 Resumen: El proyecto permite gestionar los proyectos de los diferentes grupos de investigación de la universidad. Llevará un registro de todos los movimientos de los diferentes grupos y un exhaustivo historial financiero. Su gestión se divide según cinco tipos de grupos que están interrelacionados entre ellos: los proyectos, las tareas, los usuarios, la contabilidad y el calendario. Y en tres tipos de roles para usuarios según su responsabilidad: administrador del sistema, coordinador del proyecto e investigador. Los proyectos encapsularan las tareas y la contabilidad. Los usuarios serán distribuidos entre los proyectos y a su vez entre las diferentes tareas que les serán asignadas donde estará especificado lo que han de hacer. La contabilidad registrara los diferentes movimientos del dinero que pertenezca al proyecto. Todos los gastos serán guardados y los usuarios podrán consultar el estado del pago de estos. Cada usuario podrá tener su propio calendario donde poder señalar los diferentes eventos importantes a los que quiera asistir. La estructura del proyecto se basa en un servidor bajo tecnología J2EE y una base de datos compatible con drivers JDBC. El lenguaje utilizado es J2SE 1.6. Se usa el framework Hibernate para la persistencia y consultas de datos con el servidor de BD manteniendo el paradigma de orientación a objetos. La base de datos guardará todos los datos de los proyectos así como los permisos de los diferentes usuarios para sus validaciones en cada proyecto. En conjunto con J2EE usaremos el framework Struts2. Al ser un servicio web el usuario podrá utilizar cualquier explorador de internet para acceder. Los juegos de pruebas se han realizado mediante JUnit para las funcionalidades de JAVA y Selenium para la interface web. 3 Summary: The project allows project managing of different university research groups. Also it will record all personal movements of different groups and save comprehensive financial records. The management is divided according to five groups related to each other: Projects, Tasks, Users, Accounting and Calendar. The users will be classified within three user role types and will be assigned according to their responsibility: System Administrator, Project Coordinator, and Researcher. The projects contain tasks and accountings. The users will be distributed between the projects and the different tasks that will be assigned where they'll have specifications about their research.At the accounting module will register the different movements of the money that belongs to the project. All expenses will be saved and the users will be able to query the payment state of them. Each user will have their own calendar where they can annotate different important events to attend. The project structure is based on J2EE server technology and the database must support JDBC drivers. The language used is Java J2SE1.6. The persistence module use Hibernate framework. This framework will be able to query the database server mantaining the object oriented paradigm. The database will save all project's data as well as users' permissions for every project. On top of J2EE we will be using Struts2 framework. The application is a web service because the users can use any internet browser to utilize it. The unitary test cases were programmed using JUnit framework for Java. Selenium was used to test web interface. 4 Índice de contenido 1. Objetivos del proyecto.................................................................................................7 1.1.Contexto..................................................................................................................7 1.2.Objetivos..................................................................................................................8 2. Especificaciones del proyecto.....................................................................................9 3. Diseño..........................................................................................................................11 3.1 ¿En que consiste el proyecto?..............................................................................11 3.2 Estructura MVC...................................................................................................16 3.3 Diagrama Web......................................................................................................17 3.4. Diagrama BD.......................................................................................................19 3.5 Diagrama del flujo de Struts 2.............................................................................20 3.6 Diagrama de casos de uso....................................................................................24 3.6.1 Casos de uso para el Investigador.................................................................24 3.6.2 Casos de uso para el Coordinador.................................................................26 3.6.3 Casos de uso para el Administrador..............................................................29 3.7. Decisiones de diseño............................................................................................31 3.7.1. Tipos de calendario......................................................................................31 3.7.2. JQuery..........................................................................................................33 4. Desarrollo...................................................................................................................34 4.1 Problemas encontrados durante la fase de implementación..............................35 5. Evaluación..................................................................................................................36 5.1. Pruebas ...............................................................................................................36 5.1.1. JUnit.............................................................................................................36 5.1.2. Selenium.......................................................................................................37 5.2. Mejoras y limitaciones.........................................................................................38 5.2.1. Gráficos y tablas...........................................................................................38 5.2.2. Calendario de proyecto................................................................................39 5.2.3. Tarea.............................................................................................................39 5.2.4. Estructura interna.........................................................................................39 5.2.5. Framework...................................................................................................41 5.2.6. Exploradores de Internet..............................................................................41 6. Conclusiones...............................................................................................................44 6.1. Motivaciones........................................................................................................44 7. Recursos utilizados....................................................................................................45 7.1. Tecnologías utilizadas.........................................................................................45 7.2 Programas auxiliares...........................................................................................53 5 7.3. Bibliografía..........................................................................................................54 7.3.1. Páginas web..................................................................................................54 7.3.2. Libros...........................................................................................................54 8. Manuales.....................................................................................................................55 8.1. Instalación del entorno y configuración............................................................55 8.1.1. Entorno de desarrollo...................................................................................55 8.1.2. Entorno de producción.................................................................................62 8.1.3. Entorno de usuario.......................................................................................65 8.2. Manual de usuario..............................................................................................65 13.1.1. Proyecto......................................................................................................66 13.1.2 Tarea............................................................................................................72 13.1.3 Calendario...................................................................................................77 13.1.4. Usuario.......................................................................................................82 13.1.5 Contabilidad................................................................................................88 6 1. Objetivos del proyecto 1.1.Contexto Los grupos de investigación universitarios y otros organismos públicos de investigación consiguen el dinero para hacer la investigación de convocatorias competitivas organizadas por ministerios, comunidades autónomas, organismos internacionales (e.g.. Unión Europea), fundaciones y/o empresas privadas. Cuando se consigue un proyecto de investigación, el responsable de la gestión del dinero concedido es el investigador principal(IP). Habitualmente un mismo IP puede gestionar simultáneamente diferentes proyectos de investigación, y los investigadores pueden también participar en los proyectos de investigación de diferentes IP (no siempre es el mismo). En la concesión del proyecto de investigación, la entidad financiadora habitualmente decide la distribución definitiva del dinero concedido entre los diferentes años de proyecto (que no coinciden necesariamente con años naturales), y como queda repartida en las diferentes partidas del presupuesto: personal, material inventariable, material fungible, gastos de desplazamiento, gastos de representación, etc.. Dichas partidas suelen ser muy estrictas, de manera que no es fácil conseguir el permiso para poder transferir dinero de una partida a otra. Es por ello que el IP necesita un control estricto y actualizado de todos los gastos del proyecto. Desafortunadamente, las universidades no suelen poner a disposición del IP las herramientas informáticas necesarias para poder ejercer una gestión adecuada de sus proyectos. Por ejemplo, sólo el personal de administración y servicios (PAS) pueden acceder a parte de la información, y en muchas ocasiones no está correctamente centralizada. En consecuencia, el IP depende básicamente de la habilidad del PAS para gestionar dicha información, que a menudo no está actualizada y contiene errores. Los problemas se agravan si además hay cambios en el PAS, e.g. por bajas o cambios de destino. 7 1.2.Objetivos Hacer una aplicación web para la gestión de proyectos de investigación que satisfaga los siguientes requerimientos: • Permitir gestionar proyectos de investigación e I+D. • Permitir una visión global del proyecto al IP. • Permitir la organización y distribución de tareas entre investigadores. • Facilitar la gestión de la contabilidad. • Permitir la organización de eventos a nivel personal para cada investigador. • Realizar una página web dinámica en java con base de datos utilizando las tecnologías de Hibernate, JQuery, JavaScript, Ajax, JUnit y Struts2. 8 2. Especificaciones del proyecto El objetivo es realizar una aplicación para el IP que permita gestionar los proyectos de investigación desde un punto de vista organizativo sobre un grupo de investigación así como desde un punto de vista económico. Esta aplicación facilitará una visión global del proyecto al IP en cualquier momento. En un proyecto pueden participar muchos investigadores y no tienen porque trabajar juntos o al mismo tiempo. Si además están a distancia esto dificulta más la comunicación. La aplicación permitirá al IP la distribución de trabajo entre los diferentes componentes del equipo y permitirá un seguimiento del trabajo de todo el grupo a tiempo real. Los investigadores podrán participar en diferentes proyectos a la vez fácilmente. El trabajo lo tendrán organizado en tareas y podrán realizarlas como les interese. Al tener una visión global de todos los proyectos sabrán en cada momento cual es su carga de trabajo. Podrán cooperar conjuntamente diferentes investigadores a la vez en una tarea. El IP podrá administrar la contabilidad del proyecto independientemente de la gestión que realice el PAS. En el caso de que no coincidan las gestiones del PAS con las propias se podrá buscar rápidamente donde esta el error. Cuando el IP gestione las partidas, podrá mover el dinero y los gastos donde crea conveniente fácilmente, sin riesgos de errores. La gestión de la contabilidad permitirá crear divisiones de dinero entre categorías y años. Al principio de proyecto puede desconocerse las particiones exactas o los años por lo que al crear el proyecto se podrán definir las particiones. Más adelante se permitirá mover el dinero de un año a otro y de una categoría a otra, así como añadir, suprimir y modificar las cantidades. No es obligatorio gastar el dinero especificado para un año. El dinero no gastado de un año deberá poder moverse al siguiente año sin dificultad. Deberá llevarse un registro exhaustivo de los gastos del capital del proyecto. No se registrarán los cambios en cantidades de dinero pero sí los gastos por persona. 9 En ocasiones los propios investigadores realizan gastos que después les serán abonados por el proyecto. El tramite del registro de estos gastos y su pago será invisible para el investigador. La aplicación permitirá organizar su propio calendario a cada usuario, para que puedan gestionar los eventos que tengan relación con sus proyectos. 10 3. Diseño 3.1 ¿En que consiste el proyecto? Se ha estructurado la gestión de la aplicación en cinco partes que se in ter-relacionan entre ellas: los proyectos, la contabilidad, los usuarios, las tareas y el calendario. El sistema se compone de las cuatro primeras que son las más importantes. SISTEMA CONTABILIDAD PROYECTO USUARIO CONTABILIDAD PROYECTO USUARIO CONTABILIDAD PROYECTO USUARIO TAREA TAREA Figura1.Esquema general del sistema Los usuarios y los proyectos son la base de la aplicación. Los usuarios son las entidades más importantes ya que no puede existir ningún componente que no tenga asignado al menos un usuario que sea su responsable. 11 Los usuarios se han dividido en tres tipos de roles posibles según sus responsabilidades y restricciones de manera jerárquica de más a menos: administrador del sistema, coordinador del proyecto e investigador. Administrador del sistema Coordinador del proyecto Investigador Figura 2. Esquema jerárquico de los roles de usuario • Administrador de sistema: No tiene ninguna restricción de acceso, pueden acceder a cualquier proyecto o pantalla, y ejecutar cualquier tipo de acción. Sus permisos estarán a nivel de sistema por encima de los demás roles. Entre otras cosas sus tareas más importantes serán manejar la entrada y salida de los usuarios en el sistema así como la organización de sus permisos generales y la creación y supresión de proyectos. • Coordinadores de proyecto: tienen permisos a nivel de proyecto, es decir, podrán ejecutar cualquier acción que afecte al proyecto del que son coordinadores. Podrán añadir investigadores a su proyecto y suprimirlos o asignarles tareas y manejaran la contabilidad de su proyecto. Deberán revisar la contabilidad de sus proyectos y añadir y suprimir los gastos que vayan haciendo los investigadores que están a su cargo. • Investigadores: los permisos se restringirán a los proyectos a los que pertenecen y solo podrán consultar los gastos del proyecto pero no modificar-los. Tendrán unas tareas en las cuales podrán ir añadiendo comentarios con fecha y hora para que sus coordinadores les puedan hacer un seguimiento si lo necesitan o para que otros investigadores de su proyecto puedan consultarlo o añadirle información. 12 Los proyectos forman una entidad compuesta con la contabilidad, un proyecto existe si y solo si existe una contabilidad. PROYECTO 1 1 CONTABILIDAD Figura 3. Relación entre proyecto y contabilidad El proyecto contendrá las relaciones de usuarios, las de tareas y las relaciones entre ellos. • Tarea: contendrá dos usuarios, el creador de la tarea (el coordinador de proyecto) y el investigador asignado a la tarea. El usuario asignado puede ser el mismo coordinador o podrá cambiar varias veces al largo de la ejecución de la tarea. La re asignación de las tareas puede deberse a que no tiene conocimientos suficientes como para poder acabarla y se reasigna a otra persona para que le ayude y no se quede parada o puede deberse a que el usuario ya no forma parte del equipo y se deben reasignar sus tareas. Cada tarea podrá contener varios comentarios en su historial temporal que los usuarios crean importantes o relevantes para el desarrollo de la misma. La contabilidad se centrara en la repartición de dinero entre las posibles particiones de categorías y de años. También contendrá las relaciones entre los gastos, los usuarios y las categorías. 13 CONTABILIDAD Partición por Categorías Partición por Años Figura 4.Esquema de contabilidad La parte financiera de los proyectos se estructuraran en categorías y dentro de ellas si es el caso por años. CATEGORIA 1 Categoría 1 año 2010 CATEGORIA 2 Categoría 1 año 2011 Categoría 2 año 2011 Categoría 2 año 2012 Nivel general Nivel anual (pertenece a un año) Figura 5.Organización de las categorías • Categoría: Se podrán definir de dos tipos: generales o anuales. No es obligatorio tener una partición por años pero si tener al menos una categoría general por defecto que poder asignar a los gastos de proyecto. Si hay dinero que no pertenezca a un año en concreto o aun este por definir se podrá tener en las categorías generales y después si es el caso crear el año y mover-le el dinero. Las categorías de los años, obtendrán su parte de dinero de las categorías generales, no se asignara un dinero concreto a un año, sino a una categoría del propio año y que será sumado al dinero total del año. 14 Si no están definidas las categorías definitivas inicialmente siempre se podrá crear una por defecto y luego mover el dinero y borrarla. CATEGORIA GASTO USUARIO Figura 6. Relación entre categorías, gastos y usuarios La contabilidad contendrá los diferentes gastos hechos por cada persona. • Gasto: Siempre estará relacionado con una persona y una categoría, ya sea dentro de un año o general y tendrá una fecha concreta de cuando se realizó el gasto. 15 3.2 Estructura MVC Se ha seguido una estructura muy definida de MVC. CONTROL Usuario VISTA MODELO Figura 7.Esquema de MVC Se ha realizado un diagrama de secuencias de ejemplo para mostrar su funcionamiento. Figura 8.Diagrama de secuencias 16 1. El administrador quiere realizar una consulta sobre un perfil de usuario y pulsa en el menú la opción indicada. 2. A continuación se hace la llamada y se le muestra la pagina pidiéndole los datos clave para poderse-los mostrar. 3. El usuario introduce los datos y se le envían a la parte de control para que realice las funciones oportunas. 4. El control realiza la petición a la base de datos y esta devuelve el usuario o un mensaje de error. 3.3 Diagrama Web Se ha realizado un ejemplo de diagrama web para mostrar en que partes se ha utilizado JQuery y Ajax y como se han introducido las validaciones de cada formulario: Figura 9.Diagrama web 17 • Acciones dinámicas - JQuery y AJAX: Para rellenar listas según los valores de otros campos se decidió utilizar la técnica de AJAX. El servidor al tratar con menos información la carga de trabajo es mínima y además evita al usuario tener que esperar a que se recargue de nuevo toda la página. Así de esta manera se ha conseguido que también el código sea mucho mas limpio y estructurado. Se ha utilizado JQuery para ello. Utilizando el ejemplo de la figura se ve como las jsps de proyectCrear.jsp, usuarioCrear.jsp y usuarioAnadirQuitar.jsp importan jquery.js y lo utilizaran para aplicar las funciones de validación y funciones dinámicas de sus otras js. • JavaScript - Validaciones: Se ha creado un js de javascript para cada jsp de la aplicación donde se validan los propios campos. Como que las validaciones de campos son comunes según si se esperan números, fechas, años…Se ha creado un js llamado funciones-validation.js que contiene las funciones generales que utilizan todas los demás js. Estas funciones utilizan también jquery.js para completar algunas validaciones que son más complejas y necesitan de código java. 18 3.4. Diagrama BD Figura 10.Diagrama de la BD 19 3.5 Diagrama del flujo de Struts 2 Figura 11.Diagrama del flujo de struts2 • HttpServletRequest: Realiza la petición al servidor a partir de una petición http. Ejemplo: GET /dumprequest HTTP/1.1 Host: djce.org.uk Connection: keep-alive User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.127 Safari/533.4 Referer: http://www.google.es/search?sourceid=chrome&ie=UTF8&q=http+request Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain ;q=0.8,image/png,*/*;q=0.5 Accept-Encoding: gzip,deflate,sdch Accept-Language: es-ES,es;q=0.8 Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 Código 1. Petición de HttpServletRequest 20 • FilterDispatcher: Redirecciona la petición al Action Proxy. • ActionProxy: Realizará la invocación de la acción. • Configuration Manager: Proporciona el conjunto de acciones al action proxy para que pueda invocar la acción pedida. • struts.xml:Es el que contiene el conjunto de acciones e interceptores de la aplicación. Ejemplo: <action name="log-action" class="org.gestor.actions.LogAction"> <result name="success" type="redirectAction"> userPrincipal-action</result> <result name="login-error"> /WEBINF/content/global/loginError.jsp</result> </action> Código 2. Definición de un action • Action Invocation: Ejecuta los interceptores asociados a la acción y se encarga de direccionar el resultado de ésta. • Interceptores: Conjunto de reglas que se ejecutan antes o después de la llamada de una acción. Es un sistema flexible y permite ejecutar reglas comunes para diferentes acciones según los intereses de cada una éstas. Ejemplo: <interceptors> <interceptor-stack name="defaultStack"> <interceptor-ref name="exception"/> <interceptor-ref name="alias"/> <interceptor-ref name="servletConfig"/> <interceptor-ref name="i18n"/> <interceptor-ref name="prepare"/> <interceptor-ref name="chain"/> <interceptor-ref name="debugging"/> <interceptor-ref name="scopedModelDriven"/> <interceptor-ref name="modelDriven"/> <interceptor-ref name="fileUpload"/> <interceptor-ref name="checkbox"/> <interceptor-ref name="multiselect"/> 21 <interceptor-ref name="staticParams"/> <interceptor-ref name="actionMappingParams"/> <interceptor-ref name="params"> <param name="excludeParams"> dojo\..*,^struts\..*</param> </interceptor-ref> <interceptor-ref name="conversionError"/> <interceptor-ref name="validation"> <param name="excludeMethods"> input,back,cancel,browse</param> </interceptor-ref> <interceptor-ref name="workflow"> <param name="excludeMethods">input,back,cancel, browse, crearProyecto, moverGastos</param> </interceptor-ref> </interceptor-stack> </interceptors> Código 3. Definición de interceptores • Action: Código java que se ejecuta y puede generar un resultado, una persistencia en base de datos, un fichero, un cálculo, etc... public class LogAction extends BaseAction{ public LogAction(){ } public String execute(){ ... return "success"; } } Código 4. Clase LogAction.java • Result: Según el código ejecutado por el action el flujo se redirigirá a diferentes resultados que contendrán las diferentes jsps u otras acciones a realizar. Ejemplo: <result name="success" type="redirectAction"> userPrincipal-action </result> <result name="login-error"> /WEB-INF/content/global/loginError.jsp </result> Código 5. Definición de resultados posibles del action • Template: Dependiendo del framework que se utilice en la vista, se redirigirá a una jsp, un fichero de otro framework u otra acción. 22 Ejemplo: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%@taglib prefix="s" uri="/struts-tags"%> <html> <head> <title><s:text name="logueo_title"></s:text></title> <style type="text/css"> @import url("style/styleNew.css"); </style> </head> <body> ... </body> </html> Código 6. Definición de una jsp • HttpServletResponse: Salida de la petición que contiene el Html final. Ejemplo: HTTP/1.0 200 OK Date: Fri, 31 Dec 1999 23:59:59 GMT Content-Type: text/html Content-Length: 1354 <html> <body> <h1>Happy New Millennium!</h1> (more file contents) ... </body> </html> Código 4. Salida de HttpServletResponse 23 3.6 Diagrama de casos de uso Al ser tan extenso el diagrama de casos de uso, se ha dividido en tres partes según las acciones que puede hacer cada actor para que sea más fácil de entender. 3.6.1 Casos de uso para el Investigador Figura 12. Diagrama de casos de uso, rol de investigador Caso de uso 1. Identificarse Resumen de funcionalidad: Accede a la aplicación con los permisos asignados a su usuario. Caso de uso 2.Consultar calendario Resumen de funcionalidad: Muestra un calendario donde están señaladas las fechas con eventos importantes. Casos de uso relacionados: Modificar evento, Añadir evento, Eliminar evento Modificar evento: Permite modificar los datos del evento seleccionado. Añadir evento: Permite añadir un evento al calendario. Eliminar evento: Permite eliminar el evento seleccionado. 24 Caso de uso 3.Consultar datos personales Resumen de funcionalidad: Muestra los datos personales del usuario registrados en el sistema Casos de uso relacionados: Modificar datos personales Modificar datos personales: Permite modificar los datos del usuario logueado. Caso de uso 4.Consultar tarea Resumen de funcionalidad: Permite al investigador acceder a una tarea desde un buscador según diversos criterios de búsqueda como el código de identificación de la tarea, su usuario asignado, sus fechas iniciales y finales, su estado… Casos de uso relacionados: Modificar tarea, 10.Eliminar tarea Modificar tarea: Permite modificar los datos de la tarea seleccionada 25 3.6.2 Casos de uso para el Coordinador Figura 13. Diagrama de casos de uso, rol de coordinador Caso de uso 5.Consultar gasto Resumen de funcionalidad: Permite acceder a los datos de un gasto buscándolo por diferentes criterios de búsqueda como el código de identificación del gasto, el usuario, la fecha… Casos de uso relacionados: 6.Modificar gasto, 7.Eliminar gasto Caso de uso 6.Modificar gasto Resumen de funcionalidad: Permite al coordinador modificar los datos del gasto seleccionado 26 Casos de uso relacionados: 3.Consultar gasto Caso de uso 7. Eliminar gasto Resumen de funcionalidad: Permite al coordinador eliminar un gasto seleccionado de su proyecto. El dinero del gasto se volverá a añadir al dinero no utilizado del proyecto. Casos de uso relacionados: 3.Consultar gasto Caso de uso 8.Crear gasto Resumen de funcionalidad: Permite al coordinador añadir un gasto a su proyecto. Se puede seleccionar una categoría general o una categoría dentro de un año donde añadirlo. Caso de uso 9.Crear tarea Resumen de funcionalidad: El coordinador puede crear una tarea nueva en su proyecto y asignarla a cualquier usuario que pertenezca al mismo. Caso de uso 10. Eliminar tarea Resumen de funcionalidad: Permite al coordinador eliminar la tarea seleccionada. Casos de uso relacionados: 2.Consultar tarea Caso de uso 11.Modificar permisos usuario Resumen de funcionalidad: El coordinador de proyectos puede modificar los permisos de todos los usuarios que pertenezcan a su proyecto. Puede seleccionar entre “administrador” y “usuario”. Caso de uso 12. Añadir usuario al proyecto Resumen de funcionalidad: El coordinador puede añadir usuarios que participaran en ese proyecto. Al añadirlos podrá escoger entre darles permisos de investigador o de coordinador. Casos de uso relacionados: 2.Consultar tarea Caso de uso 13. Eliminar usuario del proyecto 27 Resumen de funcionalidad: El coordinador puede dar de baja la participación de un usuario del proyecto donde es responsable. Se reasignaran las tareas de esa persona. Casos de uso relacionados: 2.Consultar tarea Caso de uso 14.Consultar proyecto Resumen de funcionalidad: Muestra los datos generales del proyecto como la fecha, el nombre, el coordinador... Casos de uso relacionados: Modificar datos del proyecto. Modificar datos del proyecto: Permite al coordinador modificar los datos generales del proyecto, asignarle otro coordinador, cambiar el objetivo del proyecto. Caso de uso 15.Consultar contabilidad Resumen de funcionalidad: Muestra los datos generales de la contabilidad como la entidad bancaria, el dinero total del proyecto, las particiones... Casos de uso relacionados: Modificar datos de la contabilidad, Modificar partición categorías, Modificar partición años. Modificar datos de la contabilidad: Permite al coordinador modificar los datos generales del proyecto y de la contabilidad. Puede realizar particiones de año y de categorías y mover el dinero de una partición a otra. Modificar partición categorías: Puede crear nuevas categorías donde clasificar los gastos del proyecto y mover el dinero de una partición a otra. Modificar partición años: Puede asignar años al proyecto donde se clasificaran los gastos del proyecto y mover el dinero de un año a otro. 28 3.6.3 Casos de uso para el Administrador Figura14. Diagrama de casos de uso, rol de administrador Caso de uso 16. Añadir usuario al sistema Resumen de funcionalidad: El administrador puede añadir nuevas personas al sistema que serán asignados a proyectos en el momento o más adelante por coordinadores o por el propio administrador. Los usuarios se pueden crear no activos y activar más adelante para su uso. Caso de uso 14. Consultar perfil usuario del sistema Resumen de funcionalidad: El administrador del sistema puede consultar cualquier perfil de usuario del sistema. Casos de uso relacionados: Modificar perfil de usuario, Eliminar usuario Modificar perfil de usuario del sistema: El administrador puede modificar los datos personales de cualquier persona del sistema, asi como su usuario y contraseña. Eliminar usuario del sistema: El administrador puede eliminar cualquier persona del sistema. 29 Caso de uso 18. Crear proyecto Resumen de funcionalidad: El administrador puede crear un proyecto y su contabilidad. Puede conocerse desde el inicio las particiones por años y por categorías que tendrá la contabilidad y crearse completamente o pueden desconocerse y modificarse mas adelante. Caso de uso 19.Eliminar proyecto Resumen de funcionalidad: El administrador del sistema puede eliminar un proyecto del sistema. Se borrarán todas las dependencias con los gastos, los usuarios y las tareas que estos tengan asignadas así como su contabilidad. 30 3.7. Decisiones de diseño 3.7.1. Tipos de calendario Para decidirme estuve mirando y comparando varios tipos de calendarios pero finalmente probé tres en particular que fueron: jQuery UI Datepicker, JSCalendar y FullCalendar. • JQuery Ui Datepicker Figura 15. Calendario de Jquery Ui Datepicker http://jqueryui.com/demos/datepicker/#inline 31 • JSCalendar Figura 16. Calendario de JSCalendar http://www.dynarch.com/projects/calendar/ • Full Calendar Figura 17. Calendario Full Calendar http://arshaw.com/fullcalendar/ 32 He agrupado las características importantes que puede tener un calendario y los he comparado entre sí para ver las diferencias: Características JSCalendar JQuery Ui Full Calendar Datepicker - Agradables a la vista -Estructura modificable -Visión de eventos de varios meses a la vez -Visión de eventos por semana -Visión de eventos por día -Permite arrastrar los eventos a otro día/hora y alargar el tiempo. -Añadir un evento dinámicamente. -Muestra la hora actual Tabla 1.Comparación de características de los calendarios 3.7.2. JQuery La carga de listas dinámicas enlazadas se ha realizado por JavaScript y JQuery para liberar al servidor de una carga de peticiones excesiva y proporcionar una mejor experiencia de usuario. Además por problemas mencionados en el apartado siguiente 4.1 Problemas encontrados durante la fase de implementación se decidió también realizar las validaciones de formularios. 33 4. Desarrollo Para el proceso de desarrollo del software se ha seguido un modelo cascada re alimentado para el ciclo de vida. Figura 18. Esquema del ciclo de vida Que consiste en las siguientes etapas: • Primera etapa: Se especificaron los requisitos de la aplicación (la contabilidad se dividirá en categorías y en años…) • Segunda etapa: Se empezó con el diseño del sistema, la estructura general del diseño como se distribuiría. Se reajustaron los requisitos mientras se diseñaba. (Aquí empezamos a utilizar la re alimentación del sistema) • Tercera etapa: Implementamos las bases de la aplicación, las funciones y realizamos sus correspondientes pruebas unitarias. Durante el proceso volvemos a al paso anterior a al primero. • Cuarta etapa: Se siguen los pasos indicados en las anteriores, pero esta vez se hacen las pruebas con datos reales en las versiones finales de la aplicación. Se resuelven problemas y se definen los últimos detalles del sistema. 34 • Quinta etapa: Se realiza el mantenimiento de la aplicación por si surgen errores. 4.1 Problemas encontrados durante la fase de implementación • Validadores de Struts2: Se decidió implementar las validaciones de los formularios con struts2. Esta nueva versión de struts tiene unos validadores muy potentes de formularios y después de hacer unas cuantas pruebas de cada tipo en una .jsp aparte intente aplicarlo en el proyecto. No hacia ninguna validación de ningún tipo que estuviera en el paquete de struts.xml con hibernate. Esto era debido a los interceptores que tiene hibernate, que deshabilitaban esos validadores. Después de probar muchos interceptores diferentes se decidió optar por las validaciones por JavaScript y JQuery ya que los otros interceptores interferían con la BD y no permitían conectarla. • Excepciones genéricas: Como que las páginas web pueden perder la conexión o caducar, pensé en poner una página de error que capturase la excepción desde cualquier página donde estuviese el usuario y lo redirigiera a la página de logueo. Para poder hacerlo se tiene que poner el interceptor <default-interceptor-ref name="defaultStack"/> para poder capturar las excepciones y el error que se quiere capturar se pone con la etiqueta <global-exception-mappings> y dentro de esta con <exception-mapping exception="java.lang.Exception" result="transaccion-error"/>. • Id's compuestas dan error Long: Las clases de la base de datos que contienen id's compuestas por dos entidades o más, al crear los Beans en java de la bd pueden dar el error “ORA-01461: can bind a LONG value only for insert into a LONG column”. Esto es debido a que cuando se generan las claves primarias se generan como otra nueva clase java llamada Bean_PK. La Base de datos espera un único valor para cada entidad compuesta o un String o un valor numérico pero si se intentan insertar como entidades, la base de datos no los identifica como tales y da el error. Para solucionarlo se cambiaron los Beans que habían en la clave primaria por la id de cada entidad. 35 5. Evaluación 5.1. Pruebas Se ha utilizado JUnit para evaluar la parte funcional y Selenium para realizar las pruebas sobre la interfície gráfica. 5.1.1. JUnit Para la parte funcional sobre J2EE se han creado una serie de test que evalúan todas las operaciones existentes de la aplicación sin modificar ni dañar la BD o sus datos. Para ello primero evaluaremos las operaciones de creación y pondremos valores de prueba a los objetos que utilizaremos para los test. Después manipularemos esos objetos al ejecutar todas las operaciones de modificación y re asignación y por último ejecutaremos las operaciones de supresión para volver a tener la BD intacta como al inicio de los test. Figura 19. Test de creación de objetos verificado 36 Figura 20. Test de modificación de gasto fallido 5.1.2. Selenium Para la parte visual se han realizado pruebas sobre la interfície gráfica que se han ido grabando en el programa Selenium como tests de usabilidad web. Algunas acciones como las búsquedas de datos, usuarios o modificaciones de dinero han sido más fáciles de realizar que otras como las creaciones que se han tenido que validar muchas variables. Figura 21.Test de loguear-se verificado Figura 22. Test de loguear-se fallido 37 5.2. Mejoras y limitaciones 5.2.1. Gráficos y tablas • Los datos de la contabilidad son muy poco visuales, las extracciones numéricas son más detalladas pero si el usuario solo quiere mirar por encima a grandes rasgos los gastos económicos, le irían mejor unos gráficos de barras o de porciones para ver a simple vista cuánto dinero queda de cada tipo por gastar. 12 10 8 Total 6 Gastado Restante 4 2 0 Categoria A Categoria B Categoria C Figura 23. Gráfico de los datos de la contabilidad • Las tareas también podrían mostrar-se con gráficos para que el coordinador supiera cuantas están en proceso o cuantas cerradas. Abiertas Pendientes Cerradas Paradas Figura 24. Gráfico de los estados de las tareas 38 5.2.2. Calendario de proyecto • Calendario, aparte del calendario de usuario, crear uno generico para que los eventos generales se compartieran entre los diferentes componentes del equipo. • Invitaciones de eventos, entre los compañeros de proyecto se pudieran enviar invitaciones con eventos de conferencias por si les pudiera interesar. 5.2.3. Tarea • Historial de movimientos, mostrar un historial con los diferentes movimientos que realizan los usuarios en la tarea por orden cronológico. • Tiempo en la tarea, crear unos gráficos para mostrar el tiempo empleado en la tarea y el restante. Esto mejoraría la percepción del tiempo que se esta empleando al coordinador de proyecto y podría ver si se necesita más apoyo con la tarea indicada o podría añadirse-le más funcionalidades. 5.2.4. Estructura interna • Renovar estructura, la estructura del proyecto es correcta, pero si crece, estaría mejor incorporar algunos componentes para diferenciar más las capas del modelo MVC. Estos objetos serían: ◦ Forms: Objetos relacionados con el Action, los dtos y la jsp. Contendrán los datos del formulario. ◦ DTOs: (Data object) objetos utilizados para la presentación de los datos en pantalla y su recogida. Son los que se utilizarian para manipular los datos de la presentación. ◦ Business Components: Objetos que relacionan el Action y los DAOs. Toda la parte de negocio la realizan ellos de manera que el action solo debe llamarlos e indicarle lo que necesita que hagan. 39 Figura 25. Estructura interna del proyecto Actualmente la capa de control esta repartida entre los Actions y los daos, en la nueva estructura esto cambiaría y se encargarían los business. • Métodos genéricos: crear una interfaz de métodos genéricos para todos los daos para que no se tuvieran que implementar algunos básicos para cada DAO, por ejemplo buscar un objeto por su id en la BD. • Incorporar tiles: Tiles es una tecnología que se utiliza para poder organizar los diferentes componentes en la presentación. Puede crear patrones de presentación genéricos para que diferentes pantallas puedan heredar y facilita la modificación de estas cuando hay muchas. 40 5.2.5. Framework Aunque la tecnologia de struts presenta muchas ventajas también tiene limitaciones. Es bastante lenta a la hora de hacer las llamadas a la capa de control. Por ello se podría cambiar por otro framework o añadirle algunas tecnologias para mejorarlo. • Capa de control: Podría combinarse struts y spring para la capa de control. • Frameworks: Algunas alternativas serían Wicket, JSF y J2EE. ◦ Wicket: presenta muchas ventajas en la capa de control, pero al ser un framework reciente, tiene muy poca documentación y se deberia investigar mucho antes de aprenderlo. ◦ Jsf: es el estandard de java, presenta mucha variedad de opciones a la hora de implementar. ◦ J2EE: se tendría que construir el flujo de procesos como llamar a las acciones. Podría llegar a ser contraproducente porque se debería invertir mucho tiempo. 5.2.6. Exploradores de Internet Se decidió usar CSS2 para el diseño visual de la aplicación, pero todos los exploradores de Internet excepto Chrome no implementan el estándar de la W3C en su totalidad. Hay diferencias visibles entre ejecutarlo en Internet Explorer, Mozilla Firefox y Chrome por ello se ha realizado el test de Acid3 en cada uno para poner a prueba estos navegadores con los estándares web. En este test se realizan pruebas sobre tecnologías Web 2.0 y algunas sub-pruebas se encargan del lenguaje SVG, XML y del esquema data:URI. 41 • Chrome dio la máxima puntuación en la versión 4 y fue el único en superar la prueba de los 3 navegadores: Figura 26. Test de Acid3 en Chrome • Mozilla Firefox en la versión 3.5.9 no llego a superar del todo la prueba: 42 Figura 27. Test de Acid3 en Mozilla Firefox • Internet Explorer 7 no supero la prueba: Figura 28. Test de Acid3 en Internet Explorer 7 43 6. Conclusiones He aprendido a utilizar diversas tecnologías y a unificarlas en un mismo proyecto que era lo que me interesaba aprender de esta experiencia. JavaScript y AJAX junto con JQuery ha sido una de las cosas que más me ha sorprendido porque me pensaba que me costaría utilizar y me ha resultado más sencillo de lo que creía en un principio y mucho más útil. En la parte web es donde he aprendido más, tecnologías como Struts2 y el multiidioma que me parecían más fáciles me han dado muchos más problemas sobre todo por los interceptores en la configuración. Como era la primera vez que utilizaba estas tecnologías he perdido mucho tiempo al inicio del proyecto antes de adaptarme a ellas y he tenido que rehacer varias estructuras. Css2 para el diseño de la parte visual de la página web me ha resultado todo un reto. Quería hacer un diseño simple, navegable y agradable a la vista y aunque creo que se podría mejorar estoy satisfecha con el resultado final. 6.1. Motivaciones En una formación que realice al entrar en la empresa donde trabajo me enseñaron el framework de Struts 1 junto con otros muy por encima. Aunque me pareció muy interesante no he tenido la oportunidad aun de trabajar con él en un proyecto. He trabajado con varios proyectos pero no he tocado mucha web y tenía mucho interés en aprender sobre ello. Por lo que me propuse realizar una aplicación para aprender a manejarlo y mientras iba avanzando descubrí más tecnologías interesantes que podría aprovechar para aplicar como por ejemplo JQuery. Había leído sobre la técnica de Ajax pero aun no había tenido la ocasión de realizar ningún ejemplo yo misma, por lo que cuando se me planteó la oportunidad decidí intentarlo. 44 7. Recursos utilizados 7.1. Tecnologías utilizadas J2SE: Java Platform, Standard Edition o Java SE (conocido anteriormente hasta la versión 5.0 como Plataforma Java 2, Standard Edition o J2SE), es una colección de APIs del lenguaje de programación Java útiles para muchos programas de la Plataforma Java. La Plataforma Java 2, Enterprise Edition incluye todas las clases en el Java SE, además de algunas de las cuales son útiles para programas que se ejecutan en servidores sobre workstations. Comenzando con la versión J2SE 1.4 (Merlin), la plataforma Java SE ha sido desarrollada bajo la supervisión del Java Community Process. JSR 59 la especificación para J2SE 1.4 y JSR 176 especificó J2SE 5.0 (Tiger). En 2006, Java SE 6 (Mustang) está siendo desarrollada bajo el JSR 270. J2EE: Es una plataforma de programación (parte de la Plataforma Java) para desarrollar y ejecutar software de aplicaciones en Lenguaje de programación Java con arquitectura de N niveles distribuida, basándose ampliamente en componentes de software modulares ejecutándose sobre un servidor de aplicaciones. La plataforma Java EE está definida por una especificación. Similar a otras especificaciones del Java Community Process, Java EE es también considerada informalmente como un estándar debido a que los suministradores deben cumplir ciertos requisitos de conformidad para declarar que sus productos son conformes a Java EE; estandarizado por The Java Community Process / JCP. Java EE incluye varias especificaciones de API, tales como JDBC, RMI, e-mail, JMS, Servicios Web, XML, etc y define cómo coordinarlos. Java EE también configura algunas 45 especificaciones únicas para Java EE para componentes. Estas incluyen Enterprise JavaBeans, servlets, portlets (siguiendo la especificación de Portlets Java), JavaServer Pages y varias tecnologías de servicios web. Esto permite al desarrollador crear una Aplicación de Empresa portable entre plataformas y escalable, a la vez que integrable con tecnologías anteriores. Otros beneficios añadidos son, por ejemplo, que el servidor de aplicaciones puede manejar transacciones, la seguridad, escalabilidad, concurrencia y gestión de los componentes desplegados, significando que los desarrolladores pueden concentrarse más en la lógica de negocio de los componentes en lugar de en tareas de mantenimiento de bajo nivel. Oracle database server: Es una herramienta cliente/servidor para la gestión de Bases de Datos. Se considera uno de los sistemas de bases de datos más completos, destacando su soporte de transacciones, su estabilidad, su escalabilidad y su soporte multiplataforma. Ha sido criticada por algunos especialistas la seguridad de la plataforma, y las políticas de suministro de parches de seguridad, modificadas a comienzos de 2005 y que incrementan el nivel de exposición de los usuarios. En los parches de actualización provistos durante el primer semestre de 2005 fueron corregidas 22 vulnerabilidades públicamente conocidas, algunas de ellas con una antigüedad de más de 2 años. Aunque su dominio en el mercado de servidores empresariales ha sido casi total hasta hace poco, recientemente sufre la competencia del Microsoft SQL Server de Microsoft y de la oferta de otros RDBMS con licencia libre como PostgreSQL, MySql o Firebird. Las últimas versiones de Oracle han sido certificadas para poder trabajar bajo GNU/Linux. 46 Hibernate: Es una herramienta de mapeo objeto-relacional para la plataforma Java que permite relacionar la aplicación Java con la Base de datos de la propia aplicación y facilita el mapeo de atributos entre una base de datos relacional y el modelo de objetos de una aplicación, mediante archivos declarativos (XML) que permiten establecer estas relaciones. Como todas las herramientas de su tipo, Hibernate busca solucionar el problema de la diferencia entre los dos modelos de datos coexistentes en una aplicación: el usado en la memoria de la computadora (orientación a objetos) y el usado en las bases de datos (modelo relacional). Para lograr esto permite al desarrollador detallar cómo es su modelo de datos, qué relaciones existen y qué forma tienen. Con esta información Hibernate le permite a la aplicación manipular los datos de la base operando sobre objetos, con todas las características de la POO. Hibernate convertirá los datos entre los tipos utilizados por Java y los definidos por SQL. Hibernate genera las sentencias SQL y libera al desarrollador del manejo manual de los datos que resultan de la ejecución de dichas sentencias, manteniendo la portabilidad entre todos los motores de bases de datos con un ligero incremento en el tiempo de ejecución. Hibernate está diseñado para ser flexible en cuanto al esquema de tablas utilizado, para poder adaptarse a su uso sobre una base de datos ya existente. También tiene la funcionalidad de crear la base de datos a partir de la información disponible. • Hibernate tools: Es una herramienta de Jboss para el soporte de mapeos de archivos, anotaciones y JPA con ingeniería inversa, refactorización y ejecución de HQL/APP-QL/Criteria. Es una fusión entre las herramientas de hibernate y características de Exadel ORM. JDBC: 47 Java Database Connectivity es una api que permite la ejecución de operaciones sobre bases de datos desde el lenguaje de programación Java, independientemente del sistema operativo donde se ejecute o de la base de datos a la cual se accede, utilizando el dialecto SQL del modelo de base de datos que se utilice. El API JDBC se presenta como una colección de interfaces Java y métodos de gestión de manejadores de conexión hacia cada modelo específico de base de datos. Un manejador de conexiones hacia un modelo de base de datos en particular es un conjunto de clases que implementan las interfaces Java y que utilizan los métodos de registro para declarar los tipos de localizadores a base de datos (URL) que pueden manejar. Para utilizar una base de datos particular, el usuario ejecuta su programa junto con la biblioteca de conexión apropiada al modelo de su base de datos, y accede a ella estableciendo una conexión, para ello provee el localizador a la base de datos y los parámetros de conexión específicos. A partir de allí puede realizar con cualquier tipo de tareas con la base de datos a las que tenga permiso: consulta, actualización, creación, modificación y borrado de tablas, ejecución de procedimientos almacenados en la base de datos, etc. JQuery: JQuery es un framework en JavaScript que ofrece una serie de funcionalidades basadas en JavaScript para ayudar a interactuar de manera mucho más simple y limpia con documentos HTML, ayuda a manejar eventos, a desarrollar animaciones y agregar interacción con la tecnología AJAX a páginas web de manera más eficiente. jQuery consiste en un único fichero JavaScript que contiene las funcionalidades comunes de DOM, eventos, efectos y AJAX. La característica principal de la biblioteca es que permite cambiar el contenido de una página web sin necesidad de recargarla, mediante la manipulación del árbol DOM y peticiones AJAX. Para ello utiliza las funciones $() o jQuery(). 48 jQuery es software libre y de código abierto, posee un doble licenciamiento bajo la licencia MIT y de la GNU General Public License, Versión 2. AJAX: Acrónimo de Asynchronous JavaScript And XML, es una técnica web para crear aplicaciones interactivas. Permite que se realicen cambios en páginas web de manera más rápida e interactiva al evitar que tengan que volver a recargarse completamente. Esto se consigue porque las aplicaciones se ejecutan en el navegador de los propios usuarios (la parte de cliente) mientas mantienen la comunicación asíncrona con el servidor en segundo plano. Struts 2: Es una herramienta de soporte para el desarrollo de aplicaciones Web bajo el patrón MVC bajo la plataforma J2EE. Struts permite reducir el tiempo de desarrollo y en la versión 2 (la que se ha utilizado) se han introducido algunas mejoras como su integración con AJAX. Struts se basa en el framework MVC (Modelo Vista Controlador) y se separa en tres secciones bien diferenciadas que son el modelo, las vistas y el controlador. El modelo es donde están los objetos, las vistas la parte visible al cliente y el controlador será la parte funcional de todo el sistema. 49 Servidor Tomcat: Es un servidor web con soporte de servlets y JSPs. Incluye el compilador Jasper que compila JSPs convirtiendolas en servlets. El servlet de tomcat a menudo se presenta en combinación con el servidor web Apache. Tomcat puede funcionar como servidor web por sí mismo. En sus inicios existió la percepción de que el uso de Tomcat de forma autónoma era sólo recomendable para entornos de desarrollo y entornos con requisitos mínimos de velocidad y gestión de transacciones. Hoy en día ya no existe esa percepción y Tomcat es usado como servidor web autónomo en entornos con alto nivel de tráfico y alta disponibilidad. Dado que Tomcat fue escrito en Java, funciona en cualquier sistema operativo que disponga de la máquina virtual Java. Se ha utilizado un servidor HTTP Apache: El servidor HTTP Apache es un servidor web HTTP de código abierto para plataformas Unix (BSD, GNU/Linux, etc.), Microsoft Windows, Macintosh y otras, que implementa el protocolo HTTP/1.11 y la noción de sitio virtual. Cuando comenzó su desarrollo en 1995 se basó inicialmente en código del popular NCSA HTTPd 1.3, pero más tarde fue reescrito por completo. Su nombre se debe a que Behelendorf quería que tuviese la connotación de algo que es firme y enérgico pero no agresivo, y la tribu Apache fue la última en rendirse al que pronto se convertiría en gobierno de EEUU, y en esos momentos la preocupación de su grupo era que llegasen las empresas y "civilizasen" el paisaje que habían creado los primeros ingenieros de internet. Además Apache consistía solamente en un conjunto de parches a aplicar al servidor de NCSA. Era, en inglés, a patchy server (un servidor "parcheado"). El servidor Apache se desarrolla dentro del proyecto HTTP Server (http) de la Apache Software Foundation. 50 JUnit: Es un conjunto de herramientas que permite realizar la ejecución de clases java para poder evaluar el funcionamiento de cada uno de los métodos de la aplicación de manera controlada. Al final de cada test se añade una condición que evaluara si el resultado obtenido es el esperado o no. Se ha utilizado Junit y su plug-in para eclipse para evaluar las funcionalidades de toda la aplicación. Selenium: Selenium es un conjunto de herramientas que sirve para poder automatizar las pruebas de aplicaciones web a través de muchas plataformas. Proporciona una herramienta de grabación y reproducción para ejecutar pruebas sin tener que aprender un lenguaje de test aparte. Selenium proporciona un dominio de lenguaje específico (DSL) para poder escribir test en un gran número de lenguajes diferentes incluido Java, Ruby, Groovy, Pitón, PHP y Perl. También permite deployar en las plataformar de Windows, Linux y Macintosh. Se ha utilizado Selenium para testear la parte web de la aplicación. Eclipse GALILEO: Eclipse es un entorno de desarrollo integrado de código abierto multiplataforma para desarrollar lo que el proyecto llama "Aplicaciones de Cliente Enriquecido", opuesto a las 51 aplicaciones "Cliente-liviano" basadas en navegadores. Esta plataforma, típicamente ha sido usada para desarrollar entornos de desarrollo integrados (del inglés IDE), como el IDE de Java llamado Java Development Toolkit (JDT) y el compilador (ECJ) que se entrega como parte de Eclipse (y que son usados también para desarrollar el mismo Eclipse). Sin embargo, también se puede usar para otros tipos de aplicaciones cliente, como BitTorrent Azureus. Eclipse es también una comunidad de usuarios, extendiendo constantemente las áreas de aplicación cubiertas. Un ejemplo es el recientemente creado Eclipse Modeling Project, cubriendo casi todas las áreas de Model Driven Engineering. Eclipse fue desarrollado originalmente por IBM como el sucesor de su familia de herramientas para VisualAge. Eclipse es ahora desarrollado por la Fundación Eclipse, una organización independiente sin ánimo de lucro que fomenta una comunidad de código abierto y un conjunto de productos complementarios, capacidades y servicios. Eclipse dispone de un Editor de texto con resaltado de sintaxis. La compilación es en tiempo real. Tiene pruebas unitarias con JUnit, control de versiones con CVS, integración con Ant, asistentes (wizards) para creación de proyectos, clases, tests, etc., y refactorización. Asimismo, a través de "plugins" libremente disponibles es posible añadir control de versiones con Subversion e integración con Hibernate. Magic Draw UML 16.0: Es una herramienta de desarrollo de para crear a UML. La herramienta que soporta UML 2.1.2, múltiples lenguajes de programación (Java, C++, C# y otros) así como modelos de datos. La herramienta tiene unas facilidades y soportes integrados en los IDEs. 52 SqlDeveloper: Oracle SQL Developer es una herramienta grafica para el desarrollo de bases de datos gratuita y con soporte total por parte de Oracle. Con SQL Developer, se puede navegar entre los objetos de la base de datos, ejecutar sentencias y scripts de SQL y editar y debuggar sentencias PL/SQL. Controlador de versiones Unfuddle: Es una herramienta de gestión de versiones de proyectos para equipos de desarrollo de software. 7.2 Programas auxiliares Traducir ficheros de idiomas: Se ha usado una api de google que hace traducciones de archivos para poder obtener otros ficheros de idiomas al ejecutarlo en el formato que se necesita. Escoger fecha en calendario: Para los campos de fechas en los formularios se ha utilizado un script auxiliar que permite crear un pequeño calendario para poder escoger la fecha y colocarla en un formato determinado. Se han añadido algunos métodos para completar este script que ayuda a evitar información introducida incorrectamente por parte del usuario a la hora de validar. 53 7.3. Bibliografía 7.3.1. Páginas web Web oficial de Selenium http://seleniumhq.org/ Web oficial de JQuery http://jquery.com/ Web oficial de Oracle http://www.oracle.com/ Web Subversion http://unfuddle.com/ Web oficial de Magic Draw http://www.magicdraw.com/ Tipos de calendarios http://www.elwebmaster.com/articulos/jquery-9-plugins-para-crear-calendarios-yseleccionadores-de-fecha 7.3.2. Libros Struts 2 in Action Donald Brown, Chad Michael Davis, and Scott Stanlick ISBN: 193398807X 54 8. Manuales 8.1. Instalación del entorno y configuración 8.1.1. Entorno de desarrollo El entorno de desarrollo está enfocado a que los cambios que van surgiendo durante la fase de programación tengan un impacto mínimo en el servidor de manera que se puedan efectuar test unitarios y pruebas del aplicativo. Para empezar se ha de tener instalada la versión 1.6 de Java en el ordenador. Se puede bajar de la pagina “http://www.java.com/es/download/”. Figura 29. Página de descarga de JAVA Se ha de descargar el servidor web Tomcat 6.0 de la pagina web http://tomcat.apache.org/download-60.cgi. Se puede descargar cualquier instalación del Core. 55 Figura 30. Página de descarga de Tomcat El programa que se ha elegido para poder desarrollar es el Eclipse Galileo que se puede descargar desde “http://www.eclipse.org/downloads/” Figura 31. Página de descarga de eclipse Solo faltara instalar el entorno para poder gestionar la BD, para ello necesitaremos instalar el servidor para la BD. Se puede bajar desde http://www.oracle.com/technology/software/index.html. 56 Figura 32. Página de descarga de Oracle Una vez instalado todo lo necesario ya se podrá empezar a configurar el entorno. Para poder bajarnos la última versión del código de la aplicación del subversión se deberá configurar la SVN. Abriremos la perspectiva del eclipse de la SVN Figura 33. Configurando la SVN 57 Y clicaremos en la opción Repository location donde pondremos a descargar el repositorio con la url de unfuddle Figura 34. Añadiendo el repositorio a eclipse Cuando finalicemos haremos un Checkout del proyecto que nos aparecerá y el eclipse descargara los archivos. 58 Figura 35. Descargando el proyecto desde el repositorio Ahora que tenemos el proyecto bajado, configuraremos la conexión con la BD. En mi caso he utilizado un Oracle 10g pero en otros servidores diferentes se podrían utilizar otros como mySQL, postgreSQL, DB2… Lo que hay que modificar en función del tipo de servidor y dónde esté ubicado seria en las propiedades del archivo hibernate.cfg.xml. “hibernate.connection.url” para especificarle donde está el servidor de la BD y “hibernate.connection.driver_class” y “hibernate.dialect” para el tipo de BD especificado en la documentación de la BD de hibernate. Figura 36. Fichero de configurando de hibernate 59 Configuraremos el servidor del tomcat para poder lanzarlo. Haremos clic derecho en la perspectiva del servidor y pondremos NewServer: Figura 37. Añadiendo el servidor Tomcat Seleccionamos el Tomcat 6.0, indicamos su ubicación y finalizamos. 60 Para finalizar añadimos el proyecto con la opción de Add and remove y podremos lanzar la aplicación en desarrollo. Figura 38. Añadiendo el proyecto al servidor 61 8.1.2. Entorno de producción El entorno de producción está enfocado al uso diario 24 horas del aplicativo para que varios usuarios puedan acceder a él paralelamente sin que suponga un esfuerzo excesivo para el servidor. Exportaremos el proyecto en un .war ExportWAR file. Figura 39. Exportación del war del proyecto Lo ubicaremos en la carpeta donde esté instalado el servidor Tomcat 6.0 dentro de la carpeta webapps. Para poder ejecutar la aplicación necesitamos tener definidas en el ordenador 2 variables del sistema CATALINA_HOME y JAVA_HOME. Podremos añadirlas en Panel de ControlSistemaPestaña de Opciones avanzadasVariables de entorno 62 Figura 40. Añadiendo las variables de entorno CATALINA_HOME deberá contener la ruta de la carpeta donde está el servidor de apache y JAVA_HOME deberá contener la ruta de java. Acabado esto faltará configurar el servidor. Para ello abriremos el archivo server.xml de la carpeta (Instalación de Apache 6.0)/conf/server.xml y buscaremos el puerto que utilizará para asegurarnos que está abierto y libre. Por defecto viene el 8080. Figura 41. Configuración del servidor Después faltará comprobar que las variables unpackWARs y autoDeploy están a true. UnpackWARs sirve para que el servidor encuentre el .war donde hemos exportado la 63 aplicación y lo descomprima en una carpeta y el autoDeploy servirá para que el servidor pueda recargar los cambios que se le efectúen al código de la carpeta y los actualice. Figura 42. Configurando el autodeploy del server Ahora podremos lanzar la aplicación desde cualquier ordenador poniendo el nombre de la maquina seguido de /GestorProyectosPFC: Figura 43. Pantalla inicial de la aplicación 64 8.1.3. Entorno de usuario Solo harán falta los exploradores que soporten los estándares de la W3C en relación al HTML 4.01 Transitional especificado en http://www.w3.org/TR/html4/loose.dtd y CSS2 especificado en http://www.w3.org/TR/CSS2/. 8.2. Manual de usuario Figura 44. Pantalla de acceso Figura 45. Pantalla principal de administrador 65 Figura 46. Pantalla principal de usuario 13.1.1. Proyecto 13.1.1.a. Crear un proyecto: • Loguearse con los permisos de administrador. • Menú de la izquierda en la sección de “Proyecto” pulsar en la opción “Crear proyecto”. Se abrirá una nueva pestaña. Figura 47. Pantalla crear proyecto 66 • Rellenar los campos y pulsar en “Crear”. Los campos indicados en color amarillo son obligatorios. • Cuando se cree el proyecto se mostraran las opciones de crear partición por años y por categorías opcionales. Figura 48. Pantalla crear proyecto, botones para crear particiones ◦ Si no se crea ninguna se definirán unas por defecto y se podrán modificar más adelante. ◦ Se escoge crear partición por año (Ver punto 13.1.5.c. Modificar partición años) ◦ Se escoge crear partición por categoría ir al punto (Ver punto 13.1.5.b. Modificar partición categorías) • Pulsar en cancelar para cerrar la pestaña y volver a la pantalla principal. 13.1.1.b. Eliminar un proyecto: • Loguearse con los permisos de administrador. • Menú superior seleccionar “Proyecto” y pulsar en la opción “Eliminar proyecto”. Se abrirá una nueva pestaña. 67 Figura 49. Pantalla eliminar proyecto • Se deberá seleccionar el proyecto a eliminar y pulsar en “Baja”. (Este proceso eliminará todas las referencias al proyecto existentes así como los gastos y las tareas relacionadas) 13.1.1.c. Ver datos proyecto: • Loguearse con permisos de administrador o coordinador del proyecto. • Se mostrara una lista de proyectos a los que se pertenece. • Pulsar en el que se quiera ver. • Se mostrara una página con: ◦ Un menú con las diferentes opciones que puede hacerse en un proyecto. ◦ Un titulo que al pulsarlo se podrán ver los datos generales que definen el proyecto. 68 Figura 50. Pantalla principal de un proyecto, sección datos proyecto ▪ Estos datos se pueden modificar, si se cambian y se pulsa el botón “modificar” de la parte inferior. ◦ Una lista de tareas Figura 51. Pantalla principal de un proyecto, sección lista tareas ▪ Se pueden pulsar para acceder ◦ Una lista de gastos, en el caso del usuario solo de sus propios gastos, en el caso del administrador o coordinador los gastos de todo el proyecto. 69 Figura 52. Pantalla principal de un proyecto, sección lista gastos ◦ Una lista de usuarios. Figura 53. Pantalla principal de un proyecto, sección lista usuarios 13.1.1.d. Añadir usuario: • Loguearse con los permisos del administrador o el coordinador del proyecto. • Acceder al proyecto. • Seleccionar en la sección de proyecto la opción “Añadir usuario” en el menú izquierdo. Se abrirá una nueva pestaña. 70 Figura 54. Pantalla añadir usuario a proyecto • Seleccionar el usuario de la lista desplegable y seleccionar el rol con el que se quiera añadir. • Pulsar el botón “Añadir” de la parte inferior para guardar los cambios. • Pulsar el botón “Cancelar” para cerrar la ventana. 13.1.1.e. Eliminar usuario: • Loguearse con los permisos del administrador o el coordinador del proyecto. • Acceder al proyecto. • Seleccionar en la sección de proyecto la opción “Eliminar usuario” en el menú izquierdo. Se abrirá una nueva pestaña. 71 Figura 55. Pantalla eliminar usuario del proyecto • Seleccionar el usuario de la lista desplegable. • Se rellenara una lista de tareas en la parte inferior, estas tareas son las que tiene asignadas el usuario y hay que re asignarlas. Para ello seleccionar un usuario de la otra lista desplegable y pulsar en “Reasignar”. Figura 56. Pantalla eliminar usuario del proyecto, sección reasignar tareas • Cuando todas las tareas hayan sigo reasignadas, pulse en el botón “Eliminar” de debajo del nombre del usuario. • Pulsar el botón “Cancelar” para cerrar la ventana. 13.1.2 Tarea 13.1.2.a. Buscar tareas: • Puede entrar con cualquiera de los permisos. 72 • Puede acceder desde el menú superior al seleccionar “Tarea” en la opción “Buscar tarea” desde la pantalla donde están listados los proyectos del usuario o desde la pantalla principal de cualquier proyecto. • Se muestra una pantalla con diferentes filtros a definir. Se ha de seleccionar al menos un filtro. Figura 57. Pantalla de búsqueda de tareas • Para poder eliminar todos los filtros seleccionados y crear una búsqueda nueva se puede pulsar en limpiar. • Se pulsa en el botón “Buscar” y se listan debajo las tareas seleccionadas. Figura 58. Lista de la búsqueda de tareas 73 ◦ Si se pulsa en el icono de “ver” de una tarea, se abrirá una nueva pestaña con los datos de la tarea seleccionada. (Ver punto 13.1.2.d. Ver tarea) ◦ Si se pulsa en el icono de “eliminar” se abrirá una nueva pestaña con los datos de la tarea a eliminar y si está seguro podrá pulsar en “Baja” y eliminarla. (Ver punto 13.1.2.c. Eliminar tarea) 13.1.2.b. Crear tarea: • Loguearse con los permisos del administrador o el coordinador del proyecto. • Acceder al proyecto. • Seleccionar la opción “Tarea” en el menú y pulsar en “Crear tarea”. Se abrirá una nueva pestaña. Figura 59. Pantalla crear tarea • Rellenar la tarea con los datos requeridos. • Pulsar en el botón “Crear” de la parte inferior. • Pulsar “Cancelar” para cerrar la ventana. 74 13.1.2.c. Eliminar tarea: • Loguearse con los permisos del administrador o el coordinador del proyecto. • Acceder al proyecto. • Seleccionar la opción “Tarea” en el menú y pulsar en “Eliminar tarea”. Se abrirá una nueva pestaña. Figura 60. Pantalla eliminar tarea • Escribir la id de la tarea a eliminar y pulsar en “Comprobar datos”. • Si la tarea existe y es la que se pretende eliminar pulsar en el botón “Eliminar” de la parte inferior. • Pulsar “Cancelar” para cerrar la ventana. 13.1.2.d. Ver tarea: • Loguearse en el sistema con cualquier permiso. • Acceder al proyecto al cual pertenece la tarea, pulsando en la tabla. • Acceder a la tarea desde la tabla de tareas mostrada clicando en ella o desde la búsqueda de tareas (Ver punto 13.1.2.a. Buscar tareas) 75 • Se abrirá una nueva pestaña con dos secciones. ◦ La primera contendrá los datos generales de la tarea. Figura 61. Pantalla ver tarea, sección de datos generales ◦ Los campos modificables pueden ser cambiados y se grabaran pulsando el botón guardar. ◦ La sección de comentarios contiene una lista con los comentarios de esa tarea. 76 Figura 62. Pantalla ver tarea, sección de comentarios ◦ Para poder añadir un comentario a la tarea se podrá realizar escribiendo en el campo de texto debajo de la tabla y pulsando en “Añadir”. ◦ Para cerrar la pestaña pulsar en “Cerrar”. 13.1.3 Calendario 13.1.3.a. Mostrar el calendario: • Loguearse con cualquier permiso. Todos los usuarios tienen un calendario. • Se puede acceder desde la opción “Calendario” del menú superior de la pantalla principal o de un proyecto. • Se mostrara por defecto los eventos de un mes. 77 Figura 63. Pantalla calendario, vista por mes • En la parte superior derecha se puede seleccionar el filtro por mes, por semana y por día. Figura 64. Pantalla calendario, vista por semana 78 Figura 65. Pantalla calendario, vista por día • Para moverse en el tiempo hay que pulsar las flechas de la parte superior izquierda. • Para volver al mes o a la semana del día actual hay que pulsar en la opción “Hoy” en la parte izquierda superior. • Para cerrar la pestaña del calendario hay que pulsar en “Cerrar” en la parte inferior de la pantalla. 13.1.3.b. Ver evento del calendario: • Para ver un evento en detalle se ha de pulsar sobre el evento y se mostrara una ventana emergente con los datos. Figura 66. Pantalla calendario, evento de un mes 79 • Si el evento contiene una url, se puede pulsar en ella y se redirigirá hacia la pagina. 13.1.3.c. Crear evento del calendario: • Se abrirá una ventana emergente con un formulario para rellenar. Figura 67. Pantalla crear evento • Pulsar sobre el día que del evento. • Rellenar los campos indicados. • Si se selecciona la opción “Todo el día” no hace falta indicar hora. • Pulsar en “Crear”. • Se mostrara en el calendario el evento creado. 13.1.3.d. Modificar evento del calendario: • Pulsar sobre el evento. • Se abrirá una ventana emergente con un formulario rellenado con los datos del evento. 80 Figura 68. Pantalla modificar/eliminar evento • Modificar los campos indicados. • Pulsar en “modificar”. • Se mostrara en el calendario el evento modificado. 13.1.3.e. Eliminar evento del calendario: • Pulsar sobre el evento. (Ver figura 68) • Pulsar en “eliminar”. • Se eliminara en el calendario el evento indicado. 13.1.3.f. Mover eventos del calendario: • Arrastrar el evento al nuevo día seleccionado y soltar. 81 Figura 69. Pantalla arrastrar evento • Pulsar “Si” en el mensaje emergente donde pregunta “Esta seguro que desea mover el evento?”. • Se mostrara en el calendario el evento movido. 13.1.3.g. Cambiar el tiempo del evento del calendario: • Pulsar en la parte inferior del evento y alargar o encoger el evento hasta la hora deseada o el hasta el día deseado. Figura 70. Pantalla cambiar tiempo evento • Soltar el evento. 13.1.4. Usuario 13.1.4.a. Crear usuario: 82 • Loguearse con los permisos del administrador. • Seleccionar la opción “Usuario” del menú superior y pulsar en la opción “Crear usuario”. Se abrirá una nueva pestaña. Figura 71. Pantalla crear usuario • Rellenar los campos mostrados. Los indicados en amarillo son obligatorios. • Marcar la opción “Administrador” para que el nuevo usuario tenga permisos de administrador. • Marcar la opción “Activo” para que el nuevo usuario pueda acceder cuando se haya creado el usuario. • Pulsar en el botón “Alta” en la parte inferior de la pantalla. 83 • Se mostrará un mensaje de confirmación si se ha creado correctamente o de error si no se ha creado. • Pulsar en cancelar para cerrar la pestaña. 13.1.4.b. Eliminar usuario: • Loguearte con permisos de administrador. • Seleccionar la opción “Usuario” del menú superior y pulsar en la opción “Eliminar usuario”. Se abrirá una nueva pestaña. Figura 72. Pantalla de eliminar usuario • Escribe el usuario que desea eliminar y pulsa en el botón “Comprobar datos” de la parte inferior para comprobar si existe el usuario y rellenar los datos del formulario. De esta manera se comprueba que realmente es el usuario que se desea eliminar. • Pulsa en el botón “Baja” y el usuario sea desactivado del sistema y se eliminaran todas las referencias de él. • El botón “Cancelar” cierra la pestaña. 13.1.4.c. Añadir y eliminar varios usuarios de un proyecto: • Loguearse con permisos de administrador 84 • Seleccionar “Usuario” del menú superior y pulsar en “Añadir y suprimir usuarios” del menú desplegable. Figura 73. Pantalla para añadir y quitar usuarios • En la nueva ventana, seleccionar el proyecto al que se desea modificar los usuarios. • Al seleccionar el proyecto se rellenaran las dos listas con los usuarios. La de la izquierda es la que contiene los usuarios del proyecto y la derecha los restantes del sistema. • Para añadir se seleccionar el rol con el que se quieren añadirán los usuarios al proyecto. • Se selecciona de la lista de la derecha el usuario y le da a la fecha que apunta a la izquierda. • Para suprimir se selecciona de la izquierda los usuarios y se pulsa en la fecha que apunta a la derecha. 85 13.1.4.d. Consultar/Modificar perfil: • Para modificar o consultar el propio perfil puede loguearse con cualquier permiso. ◦ Se abrirá una nueva pestaña con el formulario rellenado con los datos del usuario actual. Figura 74. Pantalla usuario consultar/Modificar perfil (Permisos usuario) ◦ El campo contraseña y confirmación de contraseña estarán vacíos, si se quiere modificar la contraseña actual se deberán rellenar, en caso contrario dejarlos vacíos. ◦ Pulsar en el botón “Modificar”. ◦ Para salir pulsar “Cancelar”. 86 • Para modificar o consultar un perfil de otro usuario debe loguerse con permisos de administrador. ◦ Se abrirá una nueva pestaña con el formulario rellenado con los datos del usuario actual. Figura 75. Pantalla Consultar/Modificar perfil de usuario(Permisos administrador) ◦ Cambiar el usuario propio del campo “Usuario” por el usuario que se pretende consultar/modificar. ◦ Pulsar en “Comprobar datos” para que se rellenen los datos del usuario indicado. ◦ Si el usuario es correcto, modificar los datos y pulsar en “Modificar”. 87 ◦ El campo contraseña y confirmación de contraseña estarán vacíos, si se quiere modificar la contraseña actual se deberán rellenar, en caso contrario dejarlos vacíos. 13.1.4.e. Modificar permisos usuarios: • Loguearse con permisos de administrador o coordinador de proyecto. • Acceder al proyecto al que se le quiere cambiar los permisos del usuario. • En el menú superior seleccionar “Usuario” y pulsar en “Modificar los permisos de los usuarios”. • Se abrirá una pestaña nueva con dos listas desplegables y un campo de texto. Figura 76. Pantalla modificar permisos usuario • En la primera lista seleccionar el usuario. Al seleccionarlo se rellenará el campo de texto con los permisos actuales del usuario. En la segunda lista seleccionar el nuevo permiso. • Pulsar en “Modificar” para guardar los cambios y en “Cancelar” para cerrar la ventana. 13.1.5 Contabilidad 13.1.5.a. Ver estado contabilidad: 88 • Loguearse con permisos de coordinador de proyecto o administrador • Acceder al proyecto que se quiera mirar la contabilidad pulsando en la lista de proyectos. • En el menú superior del proyecto, seleccionar la “Contabilidad” y pulsar en “Visión general”. Se abrirá una nueva pestaña. • En la parte superior de la pantalla están los datos generales con el dinero total, el restante y el gastado. Figura 77. Pantalla Visión general de la contabilidad, sección datos proyectos • El botón de modificar sirve para realizar cambios en el dinero total y el nombre de la entidad financiera. • Debajo hay una tabla con el resumen económico según las particiones por año y categoría hechas y los gastos realizados. 89 Figura 78. Pantalla Visión general de la contabilidad, sección resumen económico • Debajo esta la sección por años. Donde se muestra una tabla con los gastos de cada año. Figura 79. Pantalla Visión general de la contabilidad, sección de gastos organizados por años • Para modificar estas particiones se puede pulsar en “Modificar partición por años”. (Ver punto 13.1.5.b. Modificar partición categorías) • Debajo esta la sección por categorías. Se muestra una tabla con los gastos de cada categoría. 90 Figura 80. Pantalla Visión general de la contabilidad, sección de gastos organizados por categorías • Para modificar estas particiones se puede pulsar en “Modificar partición por categorías.(Ver punto 13.1.5.c. Modificar partición años) • El botón cancelar sirve para cerrar la pestaña. 13.1.5.b. Modificar partición categorías: • Loguearse con permisos de administrador o coordinador del proyecto. • Pulsar en el proyecto a modificar. • Seleccionar del menú lateral izquierdo la opción de “Visión general” dentro de la sección de contabilidad. • Pulsar en el botón “Modificar partición por años” • Se abrirá una nueva pestaña con diferentes secciones según la acción a realizar. ◦ Datos proyecto: Figura 81. Pantalla partición por categorías, sección datos de proyecto 91 ▪ Aparecerá el proyecto y el dinero restante por gastar. ◦ Crear categoría nueva: Figura 82. Pantalla partición por categorías, sección de crear categoría nueva ▪ Rellenar el nombre de la nueva categoría. ▪ Rellenar el dinero. ▪ Pulsar en “Crear” ◦ Modificar categoría proyecto: ▪ Renombrar una categoría del proyecto: Figura 83. Pantalla partición por categorías, sección de renombrar categoría • Seleccionar la categoría. • Rellenar el nuevo nombre que tendrá. • Pulsar en “Renombrar”. ▪ Modificar dinero de la categoría: 92 Figura 84. Pantalla partición por categorías, sección de modificar el dinero de una categoría • Seleccionar la categoría de la lista desplegable. • Rellenar el dinero a modificar. La nueva cantidad no puede ser menor al total gastado. Si es menor, deberá modificar los gastos moviendolos a otra categoría. (Ver punto ) ◦ Eliminar categoría proyecto: ▪ Seleccionar de la lista desplegable la categoría a eliminar. Figura 85. Pantalla partición por categorías, sección de eliminar una categoría • Si tiene gastos (tanto generales como por año) se deberán mover para poder borrarla. Para ello aparecerá una sección para permitir moverlos. 93 Figura 86. Pantalla partición por categorías, sección emergente de mover gastos a otras categorías ◦ Ver los datos del gasto: ▪ Pulsar en el gasto. ▪ Se rellenarán los campos de debajo. ◦ Mover varios gastos juntos: ▪ Seleccionar todos los gastos de la lista años. (la lista es multiseleccionable) ▪ Seleccionar si la categoría se quiere a nivel general o seleccionar el año. ▪ Seleccionar la categoría. ▪ El dinero restante de la categoría debe ser mayor que el dinero total de los gastos a mover en ella. ▪ Pulsar en mover ◦ Pulsar en “Eliminar”. 13.1.5.c. Modificar partición años: 94 • Loguearse con permisos de administrador o coordinador del proyecto. • Pulsar en el proyecto a modificar. • Seleccionar del menú lateral izquierdo la opción de “Visión general” dentro de la sección de contabilidad. • Pulsar en el botón “Modificar partición por años” • Se abrirá una nueva pestaña con diferentes secciones según la acción a realizar. ◦ Crear un año: Figura 87. Pantalla partición años, sección de crear año ▪ Primera sección, rellenar el campo año y pulsar en “Crear” ◦ Eliminar año: Figura 88. Pantalla partición años, sección de eliminar año ▪ Seleccionar un año de la lista desplegable y pulsar en “Eliminar año” ◦ Añadir categoría a año: 95 Figura 89. Pantalla partición años, sección de añadir categoría a año ▪ Seleccionar un año de la lista desplegable. ▪ Seleccionar la categoría general que se le añadirá al año. ▪ Rellenar el dinero que tendrá la categoría del año que no supere el dinero de la categoría general. ▪ Pulsar en añadir. ◦ Eliminar categoría de año: Figura 90. Pantalla partición años, sección de eliminar categoría de año ▪ Seleccionar un año ▪ Seleccionar la categoría a eliminar. • Si la categoría contiene gastos se deberán mover a otra categoría diferente. • Se mostrará una lista con los gastos de la categoría a eliminar. Figura 91. Pantalla partición años, sección emergente de mover gastos 96 • Seleccionar un gasto. • Seleccionar una categoría diferente del año en la lista desplegable anexa. • Pulsar en “Mover gasto” • Cuando todos los gastos se hayan movido podrá eliminar la categoría. ▪ Pulsar en eliminar “Categoría”. ◦ Mover dinero del año: Figura 92.Pantalla partición años, sección de mover dinero del año ▪ Rellenar la cantidad de dinero a mover. ▪ Seleccionar el año del que se moverá. ▪ Seleccionar la categoría de la cual se moverá. ▪ Seleccionar el año destinatario. ▪ Seleccionar la categoría destinataria. ▪ Pulsar en “Mover dinero” 13.1.5.d. Buscar gastos: • Puede entrar con cualquiera de los permisos. • Puede acceder desde el menú superior al seleccionar “Contabilidad” en la opción “Buscar gastos” desde la pantalla donde están listados los proyectos del usuario o desde la pantalla principal de cualquier proyecto. • Se muestra una pantalla con diferentes filtros a definir. Se ha de seleccionar al menos un filtro. 97 Figura 93. Pantalla de buscar gastos, filtros de búsqueda • Para poder eliminar todos los filtros seleccionados y crear una búsqueda nueva se puede pulsar en limpiar. • Se pulsa en el botón “Buscar” y se listan debajo los gastos seleccionados. Figura 94. Pantalla de buscar tareas, lista filtrada 98 ◦ Si se pulsa en el icono de “ver” de un gasto, se abrirá una nueva pestaña con los datos de del gasto seleccionada. (Ver punto 13.1.5.g. Ver gasto) ◦ Si se pulsa en el icono de “modificar” se abrirá una nueva pestaña con los datos del gasto a modificar. Esta opción solo es posible para el administrador y el coordinador del proyecto de ese gasto. (Ver punto 13.1.5.h. Modificar gasto) ◦ Si se pulsa en el icono de “eliminar” se abrirá una nueva pestaña con los datos del gasto a eliminar y si está seguro podrá pulsar en “Baja” y eliminarlo. (Ver punto 13.1.5.f. Eliminar gasto) 13.1.5.e. Añadir gasto: • Loguearse con los permisos de administrador o coordinador de proyecto al cual pertenecerá el gasto. • Acceder al proyecto al que pertenece el gasto desde la lista de proyectos. • Seleccionar en el menú superior la opción “Contabilidad” y pulsar en “Añadir gasto”. • Se abrirá una nueva pestaña con un formulario que se debe rellenar. 99 Figura 95. Pantalla de crear gasto • En la parte inferior hay tres listas desplegables que definirán el año y la categoría a la que pertenecerá el gasto. ◦ Para que sea un gasto perteneciente a un año en particular seleccionar un valor de la lista de años y a continuación una de sus categorías. ◦ Si se quiere dejar como un gasto general, que no pertenezca a ningún año, seleccionar un valor únicamente de la lista desplegable. • Pulsar en el botón “Añadir”. 100 13.1.5.f. Eliminar gasto: • Loguearse con los permisos de administrador o coordinador de proyecto al cual pertenecerá el gasto. • Acceder al proyecto al que pertenece el gasto desde la lista de proyectos. • Seleccionar en el menú superior la opción “Contabilidad” y pulsar en “Eliminar gasto”. Figura 96. Pantalla de eliminar gasto • Se abrirá una nueva pestaña con un formulario con el campo id gasto habilitada y el resto de campos des habilitados. Hay que rellenar la id del gasto y pulsar en el botón “Comprobar” de la parte inferior del formulario. • Cuando se hayan rellenado los campos y se haya comprobado que es el gasto correcto. Pulsar en “Eliminar”. 101 • El botón “Cancelar” sirve para cerrar la pestaña nueva abierta. 13.1.5.g. Ver gasto: • Loguearse con cualquier permiso. • Pulsar en el proyecto al cual pertenezca el gasto. • Aparecerá una lista de gastos en la parte inferior de la pantalla: ◦ En el caso del investigador aparecerán sus gastos. ◦ En el caso del administrador o coordinador aparecerán los de todo el proyecto. • Para ver un gasto, pulsar en él. Figura 97. Pantalla de ver gasto • También se pude acceder desde la opción “Buscar gasto” en el apartado “Contabilidad”. (Ver punto 13.1.5.d. Buscar gastos) • Para salir pulsar en “Cancelar” 102 13.1.5.h. Modificar gasto: • Loguearse con permisos de administrador o coordinador de proyecto. • Acceder al proyecto seleccionado. • Pulsar en “Buscar gastos” en la sección “Contabilidad”.(Ver punto ) • Pulsar en la columna “Modificar” del gasto seleccionado. • Se abrirá una ventana con el formulario rellenado. Figura 98. Pantalla de modificar gasto • Cambiar los datos: ◦ Para las categorías: 103 ▪ Si el gasto no pertenece a ningún año en particular, seleccionar la lista desplegable de “Categoría general”. (Dejar en blanco el año y la categoría año) ▪ Si el gasto pertenece a un año, seleccionar el año y seguidamente la “Categoría año”. (Dejar en blanco la general) • Pulsar en “Modificar”. • Pulsar en “Cancelar” para cerrar la ventana. 104