Full text
1 ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA Grado de Ingeniería de Software Gestor de contenidos para congreso internacional - Content manager for international conference Realizado por Pablo Pino López Tutorizado por Carlos Canal Velasco Departamento Departamento de Lenguajes y Ciencias de la Computación UNIVERSIDAD DE MÁLAGA MÁLAGA, Julio de 2015
2
3 ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA Grado de Ingeniería de Software Gestor de contenidos para congreso internacional Content manager for international conference Realizado por Pablo Pino López Tutorizado por Carlos Canal Velasco Departamento Departamento de Lenguajes y Ciencias de la Computación UNIVERSIDAD DE MÁLAGA MÁLAGA, Julio de 2015 Fecha defensa: El Secretario del Tribunal
4
5 Resumen: El objetivo del presente TFG es la realización de un portal web dedicado a congresos internacionales organizados por nuestra Facultad. Se pretende que sea un medio fácil de información para todos los interesados/participantes que quiera saber toda la información relevante sobre el mismo: ámbito de la conferencia, programa, talleres, tutoriales y otros eventos asociados, localización de las salas, acceso a materiales (actas, fotografías, vídeo de las charlas, etc.), información sobre alojamientos disponibles, actos sociales, información turística, etc.), que sirva para publicitar el evento, establecer una comunidad de participantes y permitir todo el proceso de inscripción en el congreso. Hasta la fecha, las webs de los congresos organizados en la Escuela se han desarrollado utilizando técnicas adhoc, lo que dificulta tanto su mantenimiento como su reutilización en eventos posteriores por lo hemos creado esta web con objetivo de poder reutilizarse para eventos futuros que se quieran celebrar. Para eso hemos optado por el gestor de contenidos Wordpress para poder explotar todas las posibilidades de programación de plantillas (themes) y complementos (plugins) así como el desarrollo de una aplicación web para la gestión de la inscripción de participantes, la comunicación con los mismos, y su integración con el sistema virtual de pagos de la universidad y con la agencia de viajes para la gestión del alojamiento. Palabras claves: Gestor de contenidos, Wordpress, CMS, Primefaces, JSF, Ajax, API Java, Managed Beans, Glassfish, MySQL, HTML, CSS. Abstract: The aim of this TFG is the realization of a web portal dedicated to international conferences organized by our faculty. It is intended as an easy means of information for all stakeholders / participants who want to know all the relevant information about it: scope of the conference program, workshops, tutorials and other associated events, location of rooms, access to materials (records, photographs, video chats, etc.), information on available accommodation, social events, tours, etc.), that serves to publicize the event, to establish a community of participants and allow the process of registration for the congress. To date, the websites of the conferences organized in the School have been developed using ad hoc techniques, which makes both maintenance and reuse in later events so we created this website in order to be reused for future events that want to celebrate. That's why we opted for the CMS Wordpress to exploit all possibilities of programming templates (themes) and add-ons (plugins) and the development of a web application for managing the registration of participants, communication with them, and integration with virtual payments system of the university and with the travel agency for the management of the housing.
6 Keywords: Wordpress, CMS, Primefaces, JSF, Ajax, API Java, Managed Beans, Glassfish, MySQL, HTML, CSS.
7 Índice 1. Introducción 1.1 Justificación del proyecto. 1.2 Organización del proyecto y objetivos. 1.3 Objetivos 1.4 ¿A qué público va destinada la web? 1.5 Funcionalidades. 1.6 Diagrama del hardware. 1.7 Riesgos iniciales. 2 Trabajos relacionados 2.1 Gestor de contenidos 2.2 CMS (Conference Management System) 3 Documentación técnica 3.1 Gestor de contenidos 3.2 Base de datos 3.3 Registro 3.4 API correo 3.5 FDF 4 Documentación de usuario 5 Conclusiones 6 Trabajos futuros 7 Referencias 8 ANEXO I
8
9 1. Introducción El proyecto constituye la realización de una investigación y el desarrollo en Wordpress de un portal web y de un formulario de inscripción basado en la tecnología JSF apoyado con la librería Primefaces, fundada en la propuesta de proyecto: “Gestor de contenidos para congreso internacional”. Esta investigación junto al producto resultante final, el soporte del consultor y las tecnologías de desarrollo empleadas, constituyen los aspectos claves del proyecto. 1.1 Justificación del proyecto En los últimos años, la Escuela de Informática de la Universidad de Málaga ha tenido la oportunidad de acoger numerosos congresos internacionales sobre los últimos avances en Tecnologías de la Información, entre los que podemos citar ECOOP 2002, JISBD/PROLE 2004, ESSLLI 2006, TOOLS 2010 y ESOCC 2013, así como un sinfín de eventos de menor tamaño. La organización de este tipo de eventos, en los que hemos llegado a recibir hasta 600 participantes de todas partes del mundo, implican la realización de importantes esfuerzos logísticos, de información y organizativos con el fin de asegurar que el evento sea un éxito, lo que en definitiva redunda en la proyección internacional de la Escuela, la Universidad de Málaga y la propia ciudad. Por ello este proyecto de página web en Wordpress para que de apoyo al mercado de congresos internacionales que se vienen dando en nuestra escuela. Wordpress es una plataforma de Wordpress.org fundada en el proyecto de : “ Gestor de contenidos para congreso internacional ”. Las principales claves para que este proyecto resulte exitoso se basan en lo siguiente: • Tener lo antes posible el nuevo canal de comunicación para obtener nuevos profesionales de nuevas tecnologías y por consiguiente incrementar los beneficios. Estos beneficios se nutren de herramientas de calidad para que se facilite la implementación. • Las herramientas utilizadas para el desarrollo y la puesta en producción del portal web deben ser económicas, o incluso gratuitas con el propósito de reducir costes de desarrollo y posterior mantenimiento en producción. Para ello se ha utilizado herramientas gratuitas y de código abierta para satisfacer estas necesidades. En el mercado existe multitud de herramientas gratuitas, e incluso de código abierto que podrían satisfacer estas necesidades. Estas podrán ser seleccionadas según se adecue tras el análisis y diseño. Una variedad de posibles soluciones y herramientas podrían ser:
16 participantes, el boletín de reserva de alojamiento se rellenará automáticamente a partir de los datos recogidos en el proceso de inscripción. • Se automatizará la comunicación vía email con los participantes para confirmar la recepción de la inscripción y la recepción del pago. 1.5 ¿A qué público va destinada la web? El proyecto va destinado a dos tipos de usuarios: clientes y administradores del portal. Para la parte de administradores aportaremos un manual de usuario que detallaré más adelante, para poder gestionar el sitio, así como realizar las modificaciones que crea oportunas. Además este manual servirá para que se pueda reutilizar esta web como una plantilla para futuros eventos que puedan surgir, sin tener que empezar una página desde cero, haciendo uso de nuestro formulario de inscripción, así como de páginas y plugins que puedan ser útiles a la nueva web. La usabilidad que harán los clientes del portal es el siguiente recorrido virtual: Home Esta será nuestra página de inicio al iniciar la web. >> Past editions Resumen de conferencias que se realizaron anteriormente en nuestra escuela de Informática >> Important Dates Informamos a los usuarios de las fechas primordiales para los pagos de los eventos. >> About Conference Resumen de los aspectos importantes de la conferencia que se va a llevar a cabo. Call for papers Es el motivo esencial por el cual se celebra esta conferencia. Se trata de un método usado en el mundo académico para recoger los artículos del libro o de diario o las presentaciones de la conferencia. Un CFP se envía generalmente a las partes interesadas, describiendo el tema amplio, la ocasión para el CFP, formalidades tales como lo que un poco tiene que ser sometido el extracto (resumen) quién y a un plazo. Call for workshops Talleres que proporcionan una oportunidad a los participantes para discutir de temas
17 específicos. Es el lugar principal para el intercambio de ideas técnicas innovadoras y experiencias relacionadas con los enfoque de ingeniería de software. Committes Información personal y profesional de los distintos comités que está organizada la conferencia. Está formada por estos tres comités: Steering Committe, Program Committe y Organitation Committe. Register Nos llevará al formulario de inscripción de la conferencia, pudiendo adquirir LNCS o CCIS si está interesado. También te permite elegir un lugar de alojamiento para hospedar mientras se celebra la conferencia. News En esta sección subiremos en línea noticias acerca de la conferencia de invitados novedosos, resumen de jornadas anteriores, actividades interesantes para la comunidad universitaria en concreto a los informáticos. Informe de actividades paralelas, conferencias de eruditos en las últimas tecnologías. Para que sea más visual cada noticia irá acompañada de fotografías y videos de las jornadas. Calendar Calendario que nos informará de las charlas dividido en una semana con franjas horarias para que dé un impacto visual los asistentes queden bien informados. También he introducido un motor de búsqueda rápido con la denominación Fecha y Lugar. Location Esta conferencia ofrece a los participantes conocer la parte social e histórica de Málaga. También se le informa a los asistentes de forma detallada los distintos transportes para llegar a la Conferencia como el Metro, el Tren, el Autobús y el Cercanías. Además en esta sección se abre un enlace que abre a Málaga Turismo. Ya que uno de los objetivos de esta conferencia es desarrollar Turismo Conferencia. Ya que será no sólo un impacto
18 intelectual sino también turístico. Contact Se le permite al usuario tener un contacto directo con el administrador de la web. En la parte superior central nos encontramos con las distintas redes sociales como son Facebook, Google Plus, Linkedin, RSS Feed y también servicios de Email. Ya que esta conferencia quiere apostar por la parte social media para que los participantes interactúen, debatan, se comuniquen así como se produzcan proyectos y sinergias. Para ver el diseño final que tiene nuestra página os adjunto las imágenes en el ANEXO I. 1.6 Funcionalidades a implementar Las funcionalidades principales que se implementarán en el portal web que derivan de los requerimientos son las siguientes: • Gestor de contenidos. • Plataforma de inscripción al congreso. • Creación de API para gestión de correos para la inscripción al congreso. • Generación FDF para la reserva de hoteles. 1.7 Diagrama del hardware. Uno de los requisitos del cliente es alojar el portal web en sus instalaciones, en un servidor Ubuntu que se encuentra alojado en la escuela. Para ello se utiliza Wordpress en producción además como plataforma de desarrollo. Para tal propósito se nos habrá creado una carpeta que será donde montaremos nuestro portal web y se nos asignará un dominio que apunte a esa dirección. El servidor web correrá por la parte de Apache para la gestión del contenido generado por Wordpress, mientras que Glassfish lo hará para la inscripción a la conferencia. El siguiente diagrama muestra la arquitectura que se deberá implementar.
19 1.7 Riesgos iniciales. A continuación se enumeran los factores que pueden afectar adversamente al proyecto y las actividades para mitigar las consecuencias de los problemas en el caso de que estos sucedan: • Caída de los servicios de virtualización: es algo que no podemos controlar por lo que se realizarán copias de seguridad en soportes externos de forma periódica. • Bugs o excepciones de las aplicaciones de desarrollo o implementación errónea que pueda llevar a las mismas. • Familiarización con la librería Primefaces y diversas funcionalidades de Ajax.
20 2. Trabajos relacionados En esta sección hablaremos de los gestores de contenidos y su utilidad en el ámbito de las CMS, así como de sus ventajas e inconvenientes. 2.1 Gestor de contenidos Hay varias opciones para crear tu proyecto web. Se puede desarrollar desde cero o bien utilizando un entorno donde crear una estructura de soporte para administrar los contenidos. Los Gestores de Contenidos poseen una interfaz que controlan una o varias bases de datos donde se aloja el sitio web. A través de unos accesos es posible crear una serie de roles como administrador, editor o participantes sin necesidad de dar un formato nuevo a los contenidos que se vayan añadiendo. Una forma segura, fácil y rápida de generar contenidos con un formato predefinido. En el mercado tenemos ya una amplia gama de gestores de contenidos. Para nuestro TFG hemos apostado por Wordpress. ¿Por qué apostamos por Wordpress? o Wordpress es uno de los Gestores de contenidos más conocidos. Este CMS se enfoca, normalmente, en la creación de blogs. Sin embargo, el fácil manejo de su panel de administración permite crear webs modernas y de gran usabilidad. Su desarrollo se basa en PHP y MySQL, licenciado bajo GPL. o Una de las grandes ventajas de Wordpress es su código modificable y la inserción de plugins para añadir mejoras o extras al sitio web. Cualquier usuario puede programar sus plugins y adaptarlos a las necesidades de cada proyecto. o Otra razón por la que WordPress tiene tanto éxito, es que tiene miles de temas (themes) entre los que elegir. Tienes todo tipo de diseños y estilos al alcance de tu mano. Wordpress permite insertar plantillas propias para hacer de la web un producto único. Además, el uso de los widgets terminan de dar el toque final al diseño de una interfaz atractiva, personalizada y de fácil navegación. o Los llamados plugins incrementan las funcionalidades de tu web de manera espectacular. Las páginas web tradicionales necesitan programar todo desde cero mientras que los plugins de WordPress se instalan por lo general en 3 clics. Algunas cosas que se pueden hacer instalando plugins: añadir galerías de fotos, sistemas de venta online, foros, mapas, iconos para compartir en redes sociales, mejoras para el posicionamiento en buscadores, formularios de inscripción, encuestas, formularios de contacto, y un inmenso etc. Eso si, hay que asegurarse de instalar plugins de calidad contrastada para evitar problemas de compatibilidad o de ralentización de la web.
21 o Con Wordpress es posible desarrollar una web muy rápidamente y con un resultado profesional. Por algo es uno de los gestores favoritos por la comunidad. Su facilidad de uso hace que sea un sistema que permite al usuario crear y mantener un sitio web por sí mismo sin necesidad de recurrir a terceros. Esto te permite una curva de aprendizaje increíblemente rápida, ya que contiene un panel de control y un editor visual muy intuitivos. WordPress te permite actualizar sus plugins y temas desde el panel de administración. Además te avisa cuando hay una nueva versión disponible para que puedas actualizarla con un solo clic. o WordPress tiene una programación muy atractiva para los motores de búsqueda, y aparte hay muchos plugins pensados para mejorar el posicionamiento en buscadores (SEO), como WordPress SEO by Yoast y Google XML Sitemaps. o Este gestor está preparado para la web móvi ya que cada vez hay más gente que navega por internet desde su smartphone o tablet. Un diseño “responsive” (adaptativo) hace que la web se adapte automáticamente a los smartphones y tablets, modificando su apariencia para optimizar la usabilidad en dispositivos que tienen un menor tamaño de pantalla y menos potencia que los ordenadores de sobremesa. La mayoría de temas de WordPress ya están diseñados para visualizarse correctamente en móviles y el panel de WordPress funciona tanto en smartphones como en PCs de sobremesa, así que puedes gestionar fácilmente tu página desde cualquier dispositivo con acceso a internet. En comparación con sus competidores en el mercado tenemos: o DotNetNuke: es un sistema de gestor de contenidos especialmente diseñado para ser utilizado en Intranets y portales de Internet. Básicamente DNN es el soporte de gestión del Web que nos permite realizar cualquier tipo de modificación en un breve espacio de tiempo. Es un sistema abierto, escalable, fiable, modular y libre. o Magento se trata de una de las herramientas más utilizadas para crear tiendas online de cualquier temática ya que se adapta a todo tipo de productos. Potencia la usabilidad y facilita el manejo del catálogo, pero ante todo asegura una implementación del eCommerce SEO optimizado. o Drupal es el Gestor de Contenidos adecuado para gestionar comunidades. Si estás pensando en crear un foro de discusión, un portal comunitario o bien tu propia red social, Drupal es una de las mejores herramientas para ello. Una plataforma open source que da importancia a cada una de las páginas con un sistema muy configurable con programación en php.
22 o PrestaShop es Otra de las plataformas open source dedicada a crear tiendas online. Se trata de una de las mejores herramientas para aquellas empresas que necesiten una tienda online sencilla, práctica y con fácil posicionamiento natural en buscadores. Ninguno de los gestores anteriormente mencionados no cumple con la prestación que nos ofrece WordPress, ya sea porque no está orientado a la creación del tipo de portal que buscamos, así como que no incluye el diverso número de plugins y complementos que usa WordPress. Los anteriores gestores descritos están más enfocados a otro tipo de negocios donde nosotros no nos hemos querido enfocar, por lo que Wordpress sigue siendo nuestro gestor favorito para este tipo de portales. 2.1. CMS Su nombre viene de las siglas Conference Management System. Es un software (normalmente mediante interfaz web) que asiste en la organización de congresos científicos o técnicos. Ayuda a los organizadores, al comité de programa (revisores) y a los autores a realizar el proceso de Revisión por pares. Este tipo de sistemas también se utilizan para publicaciones con arbitraje. Las funciones típicas y el flujo de trabajo de estos sistemas son: o Recibir los artículos de los distintos autores. o Permitir que estos artículos sean anónimos para los revisores. No siempre se utiliza este mecanismo. o Permitir que los revisores ingresen los tópicos de interés o los trabajos que desean evaluar (Bidding). o Manejar los conflictos de interés. Por ejemplo autor y revisor perteneciente a la misma institución. o Asignación de revisores a cada trabajo. o Distribuir los artículos a los revisores correspondientes. o Recolectar las revisiones. o Supervisar el proceso y el estado de las revisiones. o Compartir las revisiones entre los revisores asignados. Para asegurar la independencia de las revisiones Los revisores no pueden ver otras calificaciones antes de haber hecho la propia evaluación. o Organizar las revisiones y definir un nivel de aceptación (puntaje necesario para aceptación). o Hacer anónimas las revisiones (para los autores y para los demás revisores).
23 o Distribuir las revisiones a los autores correspondientes. o Recolectar las versiones finales de los trabajos aceptados. Algunos sistemas, además de la revisión de pares, cubren otros aspectos de una conferencia o congreso: o Crear un sitio web del evento. o Registro de asistentes y pago de inscripción. o Publicación de Actas (reunión académica). o Impresión de tarjetas de identificación (gafete o name tag) y certificados de asistencia. Como puedes ver, tal como indica Wikipedia, estos CMS se encargan fundamentalmente de la gestión de los artículos que se envían a la conferencia, su revisión por parte de expertos en el tema y su aceptación o rechazo. Solo algunos CMS se encargan de otros aspectos relacionados con la organización de congresos como: o El website de la conferencia o La inscripción de participantes o La publicación de las actas (con los artículos presentados en la conferencia). En nuestro campo, para todo lo relacionado con la gestión de los artículos, se utiliza fundamentalmente Easychai r . Se trata de un sistema de gestión de conferencias que es flexible, fácil de usar, y tiene muchas características para que sea conveniente para los varios modelos de conferencias. Actualmente es probablemente el sistema de gestión de conferencias más comúnmente utilizado. Aunque también se encuentra Cyberchair. Este permite ahorrar una gran cantidad de dinero en la copia de documentos y envío de los documentos a los revisores. CyberChair apoya plenamente todas las actividades que vienen con el proceso de revisión: la presentación de papel (camera-ready) abstracta y, la asignación revisor (basado en las preferencias y la experiencia de los revisores), el proceso de presentación de examen, las notificaciones de aceptación y el rechazo, la preparación de las medidas (de acuerdo con el procedimiento de Springer-Verlag), y los resúmenes de la página web del congreso y el folleto del programa. Fue desarrollado por primera vez para ECOOP'97, y se ha extendido ya que, en base a las nuevas ideas y las sugerencias y comentarios de sus usuarios (presidencia, los revisores y peticionarios). Para las actas o proceedings, lo habitual es contactar con alguna editorial (por ejemplo Springer, que publica los LNCS). LNCS publica resultados de
24 investigaciones en ciencias de la computación, especialmente en forma de actas (o proceedings), post-actas y monografías de investigación. Adicionalmente, tutoriales, resúmenes del estado del arte y "hot topics" (tópicos con alta demanda) están siendo cada vez más incluidos. Todo eso sigue dejando sin cubrir dos campos: el website y la inscripción de participantes. El objeto del proyecto es entonces desarrollar un sistema propio para la gestión de estos dos aspectos, utilizando Wordpress para el website (facilidad de mantenimiento y cambio de layout, multiedición) y un sistema propio para la inscripción de participantes (se podría pensar en usar algún CMS para e-commerce para la inscripción, y en algunas conferencias lo hacen, pero las características específicas de las conferencias como producto o artículo a vender y del sistema de pagos (tpv) de la UMA nos llevan a preferir hacer un desarrollo propio, que sea fácilmente reutilizable y adaptable a sucesivas conferencias que vayamos organizando). Existen algunas alternativas específicas para conferencias, como UEvent, pero no son gratuitas.
25 3. Documentación técnica. Parte de este TFG es la documentación técnica de la aplicación para saber información sobre lo que se trata en éste TFG y de la tecnología que se ha usado. 3.1 Gestor de contenidos Antes de empezar con Wordpress debemos tenerlo instalado en nuestro servidor. La instalación consiste en descomprimir el paquete de Wordpress y arrancarlo desde Apache. Éste paquete debe estar descomprimido (en mi caso, que estoy usando Wampserver) dentro de la carpeta c:/../wamp/www. La URL es http://localhost:80/nombre_carpeta donde nombre_carpeta será el nombre que le daréis a vuestra carpeta una vez descomprido el paquete de Wordpress. Una vez dentro nos aparecerá una pantalla de configuración de la página. Nos pedirá el idioma, nombre del administrador, password, nombre del sitio, etc. Esos datos se podrán modificar más adelante si se requiere. Una vez terminado aparecerá la página de login y entraremos en nuestro panel de control. Para poder acceder a nuestro panel de control del sitio se accede mediante la URL http://conference.lcc.uma.es/wp-login.php
32 o Quick Page/Post Redirect Plugin: Plugin que usamos para redireccionar a la página de Málaga Turismo. o Team Members: Plugin para crear miembros de equipos. Lo he usado para crear los participantes de los diferentes comités que formarán el congreso. Nos aparecerá la pestaña donde podremos organizar los equipos o añadir nuevos miembros a los grupos. Estos son los 3 grupos que hemos creado: Organization Committe, Program Committe y Steering Committe. Con el shortcode que nos proporciona lo copiamos y pegamos en las diferentes páginas que creamos con el mismo nombre que los equipos. Pulsando sobre Editar un equipo nos aparecerá esta ventana. En ella podremos poner toda la información personal y de contacto del miembro que vayamos a crear. Se le puede asociar redes sociales, web, correo,.. así como añadir una imagen personal.
33 o The Events Calendar: Este plugin se utilizará para gestionar las conferencias. En él crearemos las conferencias indicando lugar donde se celebra, horario, organizador y más información detallada de ella. Pulsando sobre nos aparecerá este desplegable. Explicaré los submenús de Eventos más interesantes.
34 o Eventos: Nos muestra la lista de los eventos que hemos ido creando. Podremos editarlos, eliminarlos, dejar de publicar, … Esta son las charlas que he creado para hacer pruebas. Agregar nuevo: Para crear un nuevo evento. Podremos añadir una descripción sobre el evento, asignar fecha y hora del evento, detalles del lugar, detalles del organizador, página web del evento, precio del evento, añadir extractos o texto personalizados. Etiquetas: Misma función que para las páginas. Categorías: Misma función que para las páginas. Lugares: Puedes crear lugares donde luego vincular los eventos que vamos creando. Organizadores: Crearemos los organizadores donde añadiremos información personal y de contacto. Ajustes: Podremos mostrar los eventos en forma de lista o de calendario. Nosotros lo mostraremos en forma de calendario para darle más vistosidad a la página. Cuando pulsemos sobre algún evento nos llevará a otra página que nos mostrará la información detallada de dicho evento.
35 WP Google Maps: Nos permite insertar mapas a las páginas para saber la ubicación de los eventos. Pegando el shortcode que nos da el mapa en la página que queramos tendremos nuestro mapa insertado en la página. Pulsando sobre podremos crear el mapa, configurar el zoom, configuración de diseño, etc. 3.2 Base de Datos Nuestra base de datos la hemos instalado con MySQL. MySQL es una base de datos open source que nos permite gran escalabilidad y flexibilidad para gestionar base de datos. Ofrece un alto rendimiento, así como una alta disponibilidad. Además nos permite proteger los datos de manera eficaz y su facilidad de gestión que hace que sea uno de los mejores motores de base de datos del mercado. La base de datos la llamaremos congress con cotejamiento utf8_unicode_ci. Está formada por 16 tablas que he creado para la gestión de registro de las conferencias. Además tiene las tablas que se han creado automáticamente de Wordpress que elegimos nosotros que se instalaran en dicha base de datos. Información de las tablas: Accommodation Nombre Tipo Nulo Extra Descripción id Int(4) No AUTO INCREMENT Primary key de Accommodation idHotel Int(4) Si Primary key del hotel elegido arrival Date Si Fecha de inicio de la reserva del hotel departure Date Si Fecha de fin de la reserva del hotel cost Float Si Coste de la reserva del hotel dirpostalId Int(4) Si Primary key de Dirpostal registeredId Int(4) Si Primary key de Registered
36 Comment Nombre Tipo Nulo Extra Descripción Id Int(4) No AUTO INCREMENT Primary key de Comment commentDiet Varchar(1000) Si Comentario sobre la dieta commentAddttional Varchar(1000) Si Comentario adicional registeredId Int(4) Si Primary key de Registered Country Nombre Tipo Nulo Extra Descripción Iso Char(2) No Primary key de Country name Varchar(80) No Nombre del país printable_name Varchar(80) No Nombre completo del país iso3 Char(3) Si Abreviatura del país numcode Smallint(6) Si Código numérico identificativo para cada país Dates Nombre Tipo Nulo Extra Descripción Id Int(4) No AUTO INCREMENT Primary key de Dates Date Varchar(75) No Nombre y fecha de las diferentes conferencias
37 Comment Varchar(200) Si Comentario adicional sobre la conferencia Datespayment Nombre Tipo Nulo Extra Descripción Id Int(4) No AUTO INCREMENT Primary key de Datespayment early Date No Fecha más lejana al evento Late Date No Fecha más próxima al evento outsite Date No Fecha de inicio del evento Diet Nombre Tipo Nulo Extra Descripción Id Int(4) No AUTO INCREMENT Primary key de Diet Diet Varchar(200) No Tipos de dietas comment Varchar(200) Si Comentario adicional sobre la dieta Dirpostal Nombre Tipo Nulo Extra Descripción Id Int(4) No AUTO INCREMENT Primary key de Dirpostal address Varchar(255) Si Dirección postal del usuario address 2 Varchar(255) Si Dirección postal alternativo del
38 usuario Dp Varchar(255) Si Código postal City Varchar(255) Si Ciudad country Varchar(255) Si País Tax Varchar(255) Si Código tax passport Varchar(255) Si Pasaporte Extras Nombre Tipo Nulo Extra Descripción Id Int(4) No AUTO INCREMENT Primary key de Extras amount Int(11) Si Cantidad de extra Prices Float Si Precio del extra registeredId Int(4) Si Primary key de Registered priceId Varchar(20) Si Id del extra. Hotel Nombre Tipo Nulo Extra Descripción Id Int(4) No AUTO INCREMENT Primary key de Hotel Name Varchar(255) Si Nombre del hotel Star Int(5) Si Número de estrellas del hotel Price Float Si Precio de la habitación Information Nombre Tipo Nulo Extra Descripción
39 Id Int(4) No AUTO INCREMENT Primary key de Information name Varchar(255) Si Descripción del nombre. Almacenaremos información relevante de los congresos como el nombre del congreso, email de contacto, logo del congreso, etc. Payment Nombre Tipo Nulo Extra Descripción Id Int(4) No AUTO INCREMENT Primary key de Payment fullPayment Float Si Total a pagar actualPayment Float Si Campo para ver si ha pagado reference Varchar(255) Si Referencia del pago del evento timestamp Timestamp Si ON UPDATE CURRENT TIMESTAMP Fecha y hora del pago idRegistered Int(4) Si Primary key de Registered Registered Nombre Tipo Nulo Extra Descripción Id Int(4) No AUTO INCREMENT Primary key de Registered affiliation Varchar(255) No Afiliación name Varchar(255) No Nombre de la
40 persona familyname Varchar(255) No Apellidos de la persona fullname Varchar(255) No Fecha y hora del pago email Varchar(255) No Email de contacto telephone Varchar(20) Si Teléfono de contacto password Varchar(255) No Password timestamp Timestamp No ON UPDATE CURRENT TIMESTAMP Fecha y hora del registro titleId Int(4) Si Primary key de Title dietId Int(4) Si Primary key de Diet countryId Int(4) No Primary key de Country Registeredtype Nombre Tipo Nulo Extra Descripción Id Int(4) No AUTO INCREMENT Primary key de Registeredtype register Varchar(20) No Id que exportamos en Extras registertype Varchar(255) No Tipo de registro Socialactivities Nombre Tipo Nulo Extra Descripción Id Int(4) No AUTO INCREMENT Primary key de Socialactivities idAttendance Int(4) Si Primary key de Dates (fecha de inicio)
41 idTo Int(4) Si Primary key de Dates (fecha de fin) registeredId Int(4) Si Primary key de Registered Title Nombre Tipo Nulo Extra Descripción Id Int(4) No AUTO INCREMENT Primary key de Title Title Varchar(10) No Nombre del título de tratamiento Aquí mostraremos el diagrama final para que se entiendan bien las relaciones entre las tablas. Como vemos existen dos tablas que almacenan información acerca del evento. La tabla Information será usada para almacenar información como el nombre de la conferencia, el email de uso para el servidor de correo, el logo que se usará en la conferencia, etc. Mientras que la tabla Datespayment nos servirá para poder recalcular los pagos de los congresos a efectos de dichas fechas. Estas fechas variaran según se vaya acercando la celebración de dicho evento.
48 Es el método que carga inicialmente nuestra aplicación. Posee la etiqueta @PostConstruct. En él se cargarán algunas listas por defecto y veremos si la persona que ha entrado está registrada en la BD o no. En caso de si se redirigirá al metodo init_edit_me(). private void init_edit_me() Nos cargará los datos almacenados del usuario que ha iniciado sesión. public void emailExist() Procedimiento que nos dirá si se ha introducido un email que ya existe en el sistema. En caso de existir se notificará con un mensaje de error. public void onRowSelect(SelectEvent event) Método para seleccionar una columna de una tabla. Se usará para la tabla de hoteles. public void calculatePricesCongress() Nos calculará el precio del congreso según la opción elegida por el usuario. private float calculateIntervalDate(Prices p) Nos permite recalcular el precio del congreso según las tarifas acordes a sus fechas. Recordemos que tenemos 3 tipos de fechas para pagar: early, late y outsite. Según sea la fecha de registro, nos aparecerá el precio de dicho evento. public void calculatePricesLNCS() Nos calculará el precio de LNCS según la cantidad elegida y lo mostrará por pantalla de forma automática. public void calculatePricesCCIS() Nos calculará el precio de CCIS según la cantidad elegida y lo mostrará por pantalla de forma automática. public void calculatePricesDinner() Nos calculará el precio de la cena según la cantidad de tickets elegidos y lo mostrará por pantalla de forma automática. public void loadListTo() Nos permitirá cargar una lista de fechas a través de un índice ya dado. Lo usaremos para cuando el usuario elija el día que asistirá el evento pueda elegir el día que finalizará su asistencia a dicho evento. public void updateDate() Nos permitirá actualizar el calendario de fin de reserva del hotel. Nos servirá para poder controlar que no pueda introducir una fecha de fin de reserva menor que una fecha de inicio de la reserva. public void calculateNights()
49 Calcula el número de noches que ha elegido para realizar la reserva del hotel. public void calculateFullPayment() Calculará el total del congreso a pagar por el asistente. Será la suma del tipo de tarifa elegida para asistir más si eligió LNCS o CCIS o tickets para la cena. public String onFlowProcess(FlowEvent event) Se usa para pasar por las pestañas de nuestro formulario. Nos sirve para controlar que los datos introducidos han sido correctos antes de ser introducidos. public void doRegister() Nos permitirá registrar o editar según si entro como inicio de sesión (llamará al método edit_me()) o como registro (llamará al método new_user()). private void createExtras(Integer idRegistered, String idPrice, Integer amount, float cost) Nos permite crear extras de forma individual. private void editExtras(Extras extra, Integer amount, float cost) Nos permite editar los extras de forma individual. private void createRegistered(Registered reg) Nos permite crear un nuevo usuario. private void createAccommodation(Accommodation acc) Si eliges un hotel para alojar nos permite guardar toda la información para efectuar la reserva. private void createDirpostal(Dirpostal dirPos) Si eliges obtener LNCS o CCIS o un hotel tendremos que almacenar la dirección postal del usuario. private void createSocialActivity(Socialactivites soc) Si se elige participar en las actividades sociales se almacenará la fecha de inicio y fin que estarán los asistentes disponibles. private void createComment(Comment com) Se almacenará los comentarios adicionales o sobre dietas si el usuario ha introducido algún mensaje. private void edit_me() Se editará el usuario cuando éste haya finalizado de consultar el formulario. private void new_user() Se creará un nuevo usuario cuando éste haya finalizado de consultar el formulario. public void generateFDF() Método para la creación del FDF. Se cogerán los datos personales del usuario y cargarán automáticamente en los
50 campos del FDF. o beanTags: Este bean se ha creado únicamente para la gestión de las etiquetas HTML del formulario. De esta manera será más fácil configurar la página ya que no tendremos que ir buscando en nuestra página web, sino que iremos a este bean y podremos modificar o eliminar el contenido del formulario. Adicionalmente si se quiere añadir nuevas etiquetas o nuevos comentarios de texto al portal de esta manera los tendremos mejor organizados. public void init() Método para cargar las etiquetas del formulario y los comentarios de texto e imágenes. También se cargarán los datos relevantes del congreso (como nombre, email, …) para mostrarlos en el portal. Diseño y funcionalidad de la aplicación Detallaremos los elementos importantes del formulario para que sirva de manual para su futura reutilización: o La página de inicio es login.xhtml. Está página está formada por: Botón Login Descripción: Nos llevará al formulario de registro si ha metido bien sus credenciales. En caso positivo, se redireccionará con la página de registro mostrando un mensaje de bienvenida. En caso negativo limpiará los campos de texto y mostrará un mensaje de error. Llamada al beans beanLogin.login() Botón Register Descripción: Nos llevará al formulario de registro con los campos vacíos. Ajax: No Llamada al beans beanLogin.login() Enlace Did you forget your password? Descripción: Nos llevará a otra página donde se gestionará la recuperación de una contraseña para poder logearse en el sistema.
51 Llamada al beans No. Se redirecciona a recovery.xhtml. o Página de recuperación de contraseña: La página es recovery.xhtml. En ella aparecerá: Botón Send Password Descripción: Éste botón comprobará si el usuario existe en el sistema. En caso positivo se le enviará un correo con su nuevo password y se mostrará un mensaje de que todo ha sido correcto. En caso de no existir el usuario se limpiarán el campo y mostrará un mensaje de error. Llamada al beans beanLogin.recovery() o Formulario de inscripción: Se trata de la página register.xhtml. Está página está formada por un panel con 6 pestañas. Hemos separado las diferentes pestañas por categorías ya que cada una solicitará diferente información al inscriptor del evento. Pestaña Personal: Está formada por: Lista desplegable title Descripción: Te permite asignar un título honorífico. Ajax: No Campo texto first name Descripción: Te permite asignar tu nombre.
52 Ajax: Si Campo texto family name Descripción: Te permite asignar tus apellidos. Ajax: Si Campo texto affiliation Descripción: Te permite asignar tu afiliación. Ajax: Si Lista desplegable country Descripción: Te permite asignar tu país. Ajax: No Campo texto country phone Descripción: Te permite asignar tu teléfono. Ajax: No Campo texto email Descripción: Te permite asignar tu email. Ajax: Si Campo texto password Descripción: Te permite asignar tu password. Ajax: Si Campo texto repeat password Descripción: Te permite repetir tu password para verificar. Ajax: Si
53 Pestaña Fee: Está formada por: Lista desplegable fee Descripción: Te permite elegir el tipo de registro. Ajax: Si Campo texto LNCS Descripción: Te permite asignar una cantidad para adquirir el LNCS. Ajax: Si Campo texto CCIS Descripción: Te permite asignar una cantidad para adquirir el CCIS. Ajax: Si Pestaña Meals: Esta pestaña está compuesta por: Lista desplegable attendance Descripción: Te permite elegir el día de inicio de asistencia al congreso, para organizar las actividades sociales. Ajax: Si Lista desplegable to Descripción: Te permite elegir el día de fin de asistencia al congreso. Ajax: Si Lista desplegable diet Descripción: Te permite elegir si tienes algún tipo de restricción de dieta. Ajax: No Textarea comment diet
54 Descripción: Por si quieres añadir algún comentario adicional sobre la dieta elegida. Ajax: No Campo texto tickets Descripción: Te permite elegir el número de tickets por si quieres participar en la cena social que se realizará. Ajax: Si Pestaña Accommodation: Está formada por una: Tabla hotel Descripción: Te permitirá elegir en la tabla el hotel si deseas optar por una reserva. Ajax: Si Calendar arrival Descripción: Elige el día de inicio de la reserva del hotel. Ajax: Si Calendar departure Descripción: Elige el día de fin de la reserva del hotel. Ajax: Si
55 Pestaña Address: Estos campos solo serán obligatorios si se ha seleccionado adquirir LNCS o CCIS o la reserva de un hotel. Todos los campos tienen la misma estructura en ésta pestaña por lo que lo explicaré de forma genérica. Está formada por: Campos de texto (address, address2, cp, city, country, passport, tax) Descripción: Rellenar los campos según la etiqueta de texto que le acompañe. Ajax: No Pestaña Confirmation: Se mostrará la información más relevante del usuario y se procederá al registro, llevándonos a la página de payment.xhtml Botón Register Descripción: Éste botón pedirá confirmación para procesar el registro, y si es afirmativo se realizará dicha acción. Llamada al beans beanRegistration.register()
56 Página posterior al registro: Está página tiene 2 botones. Botón FDF Descripción: Se generará el FDF para la solicitud de reserva de habitación de hotel. Los datos personales se cargaran automáticamente en este formulario. Solo deberá escribir datos relacionados con el pago del evento, ya que estos datos no los almacenamos nosotros para evitar intrusos en nuestra web. El usuario deberá imprimir este FDF y enviar al Corte Ingles para efectuar su reserva. Llamada al beans beanRegistration.generateFDF() Botón Payment Descripción: Este botón nos servirá de pasarela para entrar en la página de pago que dispone la UMA a través del portal de Unicaja. Se pasarán los datos necesarios mediante POST para así conservar la confidencialidad del cliente. Llamada al beans No. Llamada post a http://tpv.com/valida.php Una vez pulsado en el botón nos mostrará una ventana para completar el pago del congreso. En ésta se le pedirán los datos bancarios mediante un sistema de pago seguro a través de la entidad bancaria Unicaja. 3.4 API Correo Para la confirmación del pago hemos creado una API en Java que usaremos para actualizar nuestra base de datos y enviarle un correo de confirmación de que se ha efectuado el pago correctamente.
57 Explicaré con detalles como está constituida nuestra API para facilitar su reutilización. Nuestra API se llama LeerEmail. Para la correcta funcionalidad he importado las librerías: o javax.mail (javax.mail.jar) o java.sql (mysql-connector-java-5.0.8-bin.jar). La clase de Java tiene la siguiente estructura. o Variables estáticas user: Se usa para introducir el nombre del usuario de nuestro servidor de correo. Para este evento se hará uso del nombre que ven en la imagen. Nos permitirá iniciar la sesión para poder tratar con los correos recibidos. pass: Se usa para introducir la contraseña del usuario de nuestro servidor de correo. Nos permitirá iniciar la sesión para poder tratar con los correos recibidos. fromUnicaja: Es el correo de donde recibiremos las confirmaciones de pago. Este correo lo usaremos para filtrar otros correos que puedan llegar a nuestro email o posibles ataques de spam. subjectTPV: Es una palabra clave que se usará para distinguir los correos que provienen de efectuar el pago a otros de cualquier otro tipo. Ésta palabra se escribirá en el asunto del correo, y nos servirá también para filtrar correos. o Método main: En este método crearemos la conexión con el servidor de correo con las credenciales que vimos anteriormente. Cojeremos todos los correos que no estén marcados como leídos (flag SEEN) y los abriremos en modo lectura y escritura. Esto lo haremos para posteriormente de ser leídos estos correos se puedan marcar como correos leídos. En caso de no existir ningún correo como no leído nos mostrará un mensaje advirtiendonos de que no disponemos correos actualmente recibidos. En caso de que si existan se recorrerá mensaje a mensaje y comprobaremos si forman parte de un correo enviado por la plataforma de pago. En caso positivo lo enviaremos a analizar en otro método que explicaré más adelante y le activamos el flag de que ese correo ha sido leído.
64 4. Documentación de usuario La mayoría de componentes se construye a medida, en lugar de ensamblar componentes existentes (al contrario que en el caso del hardware). La reutilización es una característica importante para un componente software de alta calidad. El componente debería diseñarse e implementarse para que pueda volver a ser reutilizado en futuros eventos diferentes. La reutilización debería ser parte integrante de cualquier proceso software. Existen dos factores que dan lugar a la reutilización del software. De un lado las necesidades de obtener software de calidad en el menor tiempo posible, y de otro la similitud existente entre productos de la misma línea. La obtención de software a partir de elementos previamente probados, conduce al incremento en la calidad y al ahorro de tiempo. La reutilización de software consiste en tomar sistemáticamente la experiencia previa y los elementos reutilizables para incorporarlos en desarrollos futuros. Las investigaciones han demostrado que se requiere un enfoque particular, propio y adaptado a la naturaleza del software, para reutilizar artefactos de desarrollos previos. Este enfoque se basa en la selección, especialización e integración de elementos del software que hayan sido intencionalmente diseñados, desarrollados y documentados para servir como materia prima para nuevos desarrollos. Pero para que la reutilización este presente a lo largo de todo el ciclo de vida del software, se requieren herramientas que faciliten y fomenten tanto la reutilización como el diseño para reutilización en las distintas etapas que componen el desarrollo de un producto. Las ventajas potenciales de la reutilización estimulan nuevos planteamientos dentro de la Ingeniería del Software. La reutilización sistemática requiere una organización apropiada y una cultura idónea. Se deben revisar las prácticas de administración, las estructuras de organización y las tecnologías utilizadas para explotar eficientemente los elementos reutilizables. Se debe contar con herramientas de apoyo, desarrolladores entrenados y con una visión de largo plazo para reutilizar el software como producto lógico o simbólico, que no se manufactura ni se deteriora, más bien se desarrolla y se adapta a los cambios. Un aspecto esencial de la reutilización del software es la delimitación de los artefactos reutilizables. Intuitivamente, la reutilización se asocia de manera directa con la reutilización de código fuente para construir un nuevo producto software. Sin embargo en el sentido más amplio, un elemento reutilizable es cualquier producto del ciclo de vida del software con potencial de reutilización: modelos y arquitecturas de dominio, requisitos, diseño, código, componentes de base de datos, documentación y pruebas. Explicaremos con detalle para cualquier tipo de usuario donde debe tocar para que pueda crear su propia web a través de ésta con sólo unos retoques.
65 Base de datos: Se deberá hacer una copia de la creada para este evento (congress). Explicaremos la información que debe modificar en las tablas y si desea añadir nuevos atributos si fueran necesarios - Tabla Accommodation: Dejarla vacía para los nuevos usuarios que se registraran. - Tabla Comment: Dejarla vacía para los nuevos usuarios que se registraran. - Tabla Country: No modificar la información que contiene. Posee una lista completa de países. - Tabla Dates: Modificar para asignar las charlas nuevas que se realizarán en el nuevo congreso. - Tabla Datespayment: Modificar para asignar las nuevas fechas principales del nuevo congreso. - Tabla Diet: No modificar la información que contiene. Posee una lista de los tipos de dietas. - Tabla Dirpostal: Dejarla vacía para los nuevos usuarios que se registraran. - Tabla Extras: Dejarla vacía para los nuevos usuarios que se registraran. - Tabla Hotel: Se podrá añadir, modificar o eliminar los hoteles que sean convenientes. - Tabla Payment: Dejarla vacía para los nuevos usuarios que se registraran. - Tabla Prices: Modificar para añadir las nuevas tarifas de precios del nuevo congreso. - Tabla Registered: Dejarla vacía para los nuevos usuarios que se registraran. - Tabla Registertype: Modificar si se quiere cambiar o añadir algún tipo de registro nuevo. También se podrá eliminar si se es preciso. - Tabla Socialactivites: Dejarla vacía para los nuevos usuarios que se registraran. - Tabla Title: No modificar la información que contiene. Posee una lista de títulos honoríficos. Esto que he explicado sería para el caso de que hagan falta todas las tablas que he usado. En caso de no hacerse uso de alguna de ellas no afectaría a la base de datos, salvo si queremos prescindir alguna clave foránea que arrastra desde Registered (o sea que queramos suprimir las tablas Country, Diet o Title) donde deberemos eliminar los atributos de clave foránea correspondiente a la tabla que borremos. Formulario de inscripción: Mostraremos donde debe cambiar el código si desea cambiar su tema del formulario o modificar algunos campos del formulario.
66 - Se podrá añadir nuevos textos a través de las páginas xhtml. Solo tendrás que buscar la línea del código y realizas el nuevo cambio. - Si se desea cambiar el tema del formulario debemos ir al fichero de configuración web.xml Donde aparece la siguiente línea: Cambiaremos el valor de redmond por el nombre del tema que deseemos añadir a nuestro formulario. Debe tener en cuenta que debe para este caso, el tema que queramos añadir tiene que ser unos de los que incorpora la libería Primefaces. Hay más de 25 temas para elegir. Aquí os mostraré un enlace de los diversos temas que podemos añadir: http://www.primefaces.org/showcase/ui/misc/themeSwitcher.xhtml - Si se desea suprimir alguna pestaña del formulario solo debemos borrar las etiquetas html con nombre <p:tab> <p:/tab> donde no queramos usarlo. - Si se desea suprimir algunos campos del formulario debe gastar cuidado ya que algunos son iniciados al arrancar la aplicación. Son el caso de las listas desplegables y de los calendarios. Se deberá quitar esa inicialización en el método init() dentro del beans beanRegistration. API Correo: En la API de correo lo tendrás hasta más fácil ya que solo tendrás que modificar las variables globales: - SMTP_HOST_NAME - SMTP_AUTH_USER - SMTP_AUTH_PWD - emailOrigen También se podrá modificar el texto del correo dentro de la función responseMail(). Wordpress: Para la creación del nuevo portal se deberá copiar la carpeta que nos descargamos de Worpress.org y la colocamos en /var/www dentro de nuestro servidor web. Ahora explicaremos que tenemos que modificar para que nuestra web tenga otro aspecto pero reutilizando muchas de las funcionalidades que tenemos añadidas a nuestro portal web. - Si se desea cambiar el tema, tendremos que ir a la pestaña Themes.
67 - Las páginas ya será a gusto del creador del nuevo portal. Algunas páginas pueden ser útiles para volver a reutilizar como las páginas de alojamiento, actividades sociales, localización, … - Los plugins que he usado son todos de gran utilización. Solo he usado los más imprescindibles para darle a la página toda la funcionalidad y el diseño óptimo pero sin sobrecargarla para evitar problemas de saturación de la página. Recomiendo que se instalen si la nueva web compartirá características similares a ésta creada. Anteriormente hemos detallado las características que forman parte de nuestras páginas y base de datos. Para la realización de nuevo portal CMS desde el principio os vamos a explicar los detalles paso a paso: Gestor de contenidos 1. Instalar wordpress 2. Exportar las páginas, entradas, etc. que nos pueda ser útil para la nueva conferencia de la página nuestra. 3. Copiar los plugins de mi proyecto que puedan ser útiles y añadirlos a nuestro portal en la carpeta C:/wampp/www/(nombre de la carpeta wordpress)/plugins/ 4. Añadir un nuevo tema y acoplarle los widgets que crean necesario. 5. Si va a hacer uso de la aplicación de inscripción se debe añadir la URL de localhost de dicha aplicación. Se hará mediante el plugin de Wordpress JFrame, el cual nos permite insertar páginas de alojadas en otros servidores que no sean Apache. En nuestro caso la aplicación de inscripción será lanzada por el servidor Glassfish, por lo que se insertará la URL http://localhost:4848/Registration-war y así se redireccionará con nuestro formulario de registro. Base de datos 1. Se creará una base de datos nueva, e importaremos las tablas que nos puedan ser útiles para su reutilización. 2. Si no se hace uso de todas las tablas tendremos que mirar que no se produzcan errores de claves foráneas. Formulario de inscripción 1. Si se ha hecho uso de las mismas tablas que contiene este TFG, el formulario podrá contener los mismos campos de relleno del formulario actual, donde podremos modificar el texto a través de nuestra clase beanTags donde se encuentran alojadas todas nuestras etiquetas y textos informativos de dicha aplicación. 2. Si se ha añadido nuevas tablas para pedir más información a nuestro inscriptor pues colocaremos dichas etiquetas HTML donde creamos
68 conveniente y añadir la programación necesario en nuestro beanRegistration en los métodos new_user() y edit_me(). 3. Si se desea suprimir algunas tablas que se usan en éste formulario, debemos mirar si contienen llamadas Ajax o ActionListener a nuestro beanRegistration. Si es así, se podrá eliminar esas funciones o procedimientos a los que se referencia (aunque no es necesario, se pueden dejar en el beans, para futuro uso). También se deberá eliminar de nuestros métodos new_user() y edit_me() las llamadas a dichas tablas ya que no se encontrarán en la base de datos y nos mostrarán errores de Nullpointer. API Correo 1. Se podrá usar tal como está, donde solo modificaremos el correo del nuevo congreso que se realizará.
69 5. Conclusiones La realización con éxito del proyecto constata el potencial de Wordpress como plataforma de desarrollo rápido y profesional de portales web. Por un lado, me ha permitido dedicar tiempo al análisis y diseño del portal web sin necesidad de realizar un despliegue complicado de diferentes tecnologías o herramientas de desarrollo ya que conforme las iba necesitando, de forma asistida, se instalaban. Por otro lado, me ha permitido implementar de forma rápida ya que, además de realizar el despliegue de herramientas, permite acceder a ellas desde un menú único de tal forma que es posible interactuar entre diferentes proyectos y herramientas desde una única plataforma integradora. Desde el punto de vista de mercado, puede dar soporte a diferentes congresos realizados en la escuela de Informática ya que es posible implementar proyectos de diferente índole. Esto se consigue gracias a que permite utilizar diferentes plantillas de gestores de contenidos disponibles en el mercado. Pienso que este es otro de los puntos fuertes de la herramienta. En conclusión creo que ha sido un proyecto enriquecedor y que demás abre puertas al ámbito laboral para emprendedores que opten por competir en el mercado con desarrollos de proyectos profesionales y económicos. Además se creó un formulario de inscripción completo, ágil de manejar y con estilo propio para el correcto funcionamiento de nuestro congreso. Tras la finalización del TFG mis sensaciones son buenas, estoy satisfecho del trabajo realizado, y de haber conseguido los objetivos que me propuse en un principio. Han sido unos meses de duro trabajo, en este cuatrimestre además del TFG, también he tenido las prácticas en empresa. Con respecto al TFG ha supuesto un reto realizar unas aplicaciones de esas características. Me decanté por utilizar el Gestor de Contenidos Wordpress para explotar mis conocimientos de este gestor habiendo trabajado con él en la asignatura de Ingenieria Web y la tecnología JSF habiéndola practicado en la la asignatura de Tecnologías de aplicaciones web. La librería de Primefaces fue una experiencia nueva y resultó de grato agrado, ya que me permitía conseguir darle mucha flexibilidad a la programación, además de ser de gran utilidad para perfeccionar mi técnica en Ajax. Por lo que la realización de este TFG me ha servido para tener un mayor conocimiento de Java y Primefaces. En relación a la interfaz de la aplicación Web se ha intentado que sea una interfaz sencilla, no sobrecargada para no desorientar al usuario ni hacerle más complejo el uso del sistema. En cuanto a los colores se han elegido unos tonos claros, no muy llamativos, que estuviesen combinados y dentro de la misma gama por la misma razón de antes, no entorpecer ni desorientar al usuario en el manejo de las aplicaciones, y que permitiesen distinguir bien los formularios, las letras, etc. Mi conclusión final es que ha merecido la pena con creces, y que extraigo una enriquecedora experiencia de este TFG de cara a mi futuro profesional.
70 6. Trabajos futuros A continuación expongo las mejoras que se podrían realizar en el portal web: o Habilitar las páginas seguras para los formularios enviados: para ello sería necesario emitir un certificado digital con una entidad certificadora reconocida, instalarlo en IIS e habilitarlo en Wordpress o Creación de diferentes roles de administración (gestor de contenidos, gestor de solicitudes de presupuestos, gestor de contactos): con ello se podría repartir las funciones de administración del portal entre varios trabajadores de la empresa. o Acceso a los participantes para que podamos crear una página web más interactiva entre los diferentes participantes del congreso. Podríamos añadir apartado de comentarios a las noticias relacionadas con el evento, o incluso añadir un foro de discusión para supuestas ideas que se puedan crear después de la realización del evento. Se podría crear un área privada para clientes en la que podría crear un debate sano para hablar sobre futuros progresos que puedan surgir en respecto a las tecnologías que se han expuesto en el congreso realizado para ese caso. Ello implicaría la gestión de comentarios de clientes y gestión documental. o Envío de alertas a los administradores y clientes: los usuarios y administradores recibirían email cuando cambiaran los estados de los formularios enviados.
71 7. Referencias http://primefaces.org/ https://en.wikipedia.org/wiki/Conference_management_system https://en.wikipedia.org/wiki/Abstract_management http://www.easychair.org/ http://www.borbala.com/cyberchair/ https://es.wikipedia.org/wiki/Lecture_Notes_in_Computer_Science https://www.uevent.com/ http://www.oracle.com/technetwork/java/javamail/index.html https://es.wordpress.com/ http://www.arturogarcia.com/2014/07/11-ventajas-de-utilizar-wordpress-para-laweb-de-tu-negocio/ http://www.adobe.com/devnet/acrobat/fdftoolkit.html
72 9. ANEXO I Página Home Call for Papers
73 Steering Committe Register