Professional Documents
Culture Documents
Autor: Jorge Molinero Muoz Tutor: Vicente Luque Centeno Fecha: Octubre 2004
Pgina 2
Agradecimientos
Agradezco enormemente el apoyo y la paciencia recibidos de quienes ms me quieren, de quienes han estado a mi lado siempre, y concreto, durante el transcurso de mi formacin acadmica, a quienes siempre, tanto en buenos momentos como en malos, me han ayudado.
Gracias Pap y Mam, ya que de no ser por vosotros no habra terminado, por permitir mi completa dedicacin a mi trabajo y a mi carrera. Y ante todo, por marcarme siempre el camino correcto.
Gracias Hermanos, por ayudarme a desconectar cuando era necesario y por pasar tantos ratos conmigo mientras estudiaba.
Gracias Loly, por animarme, por sufrir mi falta de tiempo libre y por estar a mi lado.
Y por ltimo, gracias a mis compaeros de clase quienes tambin me han ayudado a llevar lo mejor posible la carrera.
Pgina 3
ndice
AGRADECIMIENTOS ..........................................................................................................3 NDICE ................................................................................................................................4 NDICE DE FIGURAS ...........................................................................................................7 NDICE DE TABLAS ............................................................................................................8 NDICE DE CDIGO FUENTE..............................................................................................9 1 INTRODUCCIN............................................................................................................. 10 INTRODUCCIN ................................................................................................................. 10 CONTEXTO. ...................................................................................................................... 11 MOTIVACIN..................................................................................................................... 12 OBJETIVOS ....................................................................................................................... 13 ESTRUCTURA DEL P ROYECTO ............................................................................................. 14 SIGLAS Y ACRNIMOS ........................................................................................................ 16 2 ESTADO DEL ARTE...................................................................................................... 17 BSQUEDA DE E MPLEO ...................................................................................................... 18 W EB S EMNTICA ............................................................................................................... 19 Descripcin de los datos. ............................................................................................. 21 Manipulacin de los datos disponibles en Internet.......................................................... 22 ARQUITECTURA ................................................................................................................. 24 Patrones de Diseo ..................................................................................................... 24 Modelo Vista Controlador............................................................................................. 26 Arquitectura en tres capas ............................................................................................ 27 CAPA DE PRESENTACIN.................................................................................................... 29 Servl ets....................................................................................................................... 30 Jsp ............................................................................................................................. 30 WebL.......................................................................................................................... 31 CAPA DE DATOS ................................................................................................................ 31 Base de Datos ............................................................................................................. 31 Ficheros XML .............................................................................................................. 33 CAPA DE LGICA DE N EGOCIO ............................................................................................ 35 Java con DOM............................................................................................................. 35 WEBL ......................................................................................................................... 36 XPATH ............................................................................................................................. 38 MODELO V ISTA CONTROLADOR ........................................................................................... 48 3 ANLISIS Y DISEO ...................................................................................................... 49
Pgina 4
ESPECIFICACIN DEL PROBLEMA ......................................................................................... 50 ANLISIS F UNCIONAL ......................................................................................................... 51 Anlisis de los Portales de Empleo ............................................................................... 51 MODELADO DE R EQUISITOS ................................................................................................ 54 Operaciones de Bsqueda ........................................................................................... 64 ANLISIS DEL SISTEMA ....................................................................................................... 66 Patrones de diseo ...................................................................................................... 66 D ISEO ........................................................................................................................... 69 MODELO E NTIDAD R ELACIN .............................................................................................. 72 COMPORTAMIENTO DEL S ISTEMA ......................................................................................... 75 Bsqueda.................................................................................................................... 75 Proceso de Alta ........................................................................................................... 76 Modificacin de datos asociados a un usuario ............................................................... 77 Gestin de alertas........................................................................................................ 78 Gestin de controles .................................................................................................... 79 Proceso de actualizacin de controles, generacin de alertas y actualizacin de cach. .. 79 Proceso de visualizacin de controles ........................................................................... 83 Gestin de puestos de trabajos asociados a un usuario ................................................. 84 Bsqueda Inteligente. .................................................................................................. 85 Bsqueda de Empresas. .............................................................................................. 86 4 IMPLEMENTACIN ........................................................................................................ 88 D EFINICIN DEL INTERFAZ .................................................................................................. 88 TECNOLOGAS APLICADAS................................................................................................... 89 JSDK .......................................................................................................................... 90 Xalan .......................................................................................................................... 91 Jtidy............................................................................................................................ 93 WebL.......................................................................................................................... 94 SOPORTE DE LA INFORMACIN. ........................................................................................... 94 ACCESIBILIDAD. .............................................................................................................. 100 R EDUCCIN DE LATENCIA ................................................................................................. 101 OTRAS CARACTERSTICAS: ESCALABILIDAD, DISPONIBILIDAD, CONCURRENCIA , REUTILIZACIN,
MANTENIMIENTO, PORTABILIDAD. ....................................................................................... 104
Escalabilidad ............................................................................................................. 104 Disponibilidad ............................................................................................................ 105 Concurrencia ............................................................................................................. 106 Robustez................................................................................................................... 107 Reutilizacin.............................................................................................................. 109 Mantenimiento........................................................................................................... 110 Portabilidad ............................................................................................................... 112 D IAGRAMA DE C ONSULTA ................................................................................................. 113
Pgina 5
5 PRUEBAS .................................................................................................................... 116 6 HISTORIAL DEL PROYECTO ....................................................................................... 119 BALANCE DE TIEMPOS Y ESFUERZO. ................................................................................... 126 7 PROBLEMAS ENCONTRADOS .................................................................................... 127 8 CONCLUSIONES Y TRABAJOS FUTUROS .................................................................. 130 9 BIBLIOGRAFA............................................................................................................. 132 ANEXO A: MANUAL DE USUARIO.................................................................................. 137 ANEXO B: CONFIGURACIN DE CRONTAB .................................................................. 146 ANEXO C: MANUAL DE INSTALACIN DEL SISTEMA ................................................... 148 ANEXO D: MAPA DE PUNTOS DE VERIFICACIN.......................................................... 152
Pgina 6
ndice de Figuras
Figura 1 Web Actual y Web Semntica ................................................................................ 20 Figura 2 Modelo Vista Controlador....................................................................................... 26 Figura 3 Arquitectura de Tres Capas ................................................................................... 28 Figura 4 Arquitectura de Tres Capas Implantada .................................................................. 29 Figura 5 Diagrama de Casos de Uso General ...................................................................... 55 Figura 6 Diagrama de Casos de Uso Bsqueda de Puesto................................................. 58 Figura 7 Diagrama de Casos de Uso - Gestin de Perfil........................................................ 61 Figura 8 Diagrama de Estados. Flujo de Puesto ................................................................... 63 Figura 9 Dominio de Unin de Consultas ............................................................................. 64 Figura 10 Dominio de Intereseccin de Consultas ................................................................ 65 Figura 11 Dominio de SubConsultas .................................................................................... 65 Figura 12 Patrn Singlenton ................................................................................................ 67 Figura 13 Patrn Command ................................................................................................ 68 Figura 14 Patrn Strategy ................................................................................................... 68 Figura 15 Diagrama de Clases Modelo Lgico de Negocio ................................................. 70 Figura 16 Diagrama de Clases - Modelo Logico de Negocio II............................................... 71 Figura 17 Diagrama de Clases - Modelo Lgico de Negocio (Comandos) .............................. 72 Figura 18 Diagrama de Clases - Capa de Datos ................................................................... 72 Figura 19 Modelo Entidad-Relacin ..................................................................................... 74 Figura 20 Diagrama de Actividad - Bsqueda ....................................................................... 75 Figura 21 Diagrama de Secuencia - Proceso de Alta ............................................................ 76 Figura 22 Diagrama de Secuencia - Modificacin de Datos Asociados a un Usuario ............... 77 Figura 23 Diagrama de Secuencia - Gestin de Alertas ........................................................ 78 Figura 24 Diagrama de Secuencia - Gestin de Controles .................................................... 79 Figura 25 Diagrama de Secuencia - Proceso de Actualizacin de Controles, Generacin de Alertas y Actualizacin de Cach .................................................................................. 80 Figura 26 Diagrama de Secuencia - Actualizacin de Cach................................................. 81 Figura 27 Diagrama de Secuencia - Generacin de Alertas ................................................... 82 Figura 28 Diagrama de Secuencia - Generacin de Controles ............................................... 83 Figura 29 Diagrama de Secuencia Proceso de Visualizacin de Controles .......................... 84 Figura 30 Diagrama de Secuencia - Gestin de Puestos Asociados a un Usuario................... 85 Figura 31 Diagrama de Colaboracin - Bsqueda Inteligente ................................................ 86 Figura 32 Interfaz de Usuario .............................................................................................. 89 Figura 33 Interfaz de Usuario - rea de Trabajo Secundaria.................................................. 89 Figura 34 Arquitectura Mediador........................................................................................ 114
Pgina 7
ndice de Tablas
Tabla 1 Siglas y Acrnimos ................................................................................................. 16 Tabla 2 Locations Paths...................................................................................................... 41 Tabla 3 Locations Steps...................................................................................................... 42 Tabla 4 Axes ...................................................................................................................... 43 Tabla 5 Axes(NodeTest) ..................................................................................................... 45 Tabla 6 Predicates.............................................................................................................. 45 Tabla 7 Abbreviations ......................................................................................................... 47 Tabla 8 Expresions ............................................................................................................. 47 Tabla 9 Functions ............................................................................................................... 48 Tabla 10 Reduccin de Tiempos con Concurrencia ............................................................ 102 Tabla 11 Reduccin de Tiempos con Cach (50% de acierto) ............................................. 104 Tabla 12 Reduccin de Tiempos con Cach (75% de acierto) ............................................. 104 Tabla 13 Tipos de Cambios ............................................................................................... 107 Tabla 14 Tipos de Atributos ............................................................................................... 108 Tabla 15 Ficheros de Logs ................................................................................................ 112 Tabla 16 Pruebas - Bsqueda de Puestos de Trabajos ....................................................... 117 Tabla 17 Pruebas - Bsquedas de Empresas ..................................................................... 117 Tabla 18 Pruebas - Acceso al rea Personal...................................................................... 117 Tabla 19 Pruebas - Funcionalidades del rea Personal ...................................................... 118 Tabla 20 Pruebas - Funcionalidades de la Bsqueda Inteligente ......................................... 118 Tabla 21 Tiempos de Desarrollo del Proyecto..................................................................... 126 Tabla 22 Estructura de Directorios de Jakarta-Tomcat ........................................................ 150 Tabla 23 Estructura de Directorios de WebL ...................................................................... 151 Tabla 24 Puntos de Verificacin de Prioridad 1................................................................... 153 Tabla 25 Puntos de Verificacin de Prioridad 2................................................................... 154
Pgina 8
Pgina 9
1 Introduccin
Introduccin
El presente proyecto comprende el anlisis, diseo y la implementacin de un portal de empleo que constituya una potente herramienta en la ardua tarea de buscar trabajo, facilitando tanto la incorporacin al mundo laboral, como el cambio en busca de un empleo ms acorde a las necesidades del usuario.
Inicialmente, la implementacin de dicho portal ofrece la complejidad de la realizacin de una aplicacin web. Pero para ello, es necesario que las ofertas de empleo fuesen insertadas manualmente o automticamente. Y en este punto es donde surge la problemtica y el verdadero potencial del proyecto, pues las empresas no van a acceder a dicho portal para ofrecer sus puestos de trabajo, sino que es la aplicacin la que debe extraer toda la informacin necesaria de los portales de empleo disponibles en Internet [1, 2, 3, 4, 5, 6, 7], en los cuales, s se dan de alta dichas empresas.
Se realizar un estudio sobre los distintos portales de empleo con el objetivo de determinar sus funcionalidades, ventajas y desventajas. Y una vez realizado dicho estudio se definir un tipo genrico de plataforma con las principales caractersticas de los anteriores y aadiendo una serie de funcionalidades que faciliten en la medida de lo posible la bsqueda de empleo. Tambin se determinar en este paso que portales de empleo se integrarn en la plataforma a desarrollar.
Una vez se hayan definido los requisitos del sistema, se proceder a su anlisis y diseo, que quedar correctamente plasmado mediante la utilizacin del lenguaje UML [32] como herramienta de modelado, asentando con ello los conocimientos adquiridos durante el transcurso de los estudios de la Ingeniera en Informtica.
En el desarrollo del proyecto se estudiarn diversas tecnologas disponibles en el momento actual y propensas a ser utilizadas en la implementacin de una aplicacin web, con el objetivo de utilizar aquella que resulte ms eficiente y que permita un desarrollo ms correcto y estructurado. Con ello se consigue que a la finalizacin del proyecto, se tenga un conocimiento ms completo de las tecnologas existentes en el mercado y se aprenda a utilizar algunas de estas.
Pgina 10
Se crear un sistema cuya instalacin sea sencilla y se describirn los pasos necesarios para llevarla a cabo, de modo que pueda ser montado sin necesidad de utilizar grandes estaciones de trabajo o servidores corporativos. Tambin se documentarn toda las caractersticas configurables de la aplicacin para que su mantenimiento sea sencillo y rpido, permitiendo al administrador cambiar en un fututo, y si lo considera necesario, el interfaz de la aplicacin adaptndolo a los nuevos tiempo, y a su vez poder agregar o borrar los portales de empleo con los que el sistema se integrar.
Por otro lado, funcionalmente, se buscar ofrecer una interfaz simple e intuitivo que permita que los usuarios que utilicen la aplicacin se familiaricen rpidamente con el sistema. Pues el objetivo principal del proyecto es constituir un sistema prctico y til a la hora de buscar un puesto de trabajo.
Contexto.
Actualmente la World Wide Web es la mayor fuente de informacin gratuita y disponible. En ella se puede encontrar informacin de cualquier naturaleza, nicamente con buscar apropiadamente.
Realmente Internet, consiste en un canal de comunicacin entre las personas con un enorme potencial, cada da mejor aprovechado. Dicho canal se lleva utilizando bastante tiempo, no nicamente para satisfacer las necesidades del conocimiento, sino tambin como un medio para poner en contacto a las personas que trabajan con l.
Con el objetivo de maximizar los beneficios informativos proporcionados por la WWW, se han desarrollado mltiples agentes que extraen informacin de Internet para posteriormente tratarla y permitir a los usuarios que navegan por la Web poder acceder a aquellos contenidos que realmente les interesan, como es el caso de los buscadores.
Pero en la creacin de dichos agentes, se ha dejado cierta parcela sin cubrir, y es la relativa a aquellos contenidos que se ofrecen a los navegantes durante un tiempo muy corto, de modo que sea el usuario que esta interesado el que tiene que preocuparse por localizar dichos elementos. Son casos como los productos que se venden por Internet, viajes, subastas, o como la bsqueda de trabajo, la bsqueda de un piso en venta...
En este proyecto se ha perseguido cubrir parte de dicha parcela de la WWW en la cual los agentes existentes no se han utilizado, en concreto en la bsqueda de puestos de trabajos. Y para ello se va a estudiar la arquitectura que se va a utilizar as como las distintas
Pgina 11
tecnologas que son proclives a ser usadas para la implementacin del sistema, decidiendo finalmente cuales de estas van a ser empleadas en el desarrollo de la aplicacin.
Motivacin
En la actualidad Internet es uno de los recursos de informacin ms importante y accesible que existe, incluso por encima de otros canales de informacin como la prensa escrita, la televisin, la radio... Dicho canal de informacin resulta muy til y prctico en lo relativo a la bsqueda de informacin de cualquier naturaleza, puesto que se puede encontrar en l todo lo que se desee, simplemente con buscarlo de la forma correcta.
Precisamente las dificultades para acceder a dicha informacin aparecen en las bsquedas, ya que el contenido, el formato y la estructura de la informacin disponible en Internet es muy heterognea y diversa, obligando a los usuarios que demandan dichos datos a aprender a utilizar mltiples aplicaciones. Aparte de que es necesario el conocimiento de la existencia de dichas aplicaciones por parte del usuario.
Otro problema que resulta de la utilizacin de dichas aplicaciones, es la necesidad implcita de que los usuarios dispongan de un equipo apropiado conectado a Internet con un navegador adecuado, dando lugar a una importante limitacin, puesto que puede haber personas que no cumplan dichos requisitos y deseen acceder a las aplicaciones. Por lo que se requerira que dichas aplicaciones estuviesen disponibles para acceder a ellas a travs de otros dispositivos.
El proyecto elaborado constituye un sistema de bsqueda de empleo. Se ha decidido implementar un agregador de portales de empleo debido a que es un caso en que se observa que los usuarios realizan bsquedas de informacin, la cual se encuentra en muy diversos formatos, y existen mltiples portales que cubren la necesidad parcialmente.
En lo concerniente a la bsqueda de un puesto de trabajo, actualmente existen multitud de portales de empleo en los cuales las empresas se dan de alta y colocan los puestos de trabajo disponibles, de cara a que la gente que desee buscar un empleo, pueda acceder a travs de Internet, y realizar sus bsquedas de empleo sin necesidad de ir visitando las distintas empresas.
La problemtica resultante de esta situacin se basa nicamente en el hecho de la existencia de mltiples portales, por lo que las empresas se pueden dar de alta en muchos portales, y los usuarios puedan realizar sus bsquedas en algn portal que no sea el
Pgina 12
adecuado, de tal modo que no encuentre el puesto de trabajo deseado, pese a que este se encuentre vacante.
Todo esto hace que por un lado los usuarios sin experiencia ni si quieran lleguen a consultar todos los portales de empleo disponibles ignorando la existencia de puestos que se ajusten a su perfil. Y por otro lado que usuarios experimentados traten con mltiples portales de empleo dando lugar a una gran prdida de tiempo pues se ven obligados a repetir en varias ocasiones las mismas acciones de bsqueda pero con distintas aplicaciones.
Objetivos
Este proyecto se ha realizado para satisfacer las necesidades de quien requiere buscar un trabajo, ya que pese a la existencia de los portales de empleo, se observan una serie de necesidades sin cubrir.
El primer aspecto que hay que destacar, es que la informacin que se le ofrece al usuario en los diversos portales de empleo es muy heterognea obligando a este a familiarizarse con mltiples aplicaciones, por lo que el primer objetivo es ofrecer un sistema de consulta homogneo, estructurado y lo ms intuitivo posible, con el fin de facilitar al usuario la interaccin con la aplicacin.
Otro fin del proyecto, es permitir que el usuario interaccione con varios portales de empleo, pues la propia existencia de mltiples portales de empleo, hace que el usuario no pueda consultarlos todos en su actividad de bsqueda, pudiendo dejar un puesto de trabajo asociado a su perfil simplemente por el hecho de no haber consultado el portal de empleo adecuado. Este mismo objetivo es bidireccional, ya que las empresas se deberan dar de alta en varios portales de empleo para poder estar al alcance de todos los usuarios que buscan trabajo.
Otro objetivo que se pretende cubrir es evitar que el usuario se encuentre desbordado por la gran oferta de empleo que aparecen en estos portales dndole una serie de utilidades que le permitan establecer criterios para filtrar aquellos puestos de trabajo que no son de inters.
Tambin se pretende administrar una herramienta de gestin de puestos de trabajo, en la cual se puedan tener un listado de vacantes interesantes para el demandante, y registrar un seguimiento del estado de dichas vacantes.
Pgina 13
Por lo que se observa que la realizacin de este proyecto puede generar un gran beneficio a quien se encuentre en la compleja tarea de buscar empleo.
Para la realizacin de esta documentacin se ha utilizado la metodologa UML (Unified Modeling Language) [25, 32] pues se considera la mejor metodologa para representar funcionalmente y tcnicamente el sistema desarrollado.
El primer captulo consiste en una breve introduccin en la cual se identifica el contexto actual en el que se ha desarrollado el proyecto, la motivacin que ha incentivado la creacin de este sistema as como la justificacin por la cual se ha optado por la realizacin de un sistema agregador de portales de empleo y no otro tipo de aplicacin.
En el segundo captulo Estado del Arte se ha presentado el contexto tecnolgico en el cual nos encontramos actualmente, indicando las distintas tecnologas que podan haber sido utilizadas para la realizacin del sistema y decidiendo cual de stas eran las ms apropiadas para la implementacin de la aplicacin. Todo este estudio ha sido segmentado siguiendo la arquitectura que se pretenda implantar, Arquitectura en Tres Capas. [26, 27] Otro aspecto que se ha presentado en este captulo ha sido las ltimas tendencias tecnolgicas en la implementacin de aplicaciones web.
En el captulo de Anlisis y Diseo se ha realizado como indica su nombre el anlisis y el diseo del sistema siguiendo la metodologa UML. Inicialmente se ha realizado un anlisis funcional, en el cual se identificaban y explicaban brevemente las funcionalidades principales del sistema. Posteriormente se ha realizado un modelado de requisitos por medio de diagrama de casos de uso con el objetivo de acotar las funcionalidades de la aplicacin, de modo que pueda ser consultado en cualquier momento y que con un golpe de vista se identifiquen las acciones que el sistema realiza. Una vez identificado los requisitos, se ha procedido a realizar el anlisis del sistema y finalizado este, se ha hecho el diseo de la aplicacin. Entre las
Pgina 14
secciones de este captulo, tambin se encuentra el Diseo de Entidad Relacin de la Informacin que se debe almacenar en el sistema y el Modelado del Comportamiento de la aplicacin por medio de Diagramas de Colaboracin y Diagramas de Secuencia.
El siguiente captulo denominado Implementacin muestra todos aquellos aspectos relacionados con el desarrollo de la aplicacin, pero con un mayor nivel de detalle que el diseo. Es decir, presentar todas las caractersticas destacables de la implementacin del sistema y que no quedan debajo del anlisis y diseo, como puede ser la especificacin del interfaz de usuario, las tecnologas implantadas, u otras propiedades importantes de la aplicacin. Entre ellas, la reduccin del tiempo de espera, el soporte fsico en el cual se ha almacenado la informacin, la accesibilidad...[9] En este captulo se describe detalladamente el proceso de una consulta a la aplicacin. Otras cualidades de la aplicacin que tambin se han abordado en este captulo son la como la accesibilidad, la consistencia, la concurrencia, la portabilidad, etc...
Un elemento imprescindible para garantizar un software estable y de calidad son las pruebas, por lo que se le dedicado un captulo aparte, ya que para tener la certeza de que son correctamente realizadas, hay que aislarlas de la implementacin.
El captulo Historial del Proyecto presenta una descripcin cronolgica de las actividades realizadas para la implementacin del proyecto, permitiendo hacer un seguimiento de estas y descubrir cual ha sido la evolucin que ha seguido el desarrollo de la aplicacin.
Problemas Encontrados muestra las situaciones conflictivas que se han dado en el desarrollo de la aplicacin, indicando cual era el origen de dichos problemas y las acciones que se han llevado a cabo para solventarlos.
El captulo Conclusiones y Trabajos Futuros indica las conclusiones a las que se ha llegado una vez finalizado el proyecto y presenta varios frentes de evolucin que permitiran que el servicio ofrecido por el portal sea ms completo.
Finalmente, aparecen la Bibliografa y los Anexos donde se presenta la documentacin que ha sido consultada para la realizacin del proyecto, y se aporta una serie de documentos auxiliares que facilitaran el entendimiento del funcionamiento de la aplicacin.
Pgina 15
Siglas y Acrnimos
A continuacin se presentan una serie de siglas y acrnimos que son utilizados frecuentemente en la documentacin del proyecto.
API CSS DOM DTD ETT GPL HTML HTTP J2EE JDK JSDK JSP MVC RDF SQL Ssh UML URI URL W3C WAI WebL WWW XML XSL XSLT
Application Program Interface Cascading Style Sheets Document Object Model Document Type Definition Empresa de Trabajo Temporal General Public License HyperText Markup Language Hipertext Transfer Protocol Java 2 Enterprise Edition Java Development Kit Java Servl et Development Kit Java Server Pages Modelo Vista Controlador Resource Description Framework Standard Query Language Secure Shell Unified Modeling Language Uniform Resource Identifier Uniform Resource Locators World Wide Web Consortium Web Accessibility Iniciative Compaq's Web Language World Wide Web Extensible Markup Language Extensible Stylesheet Language Transformations XSL
Tabla 1 Siglas y Acrnimos
Pgina 16
Se comentar el contexto en el cual nos encontramos con el objetivo de identificar aquellas herramientas que mejor se adapten a la implementacin del proyecto que se desea llevar a cabo.
Tambin se realizaran observaciones sobre las ltimas tendencias en desarrollo de aplicaciones web, como la utilizacin de frameworks, que aportan al sistema gran consistencia por medio del cumplimiento de patrones de diseo y un mecanismo para la correcta validacin de los datos introducidos por el usuario.
Pgina 17
Bsqueda de Empleo
La bsqueda de empleo, es una de las actividades ms comunes en la actualidad, ya que con los tiempos que corren de crisis, son muchas las personas que no tienen trabajo o que simplemente no estn conformes con su empleo actual. Esta demanda de bsqueda de empleo ha contribuido a la aparicin de una multitud de canales a disposicin del candidato que facilitan la ardua tarea de buscar trabajo. Entre estos canales se encuentra Internet. La Red pone al alcance del candidato una serie de herramientas que complementan las disponibles en el mundo fsico. Un estudio realizado por iLogos Research, indica que en el ao 2003 el 94% de las empresas ms importantes de Estados Unidos incluan en su pgina web un apartado para contratar personal.
Otra de las herramientas que proporciona la Red para facilitar la bsqueda de un trabajo, son los portales de empleo, que permiten al usuario buscar y localizar una vacante apropiada sin necesidad de acceder a las pginas web de las empresas, permitiendo aglutinarlas todas en un solo portal, agilizando en gran medida el proceso de bsqueda.
Despus de realizar un estudio, se llega a la conclusin de que pese a la multitud de herramientas existentes, la bsqueda de empleo es un proceso activo, el cual requiere un esfuerzo y una dedicacin. Puesto que es muy complicado encontrar el trabajo deseado nicamente incluyendo el currculo en un portal de empleo.
Las empresas tienden a utilizar tanto Internet como el correo electrnico en sus procesos de seleccin, de modo que el candidato pierde una gran cantidad de oportunidades si no dispone de estos canales de comunicacin. Internet permite el acceso a enormes bolsas de empleo y facilita el contacto entre las empresas y los trabajadores, pero no libra a los demandantes de realizar el esfuerzo.
La gran ventaja que ofrece la Red es que permite acortar las distancias entre las empresas y las personas que buscan trabajo, aportando una gran cantidad de ventajas: comodidad, inmediatez, ahorro de dinero y tiempo...
Esto ha motivado a que las mayoras de las empresas tengan una seccin en su web destinado al empleo. Dicha seccin normalmente es de libre acceso y si el usuario requiere de mayores servicios, se le solicita que se registre (generalmente el proceso de registro es gratuito)
Pgina 18
Estos servicios han levantado tanto inters que se han creado un gran nmero de bolsas de trabajo disponibles en la Red, de modo que la oferta para el demandante es amplia y variada. Segn un estudio de Pew Internet Proyect, la mitad de los internautas estadounidenses (52 millones de personas) utiliz la Red para buscar trabajo. Los recursos disponibles en la Red, para buscar trabajo son muy variados: ? Portales de empleo ? Cuentan con las bases de datos ms extensas y es donde suelen acudir las empresas a buscar currculos. [1,2,4,5,6,7] ? Sitios especializados ? Son portales a los cuales acceden aquellos demandantes que tienen claro el rea en el cual desean trabajar. Prcticamente cada sector tiene su pgina de empleo, aunque, lo que ms abundan son las bolsas de trabajo de informtica y tecnologa: Tecnoempleo [3] en Espaa o Computerjobs en Estados Unidos. Tambin destacan aquellos sites para trabajos relacionados con las finanzas. ? Anuncios clasificados ? Las publicaciones de anuncios clasificados tambin se han incluido en la Red. El grupo Anuntis, editor de peridicos gratuitos y publicaciones especializadas sobre inmobiliaria, motor y empleo se encuentra presente en Internet con Segundamano, que tiene su seccin de trabajo en Internet, que a su vez complementa con el portal Mercado de Trabajo. ? Trabajo temporal ? Otra alternativa para buscar trabajo es acceder a las pginas de las ETT. Estas disponen de portales que ofrecen recursos tanto a las empresas como a los demandantes de empleo. Entre estas encontramos: Interempleo, Manpower, Adecco y Temps
Web Semntica
El objetivo de la Web Semntica es convertir la informacin disponible en Internet en conocimiento. [19,48]
Internet, es un canal de comunicacin orientado a las personas, es decir para que estas interacten con los sistemas buscando informacin, cuyo objetivo final es la obtencin de
Pgina 19
un conocimiento. Y la problemtica surge del hecho de que dicho conocimiento nicamente se obtiene de una forma manual por medio de una dedicacin a la bsqueda de contenidos. Es decir, al conocimiento nicamente llegan las personas por medio de la interaccin con la web y el aprendizaje que dicha accin conlleva. El objetivo de la Web Semntica es que dicho conocimiento no este nicamente al alcance de las personas, es decir, que automticamente sea posible obtener la informacin disponible en Internet y estructurarla de modo que se llegue al conocimiento.[47]
HTML
Universidad
HREF
HREF
Contiene
Contiene
HTML
HTML
Departamento
Departamento
HREF
Formado
HTML
HREF
HTML
Profesor
Ensea
Estudiante
HREF HTML
HREF HTML
Ensea Estudiante
Ensea Estudiante
Web Actual
Web Semntica
Que los datos disponibles en Internet no tienen ninguna estructura y en numerosas ocasiones estn fuera del contexto, de modo que su tratamiento resulta muy complejo. Para convertir dichos datos en informacin es necesario estructurarlos, y esto requiere de un conocimiento del contexto en el cual se encuentran los datos. Es decir, es necesaria una explicacin de los datos, informacin acerca de los datos, lo que se denomina: metadatos.
Pgina 20
Los metadatos no se visualizan, pero se encuentran integrados en el documento ofreciendo informacin variada: desde el tipo de formato utilizado (html, xml...) hasta el autor, editor con el que se ha confeccionado, informacin para los buscadores, etc.
Los metadatos permiten el tratamiento automtico de la informacin disponible en la web, por ejemplo, los buscadores se apoyan utilizan, entre otros elementos, los metadatos para indexar las pginas web disponibles en Internet. ? Las Ontologas [46]. ? Son colecciones de enunciados que definen las relaciones entre conceptos y especifica las reglas lgicas que permiten razonar con dichos conceptos. Las ontologas permiten el tratamiento automtico de los datos semnticos de una pgina de la red siguiendo los vnculos especificados en las relaciones.
Los RDF [55] se crearon a partir del XML, mediante ellos podemos dotar de contenido a los datos de las pginas web. Consiste en la descripcin de los recursos disponibles en la red. Como son las pginas, los frames, los formularios...
Pgina 21
Los RDF definen un lenguaje semntico comn para crear pginas web, se definieron etiquetas para indicar lo que es una noticia, lo que es un ttulo, etc. De esta forma se permite el intercambio de datos entre webs a nivel semntico, por ejemplo, la obtencin de noticias de la web mediante programas que leen RDF sin necesidad de acceder a la web con un navegador.
Los RDF mediante el uso de los URI (Uniform Resource Identifier, que identifican de los recursos de la red de manera unvoca) proveen de una estructura semntica precisa, que permite la codificacin y el intercambio de metadatos correctamente normalizados.
Pero esta no es la nica utilidad que proporcionan los RDF, estos tambin ofrecen las reglas que permiten asociar los conceptos representados mediante metadatos, posibilitando su tratamiento automtico, y permitiendo que el procesamiento de esta informacin sea rpido.
RDF usa la sintaxis del lenguaje XML para el intercambio y procesamiento de metadatos.
No hay que confundir RDF con Web Semntica. RDF es simplemente un modelo y formato de datos que permite a la gente crear datos legibles por la mquina. La Web Semntica ser construida por encima de estos datos. Por lo tanto, cuando se publica algo en RDF, no se est creando necesariamente una parte de la web semntica, sino que se est poniendo los datos a disposicin de los procesadores semnticos de la web.
La web es un entorno visual en el cual los seres humanos navegan entre los mltiples vnculos disponibles en las pginas utilizando en dicha navegacin: la intuicin, el conocimiento del contexto, la identificacin del significado de las imgenes expuestas en las pginas, etc... De modo que automatizar todas esas tareas que resultan tan simples de realizar por parte una persona no es sencillo, y todo pese a que se tenga conocimiento del significado de los elementos que componen las pginas.
Pgina 22
? Motores de bsquedas. ? Son aplicaciones que permiten realizar bsquedas de recursos disponibles en la Red y que se encuentran correctamente indexados. Existen distintos tipos de buscadores o motores de bsqueda segn se indexe dicha informacin. Entre ellos se encuentran: Spiders: Recorren las pginas recopilando informacin sobre los contenidos de estas. Principalmente el texto que en ellas aparece. Cuando se busca una informacin en los motores, ellos consultan su base de datos, y con la informacin que han recogido de las pginas, presentan un resultado clasificando las ocurrencias segn su relevancia.
Directorios: En estos, los algoritmos son mucho ms sencillos, presentan la informacin sobre las webs registradas como una coleccin de directorios. No recorren las webs ni almacenan sus contenidos. Solo registran algunos de los datos de las pginas. Como el ttulo y la descripcin de la web que se introduzcan a la hora de registrar las webs.
? Agentes inteligentes. [56] ? Un agente es una entidad software que recoge, filtra y procesa informacin contenida en la Web, realiza inferencias sobre dicha informacin e interacta con el entorno sin necesidad de supervisin o control constante por parte del usuario.
Cualidades de los agentes: ? Comunicativo: El agente debe entender las necesidades, objetivo y ? preferencias del usuario. As mismo, debe poder comunicarse con el entorno mediante representaciones compartidas del conocimiento (ontologas) ? Autnomo: El agente aparte de comunicarse, debe poder interactuar con el ? entorno, tomando decisiones y actuando por s solo, limitando sus acciones segn el nivel de autonoma permitida por el usuario. ? Adaptable: El agente debe ser capaz de aprender del entorno: usuarios ? (preferencias), fuentes de informacin y otros agentes.
El papel del agente inteligente en el proceso de recuperacin semntica de informacin no debe confundirse con la de un buscador inteligente. Un buscador inteligente se aprovechar del enriquecimiento semntico de los recursos web para mejorar (principalmente en la precisin) la recuperacin de informacin, aunque su funcionamiento se basar, como los actuales buscadores, en la previa indexacin de todos aquellos recursos susceptibles de ser recuperados.
En cambio, un agente inteligente recorrer la Web a travs de los enlaces entre recursos (hiperdocumentos, ontologas...) en busca de aquella informacin que le sea
Pgina 23
solicitada, pudiendo adems interactuar con el entorno para el cumplimiento de tareas encomendadas. Por ejemplo, un agente inteligente, ante una consulta dada, podra consultar autnomamente un buscador, y a partir de sus resultados, explorar la Web hasta encontrar la informacin solicitada, pudiendo finalmente llevar a cabo una accin sobre dicho recurso, como podra ser la reserva de una habitacin en un hotel.
Realmente este es uno de los objetivos del presente proyecto, la capacidad de manipular los datos, en este caso los puestos de trabajos, disponibles en Internet permitiendo estructurarlos y operar con ellos, llegando a obtener cierto conocimiento: Los puestos de trabajo que se repiten, los puesto que son realmente nuevos, agrupar los empleos de las empresas aunque se encuentren en distintos portales.
Arquitectura
El sistema cumple con una arquitectura J2EE (Java 2 Enterprise Edition) [24]. J2EE es un conjunto de especificaciones propuestas por Sun Microsystem en Java para la construccin de aplicaciones empresariales.
Esta arquitectura se caracteriza por: ? Heterogeneidad y descentralizacin: Las aplicaciones resultantes son muy diversas y ? no tienen porque encontrarse ubicadas en una misma mquina fsica. Caracterstica muy comn en los sistemas de informacin actuales. ? Independencia de plataforma, portabilidad e interoperabilidad entre aplicaciones. El ? propio hecho que las aplicaciones se encuentren distribuidas genera la necesidad de que los sistemas sean independientes de la plataforma y que sean fcilmente portables de una mquina a otra.
Patrones de Diseo
Se considera un patrn de diseo a la descripcin de un conjunto de objetos y clases que se comunican entre s y que pueden ser adaptados para resolver un problema de diseo general en un contexto particular. Son tcnicas genricas que han tenido xito en una gran cantidad de proyectos y se han destilado y recopilado para ser usadas. [25,26]
Cada patrn describe un problema que se repite habitualmente, y explica los fundamentos de la solucin a dicho problema, de tal modo que se puede usar esta solucin
Pgina 24
siempre que se presente el mismo problema, de una manera diferente, pero usando los mismos fundamentos.
1. El nombre del patrn. Es un identificador que usa para describir un problema de diseo, su solucin y las consecuencias. Es utilizado para facilitar la comunicacin entre los desarrolladores. Es la manera corta y inequvoca de nombrar el patrn.
2. El problema, que describe en que contexto se debe usar el patrn. Para ayudar en la identificacin de los "sntomas" precisos de los problemas que el patrn solucionar. Describe cuando se puede aplicar el patrn. Se explica el problema a resolver y su contexto. A veces el problema incluir una lista de las condiciones que se deben cumplir para que tenga sentido aplicar el correspondiente patrn de diseo.
3. La solucin. Descripcin de los elementos que conforman el diseo en cuestin, incluyendo sus relaciones, responsabilidades y colaboraciones. La solucin no describe un diseo particular y concreto o una implementacin, dado que un patrn es como una plantilla que puede ser aplicada en situaciones diversas. Por consiguiente, un patrn da las directrices de cmo se debe arreglar el problema.
4. Las consecuencias, son los resultados y costes de usar el patrn. Esto es muy importante porque permite prever los beneficios de la solucin, de manera que se pueda evaluar fielmente si es el patrn ptimo.
Hay que darse cuenta de que los patrones de diseo dependen del punto de vista, de la manera de interpretarlos. El hecho es que el patrn que aplica una persona, otra persona lo puede haber hecho igual sin saber que es un patrn sencillamente porque ha "reinventado la rueda", es decir ante un problema ha hallado una solucin que coincide con la que se describen en los patrones de diseo. En este sentido, para hablar de patrones de diseo es mejor concentrarse en aquellos que poseen cierto nivel de abstraccin.
Un patrn de diseo identifica, abstrae y formaliza los aspectos clave de una estructura comn de diseo til para ser reusada en la resolucin de toda una serie de problemas similares. Cada patrn se especializa en un aspecto concreto.
Los patrones ayudan a aumentar la calidad de un desarrollo, bsicamente dando ideas de como hacer el cdigo ms reusable y mantenible. Es decir, ensean a saber que hacer con la herencia, el polimorfismo, y todas las ventajas que tiene la orientacin a objetos. Un patrn se describe mediante UML para que pueda aplicarse a cualquier lenguaje orientado a objetos.
Pgina 25
Existen 3 tipos de patrones: los patrones de creacin, los estructurales y los de comportamiento. Los patrones de creacin indican como los objetos son creados, compuestos y representados. Los patrones estructurales tratan sobre como las clases y objetos se estructuran para formar entidades mayores. Los patrones de comportamiento estn relacionados sobre la adjudicacin de responsabilidades a los objetos y de los algoritmos.
El sistema se caracteriza por ser una aplicacin Cliente-Servidor, y con el objetivo de que el sistema sea lo ms estructurado posible, se ha decidido que se debe ajustar en la medida de lo posible a una arquitectura (o patrn) Modelo Vista Controlador.
HTTP
Controlador Resultado
Action
Redirecciona
Modelo
Respuesta
Vista
Consulta
Este patrn divide una aplicacin en tres reas: procesamiento, entrada y salida. Y esta compuestos por: Modelo: encapsula los datos y la funcionalidad principal de la aplicacin. Es independiente de la representacin de los datos.
Pgina 26
Vista: despliega la informacin al usuario, a partir de los datos del Modelo. Cada Vista tiene un componente Controlador asociado. Controlador: que se encarga de recibir las entradas del usuario.
Esta separacin de componentes, permite tener distintas vistas del mismo modelo e independizar las acciones (las cuales son interpretadas por el controlador) de la presentacin de los resultados.
El funcionamiento del patrn consiste en que el navegador del usuario, en su peticin HTTP, genera una solicitud que es atendida por el controlador. ste analiza la peticin, y en funcin de la operacin que se desee realizar se llama a los objetos correspondientes del Modelo. El Modelo se encarga de ejecutar la solicitud y generar los resultados que mostrarn posteriormente las Vistas.
En funcin del resultado devuelto por el Modelo, el Controlador redireccionar la peticin hacia una Vista u otra. Las cuales presentan los resultados generando el cdigo HTML de las pginas, proceso que puede necesitar consultar al Modelo para realizar su tarea adecuadamente.
Ventajas: ? Se independizan tanto las vistas como las acciones del Modelo, dotando al sistema de ? un ncleo ms estable y robusto. ? Permite posponer el desarrollo del interfaz de la aplicacin a la implementacin de ? esta. De tal modo que las decisiones asociadas a la imagen, quedan en segundo plano. ? Permite centralizar las operaciones. ? ? Favorece la reutilizacin de las vistas, puesto que estas pueden ser llamadas a partir ? de distintas operaciones.
Pgina 27
Capa de Datos
Modelo
Capa de Presentacin: Es la capa que se encarga del interfaz de usuario, de la presentacin con la que se encuentra el usuario. Consiste en una interfaz web a la que acceden los usuarios va http mediante navegadores, de tal modo que cualquier persona puede interactuar con la aplicacin nicamente con tener instalado un navegador web.
Capa Lgica de Negocio: Es el ncleo del sistema en el se realizarn todas las operaciones y clculos necesarios para el funcionamiento de la aplicacin.
Capa de Datos: Es la parte del sistema que se encarga del acceso a los datos.
Las ventajas de esta arquitectura: ? Mayor claridad de desarrollo, pues se divide la implementacin en partes claramente ? diferenciadas, permitiendo un desarrollo por mdulos, lo que permite una distribucin de las tareas de desarrollo ms ptima. ? Menor coste de modificacin en la presentacin. Al considerar la presentacin de la ? informacin al usuario como una capa independiente, esto permite que si en un momento determinado se decide cambiar el interfaz de usuario, esta modificacin no repercuta en el funcionamiento del sistema, pues nicamente se debe modificar la capa de presentacin. ? Menor coste en caso de modificacin de los datos. Del mismo modo que con la capa ? de presentacin, el hecho de tener una capa independiente de datos, permite una fcil migracin del sistema de una fuente de datos a otra. ? Facilidad de desarrollo y disminucin del tiempo necesario para terminar el sistema, ? pues permite la paralelizacin en el desarrollo de las tareas.
Pgina 28
? Facilita la especializacin de perfiles de programacin (cada uno de los diferentes ? bloques es desarrollado por distintos perfiles en funcin de sus cualidades de programacin). ? Aumenta en gran medida el nivel de reusabilidad de cdigo. Facilita una evolucin ? continuada de los sistemas, sin puntos de ruptura, ya que un cambio en un sistema afectar a uno o ms componentes pero nunca afectar significativamente al ncleo de la aplicacin
Otro aspecto a tener en cuenta en un sistema con esta arquitectura, son los intercambios de informacin entre las capas. Esta informacin se representar mediante ficheros XML, los cuales ofrecen los datos en una estructura determinada, la cual puede llegar a ser tratada directamente por las capas de presentacin y de datos.
Por otro lado, pese a que el sistema respete la estructura anterior, se encuentra la particularidad de que son necesarios tres interfaces en el sistema, es decir tres conexiones del sistema con el exterior:
Esta necesidad viene motivada por el hecho de que el sistema requiere de una interaccin con Internet, independiente del interfaz de usuario, ya que necesita como fuente de informacin los portales de empleo. De tal modo que se observa que realmente en el sistema la capa de Datos comprende tanto los accesos a los datos almacenados por el sistema como los accesos a los datos contenidos en Internet (en los portales de empleo) por lo que realmente aparecen tres canales de comunicacin entre el sistema y el exterior.
Capa de Presentacin
Pgina 29
Respecto a la capa de presentacin, se presentan mltiples opciones tecnolgicas para su implementacin. Todas ellas cumplen los requisitos de ser orientadas a la realizacin de aplicaciones Web, y ser multiplataforma.
Las tecnologas que van a ser estudiadas son: ? Servlets ? ? Jsp ? ? WebL ?
Servlets
Los servlets son mdulos de Java, que se pueden implantar en un servidor web o contenedor de aplicaciones, de tal modo que es posible crear aplicaciones a las cuales se acceda mediante un navegador web, es decir aplicaciones Web. [24]
El servidor web o contenedor de aplicaciones ejecuta dichos servlets cuando estos son invocados mediante el protocolo http. Estos procesan la peticin http del cliente y generan una respuesta en forma de pgina html que es enviada al cliente, el cual la visualiza en su navegador.
Una de las ventajas de los servlets es que son cargados en memoria nicamente cuando son solicitados por el cliente, y posteriormente residen en ella. Esta propiedad de los servlets permite agilizar enormemente su ejecucin, ya que las tareas ms pesadas slo se ejecutan en el constructor.
Otra ventaja que ofrecen los servlets, es su fcil asociacin con la tecnologa XML, pues la pgina de respuesta de los servlets puede ser el resultado de aplicar a un fichero XML una serie de transformaciones indicadas en ficheros XSL. Lo que conllevara a una gran independencia de los datos con la presentacin de la informacin al usuario.
Jsp
Al igual que los servlets, los jsp (Java Server Pages) son mdulos Java, que tambin permiten la creacin de aplicaciones web, con la diferencia conceptual de que los servlets son programas Java que reciben, procesan y generan una pgina de respuesta y los jsp son pginas html, en las cuales hay directivas en Java que son ejecutadas cuando se va a devolver la pgina solicitada por el usuario. [29,30]
Estas directivas en Java, dan una gran flexibilidad pues pueden invocar a los mtodos de las clases que constituyan la aplicacin.
Pgina 30
La problemtica de esta tecnologa es que no se ve tan claramente la independencia de la informacin con la presentacin de los datos, pues el jsp representa la pgina que se va a mostrar. Esto permite un desarrollo en principio ms rpido pero menos flexible y reutilizable.
WebL
WebL dispone de un mdulo denominado Servlet cuya funcionalidad es parecida a la que ofrecen los Servlets realizados en Java, aspecto lgico pues WebL est realizado en Java. Dicho mdulo permite realizar aplicaciones Web en WebL, de tal modo que un programa en WebL es capaz de recibir, procesar y responder a una peticin http realizada por un cliente desde un navegador. [14,16,17]
Resolucin
Finalmente se determina que la tecnologa ms adecuada para la implementacin de la capa de presentacin son los Servlets por los siguientes motivos: ? Es la tecnologa con la cual el desarrollador esta ms familiarizado. ? ? Frente a los JSP: Permiten independizar en mayor medida la interfaz de usuario, pues ? esta se encontrar formada por una serie de plantillas (ficheros xsl) fcilmente modificables. ? Frente a WebL: Suponiendo que el ncleo de la aplicacin este hecho en Java, es ? conveniente utilizar servlets, ya que se obtendra una aplicacin ms homognea, pues as la mayor parte del software estar realizado en Java, generando una mayor capacidad de reutilizacin de funcionalidades..
Capa de Datos
Para que el sistema sea persistente en el tiempo y no se pierda la informacin, es necesario un soporte fsico en el cual se almacene la informacin. Como soporte fsico aparecen dos opciones a utilizar, una base de datos o ficheros xml.
Base de Datos
Es un sistema formado por un conjunto de datos y unos programas que se encarga de la gestin de dichos datos, de manera que se controla el almacenamiento de estos. En estos
Pgina 31
sistemas, los datos son independientes de los programas que los usan. Las relaciones que hay en la informacin se almacenan junto a los datos. Caractersticas: ? Acceso mltiple: Varios usuarios pueden acceder al sistema sin que se produzcan ? conflictos ni resultados incoherentes. ? La descripcin de los datos est almacenada junto a ellos, se encuentra implcita en la ? estructura de la Base de Datos. ? Control de redundancia: Los datos se almacenan una sola vez, por lo que no es ? necesario actualizar un dato en varios ficheros.
Para la implementacin del proyecto se consider la utilizacin MySQL, un sistema de administracin de bases de datos relacionales.[31]
Una base de datos relacional almacena los datos en tablas separadas en lugar de poner todos los datos en un solo lugar. Esto agrega velocidad y flexibilidad. Las tablas son enlazadas al definir relaciones que hacen posible combinar datos de varias tablas cuando se necesitan consultar datos. Para realizar dichas consultas se utiliza SQL, "Lenguaje Estructurado de Consulta", es el lenguaje ms usado y estandarizado para acceder a bases de datos relacionales.
MySQL es Open Source, es decir que puede ser usado gratuitamente Cualquiera puede descargar el software de MySQL de Internet y usarlo sin pagar por ello. Inclusive, cualquiera que lo necesite puede estudiar el cdigo fuente y cambiarlo de acuerdo a sus necesidades. MySQL usa la licencia GPL (Licencia Pblica General GNU), para definir qu es lo que se puede y no se puede hacer con el software para diferentes situaciones.
El servidor MySQL fue desarrollado originalmente para manejar grandes bases de datos mucho ms rpido que las soluciones existentes y ha estado siendo usado exitosamente en ambientes de produccin sumamente exigentes por varios aos. Aunque se encuentra en desarrollo constante, el servidor MySQL ofrece hoy un conjunto rico y til de funciones. Su conectividad, velocidad, y seguridad hacen de MySQL un servidor bastante apropiado para acceder a bases de datos en Internet.
El software de bases de datos MySQL consiste de un sistema cliente/servidor que se compone de un servidor SQL multihilo, varios programas clientes y bibliotecas, herramientas administrativas, y una gran variedad de interfaces de programacin (APIs). Se puede obtener tambin como una biblioteca multihilo que se puede enlazar dentro de otras aplicaciones para obtener un producto ms pequeo, ms rpido, y ms fcil de manejar.
Pgina 32
Ficheros XML
XML, o Lenguaje de Marcado Extensible (Extensible Markup Language), es un lenguaje de marcado basado en texto que permite estructurar la informacin por medio de etiquetas. Fue creado por el Consorcio para la World Wide Web (W3C) para superar las limitaciones de HTML, el Lenguaje de Marcado de Hipertexto que es la base para todas las pginas Web. [20, 22]
Existen tres trminos comnmente usados para describir las partes de un documento XML: etiquetas, elementos y atributos. ? Una etiqueta es un texto entre el smbolo menor que (<) y el smbolo mayor que (>). ? Existen etiquetas de inicio (como <nombre>) y etiquetas de fin (como </nombre>) ? Un elemento consta de la etiqueta de inicio, la etiqueta de fin y de todo aquello que ? este entre ambas. ? Un atributo es un par nombre-valor dentro de la etiqueta de inicio de un elemento. ?
Hay tres tipos de documentos XML: ? Documentos invlidos no siguen las reglas de sintaxis definidas por la especificacin ? XML. Si un desarrollador tiene reglas definidas de lo que ese documento puede contener en una DTD o Esquema, y el documento no las sigue, ese documento es invlido. ? Documentos vlidos siguen tanto las reglas de sintaxis XML como las reglas ? definidas en su propio DTD o Esquema. ? Documento bien formado sigue las reglas de sintaxis XML, pero no tiene un ? Esquema o DTD.
Existen dos mtodos para definir los elementos se pueden usar en representar de los datos en un fichero XML: ? Un mtodo es usar un Document Type Definition o DTD. Un DTD define los ? elementos que pueden aparecer en un documento XML, el orden en el cual pueden aparecer, cmo pueden estar anidados y otros detalles bsicos de la estructura del documento XML. Los DTD son parte de la especificacin original de XML y son muy similares a los DTDs de SGML. ? El otro mtodo es usar un Esquema XML (XML Schema). Un esquema puede definir ? todas las estructuras de documento que pudieran definirse con DTDs y adems, puede definir tipos de datos y reglas mucho ms complicadas de las que pueden hacerse con un DTD. El W3C desarroll la especificacin de Esquemas XML un par de aos despus que la especificacin original XML.
Pgina 33
Aunque, no siempre es necesario la utilizacin de DTD o Esquemas XML. Ya que los documentos XML gracias a sus etiquetas auto-describen los datos que contienen.
A continuacin se muestran las ventajas de la utilizacin de documentos XML: ? XML simplifica el intercambio de datos. Debido a que diferentes organizaciones (en ? incluso diferentes partes dentro de una misma organizacin) raramente utilizan un nico conjunto de herramientas, esto puede suponer una cantidad de trabajo significativa para comunicar las aplicaciones. Usando XML cada grupo crea una nica utilidad que transforma sus formatos de datos internos en XML y viceversa. ? XML permite un cdigo ms ligero. Debido a que los documentos XML pueden ser ? estructurados para identificar cada pieza importante de informacin ( as como las relaciones entre dichas piezas), es posible escribir cdigo que procese estos documentos XML sin intervencin humana. ? XML permite bsquedas ms rpidas. Debido a que los motores de bsqueda han ? mejorado sustancialmente durante los aos, es todava bastante comn encontrar resultados errneos en una bsqueda. Si se estn buscando pginas HTML de alguien llamado Chip, se pueden encontrar pginas sobre chips de chocolate, chips de ordenador, chips de madera y montones de otros enlaces intiles. Buscando en documentos XML por elementos <nombre> que contengan el texto Chip debera darnos un conjunto de resultados mucho mejor. ? Se encuentra en almacenado en Texto Plano, lo que permite su edicin y depuracin ? con un simple editor de texto, sin necesidad de complejas herramientas para su tratamiento y visualizacin. ? Contiene nicamente la informacin de la cual se dispone, no indica como se presenta. ? De tal modo que permite separar el contenido de la presentacin. ? Permite ser fcilmente tratado por hojas de estilos xsl, lo cual ofrece un mecanismo ? muy til para presentar posteriormente la informacin e incluso cambiar su formato si es necesario (utilizando dichos xsl como filtros). ? Los documentos xml son fcilmente procesables para su tratamiento automtico, pero ? para ello es imprescindible que el documento se encuentre bien-formateado.
Todas estas caractersticas hacen de XML sea un buen sistema de almacenamiento e intercambio de informacin.
Pgina 34
Resolucin
Finalmente se opta por la utilizacin de ficheros xml pues las ventajas que estos ofrecen para el sistema son ms convincentes que aquellas que nos proporciona la utilizacin de una Base de Datos.
El principal motivo es que de cara a la implementacin del sistema BuscaEmpleo prima ms el hecho de que la informacin sea fcilmente tratable de manera automtica, a la eficiencia en su consulta y almacenamiento. Que es la mayor cualidad de las bases de datos respecto la utilizacin de ficheros.
Con el Modelo de Objetos del Documento los programadores pueden construir documentos, navegar por su estructura, y aadir, modificar o eliminar elementos y contenido. Se puede acceder a cualquier cosa que se encuentre en un documento HTML o XML, y se puede modificar, eliminar o aadir usando el Modelo de Objetos del Documento.
Pgina 35
En el DOM, los documentos tienen una estructura lgica que es muy parecida a un rbol. Una propiedad importante de los modelos de estructura del DOM es su isomorfismo estructural: si dos implementaciones cualesquiera del Modelo de Objetos del Documento se usan para crear una representacin del mismo documento, ambas crearn el mismo modelo de estructura, con exactamente los mismos objetos y relaciones.
Se denomin "Modelo de Objetos del Documento" porque es un "modelo de objetos" en el sentido tradicional del diseo orientado a objetos: los documentos se modelizan usando objetos, y el modelo comprende no solamente la estructura de un documento, sino tambin el comportamiento de un documento y de los objetos de los cuales se compone. En otras palabras, los nodos no representan una estructura de datos, sino que representan objetos, los cuales pueden tener funciones e identidad. Como modelo de objetos, el DOM identifica: ? las interfaces y objetos usados para representar y manipular un documento ? ? la semntica de estas interfaces y objetos, incluyendo comportamiento y atributos ? ? las relaciones y colaboraciones entre estas interfaces y objetos ?
WEBL
Por otro lado WebL dispone de un recurso denominado Pgina (Page) para representar las pginas web, y dicho recurso a su vez tiene una estructura interna en la que se encuentran Etiquetas (Tags), Elementos (Elements), Comentarios (Comments), Elementos no vacos (Non-empty Elements), Elementos Vacos (Empty Elements), Instrucciones de Proceso (Processing Instructions), Directivas SGML (SGML Directives)... que permite su manipulacin por medio de lgebra de Marcado (Markup Algebra).[14,16,17]
El lgebra de marcado (markup algebra) de WebL se usa para manipular pginas web y extraer datos de ellas. La extraccin de informacin puede consistir en operaciones simples como contar los enlaces de una pgina u operaciones ms complejas que completan formularios Web y procesan los resultados retornados desde el servidor. Los operadores del lgebra de marcado son diseados para hacer ms fcil la obtencin de informacin selectiva de una pgina, ignorando el desorden subyacente.
El lgebra de marcado se basa en tres conceptos: etiquetas (tags), partes (pieces) y conjuntos de partes (piece sets). En trminos simples, una etiqueta corresponde a una etiqueta de marcado, una parte identifica una subregin contigua de una pgina, y un conjunto de partes es una coleccin de partes.
El primer paso en analizar una pgina Web es identificar todas las etiquetas de marcado en la pgina (encerradas entre los caracteres < y >). Cada una de las etiquetas se
Pgina 36
convierte en un tag (un valor WebL de tipo tag). Conceptualmente la pgina consiste de una lista de objetos de tipo tag y segmentos de texto (o datos de tipo carcter).
El modelo WebL tambin soporta etiquetas sin nombre (unnamed). Lo equivalente en HTML o en XML es <> (que en la prctica no ocurre). WebL usa estas etiquetas para ubicar marcadores en una pgina. Como su nombre lo indica, las etiquetas sin nombre no tienen ni nombre ni atributos.
Una parte (piece) es un tipo de valor WebL que denota una regin de la pgina. Cada parte se referencia con dos etiquetas: la etiqueta de inicio (begin tag) que denota el comienzo de la regin, y la etiqueta de fin que denota el final de la regin. La etiqueta de inicio y fin pueden ser las mismas. Otro hecho importante es que las partes nunca apuntan a segmentos de texto.
Los tipos ms comunes de partes son aquellos que corresponden a los elementos de una pgina. Para permitir que el programador acceda a los atributos de los elementos, los atributos de una etiqueta de inicio de un elemento se copian dentro de variables de campo de cada parte. De manera que, una parte es muy similar a un tipo de valor objeto.
Esta es una parte importante del lgebra de marcado. Como ya se ha comentado, los atributos de los elementos de marcado pueden ser fcilmente modificados accediendo a los campos de la parte.
Aparte de la estructura y del lgebra de Marcado, WebL aporta una serie de funciones que se pueden utilizar para insertar partes en una pgina, borrarlas o sustituirlas: ? Crear partes: Hay muchas maneras de crear nuevas pieces. Las funciones creadas para ? este propsito son NewPiece, NewNamedPiece. ? Insertar partes: Una vez creada una piece, sta puede ser insertada en una posicin ? especfica de una pgina. Para ello se usan InsertBefore e InsertAfter. ? Borrar partes: Para borrar una parte de una pgina se usa Delete. ? ? Sustituir partes: La funcin Replace sustituye unas partes (las borra) por otras (las inserta). ?
Resolucin
Una vez que se ha descrito cada una de las tecnologas se considera que es ms correcta la utilizacin de Java apoyndose en DOM y en XPath para la implementacin la lgica de negocio por los siguientes motivos: ? Se considera que la utilizacin de Java generar un sistema ms flexible, sencillo y ? reutilizable que un sistema desarrollado en WebL.
Pgina 37
? DOM, es una recomendacin del W3C, mientras que WebL no es un estndar. Por lo ? que se considera ms adecuado la utilizacin de DOM por su estabilidad. ? La utilizacin de DOM, permite una integracin ms estable entre las distintas capas ? del sistema, pues al ser un estndar, la comunicacin entre ellas slo requiere que todas las capas trabajen con el mismo estndar. ? Respecto a la extraccin de informacin, XPath ofrece tanta flexibilidad o ms que ? WebL, pues todas las consultas realizadas en WebL se pueden traducir fcilmente a XPath.
Xpath
El objetivo principal de XPath es direccionar partes de un documento XML. Para ello, proporciona facilidades como la manipulacin de cadenas, nmeros y booleanos. XPath obtiene su denominacin por el uso que hace de la notacin de caminos, como en las URLs, para navegar a travs de la estructura jerrquica de un documento XML. [34]
XPath interpreta un documento XML como un rbol de nodos. El nombre de un nodo se modela como un par consistente en una parte local y una URI (quiz nulo) de espacio de nombres. A este nombre se le conoce como nombre expandido.
La construccin sintctica bsica en XPath es la expresin. Las expresiones son evaluadas para producir un objeto, que tendr uno de los siguientes cuatro tipos bsicos: ? Conjunto de nodos (una coleccin desordenada de nodos sin duplicados) ? ? Booleano (verdadero o falso) ? ? Nmero (un nmero en punto flotante) ? ? Cadena (una secuencia de caracteres) ?
Xpath tambin dispone de una biblioteca de funciones, la cual consiste en una correspondencia de nombres a funciones. Cada funcin toma cero o ms argumentos y devuelve un nico resultado.
Pgina 38
Un elemento importante de la expresin es el camino de localizacin. El cual permite identificar un conjunto de nodos relativo al nodo del contexto, es decir, al nodo en el cual se encuentra en ese momento realizando la llamada. Los caminos de localizacin pueden contener recursivamente expresiones utilizadas para filtrar conjuntos de nodos. Un camino de localizacin se ajusta a la regla de produccin LocationPath.
Caminos de Localizacin
Aunque los caminos de localizacin no son la construccin gramatical ms general en el lenguaje (un LocationPath es un caso especial de Expresin), son la construccin ms importante.
He aqu algunos ejemplos de caminos de localizacin utilizando la sintaxis no abreviada: ? child::obj Selecciona los elementos obj hijos del nodo contextual. ?
? child::text() Selecciona todos los nodos texto hijos del nodo contextual. ?
? child::node() Selecciona todos los hijos del nodo contextual, cualquiera que sea su ? tipo de nodo.
? attribute::name Selecciona el atributo name del nodo contextual. ? ? attribute::* Selecciona todos los atributos del nodo contextual. ?
? self::obj ?
no selecciona nada.
? child::chapter/descendant::obj ?
Pgina 39
? child::*/child::obj ?
? / selecciona la raz del documento (que es siempre el padre del elemento de ? documento).
? /descendant::obj Selecciona todos los elementos obj en el mismo documento que ? el nodo contextual.
? child::obj[position()=last()] Selecciona el ltimo hijo obj del nodo ? contextual. ? child::obj[position()=last()-1] Selecciona el penltimo hijo obj del nodo ? contextual. ? child::obj[position()>1] Selecciona todos los hijos obj del nodo contextual ? salvo el primero.
? child::obj[attribute::tipo="nuevo"] Selecciona todos los hijos obj del nodo ? contextual que tengan un atributo tipo con valor nuevo.
? child::obj [child::obj2=Nuevo] Selecciona los hijos obj del nodo ? contextual que tengan uno o ms hijos obj2 con string-value igual a Nuevo
Hay dos tipos de caminos de localizacin: caminos de localizacin relativos y caminos de localizacin absolutos.
Un camino de localizacin relativo consiste en una secuencia de uno o ms pasos de localizacin separados por /. Los pasos en un camino de localizacin relativo se componen de izquierda a derecha. Cada paso selecciona un conjunto de nodos relativos a un nodo contextual. Una secuencia inicial de pasos se une al paso siguiente de la siguiente forma: La secuencia inicial de pasos selecciona un conjunto de nodos relativos a un nodo de contexto. Cada nodo de ese conjunto se usa como nodo de contexto para el siguiente paso. Los distintos conjuntos de nodos identificados por ese paso se unen. El conjunto de nodos identificado por la composicin de pasos es dicha unin. Por ejemplo, child::obj/child::obj2 selecciona
Pgina 40
los elementos obj2 hijos de los elementos obj hijos del nodo contextual, o, en otras palabras, los elementos obj2 nietos que tengan padres obj.
Un camino de localizacin absoluto consiste en / seguido opcionalmente por un camino de localizacin relativo. Una / por si misma selecciona el nodo raz del documento que contiene al nodo contextual. Si es seguida por un camino de localizacin relativo, entonces el camino de localizacin selecciona el conjunto de nodos que seleccionara el camino de localizacin relativo al nodo raz del documento que contiene al nodo contextual.
Location Paths LocationPath ::= RelativeLocationPath | AbsoluteLocationPath AbsoluteLocationPath ::= / RelativeLocationPath ? | AbbreviatedAbsoluteLocationPath RelativeLocationPath ::= Step | RelativeLocationPath / Step | AbbreviatedRelativeLocationPath
Tabla 2 Locations Paths
Pasos de localizacin
Un paso de localizacin tiene tres partes: Un eje, que especifica la relacin jerrquica entre los nodos seleccionados por el paso de localizacin y el nodo contextual. Una prueba de nodo, que especifica el tipo de nodo y el nombre-expandido de los nodos seleccionados por el paso de localizacin. Cero o ms predicados, que usan expresiones arbitrarias para refinar an ms el conjunto de nodos seleccionado por el paso de localizacin.
La sintaxis del paso de localizacin es el nombre del eje y una prueba de nodo separados por dos caracteres de dos puntos, seguido de cero o ms expresiones, cada una entre corchetes. Por ejemplo, en child::obj[position()=1] , child es el nombre del eje, obj es la prueba de nodo y [position()=1] es un predicado.
El conjunto de nodos seleccionado por el paso de localizacin es el que resulta de generar un conjunto de nodos inicial a partir del eje y la prueba de nodo, y a continuacin filtrar dicho conjunto por cada uno de los predicados sucesivamente.
Pgina 41
El conjunto de nodos inicial se compone de los nodos que tengan la relacin con el nodo contextual que se especifica en el eje, y tengan el tipo de nodo especificado por la prueba de nodo. Por ejemplo, un paso de localizacin descendant::obj selecciona los elementos k descendientes del nodo contextual.
El conjunto de nodos inicial se filtra por el primer predicado para generar un nuevo conjunto de nodos. Este nuevo conjunto de nodos es entonces filtrado usando el segundo predicado, y as sucesivamente.
Location Steps Step ::= AxisSpecifierNodeTestPredicate* | AbbreviatedStep AxisSpecifier ::= AxisName :: | AbbreviaterAxisSpecifier
Tabla 3 Locations Steps
Ejes
Estn disponibles los siguientes ejes: ? child Contiene los hijos del nodo contextual. ?
? descendant Contiene los descendientes del nodo contextual. Un descendiente es un ? hijo o el hijo de un hijo, etc De este modo el eje descendant nunca contiene nodos atributo o espacio de nombres. ? parent Contiene el padre del nodo contextual, si lo hay. ?
? ancestor Contiene los ancestros del nodo contextual. Los ancestros del nodo ? contextual consisten en el padre del nodo contextual y el padre del padre, etc.. As, el eje ancestor siempre incluir al nodo raz.
? following-sibling Contiene todos los siguientes hermanos del nodo contextual. ? Si el nodo contextual es un nodo atributo o un nodo espacio de nombres, el eje following-sibling est vaco.
? preceding-sibling Contiene todos los hermanos precedentes del nodo contextual. ? Si el nodo contextual es un nodo atributo o un nodo espacio de nombres, el eje preceding-sibling est vaco.
Pgina 42
? following Contiene todos los nodos del mismo documento que el nodo contextual ? que estn despus de este segn el orden del documento, excluyendo los descendientes y excluyendo nodos atributo y nodos espacio de nombres. ? preceding Contiene todos los nodos del mismo documento que el nodo contextual ? que estn antes de este segn el orden del documento, excluyendo los ancestros y excluyendo nodos atributo y nodos espacio de nombres. ? attribute Contiene los atributos del nodo contextual. El eje estar vaco a no ser ? que el nodo contextual sea un elemento.
? namespace Contiene los nodos espacio de nombres del nodo contextual. El eje estar ? vaco a no ser que el nodo contextual sea un elemento.
? ancestor-or-self Contiene el nodo contextual y sus ancestros; as, el eje ? ancestor-or-self siempre incluir el nodo raz
Axes AxisName ::= ancestor | ancestor-or-self | child | descendant | descendant-or-self | following | preceding | preceding-sibling | self
Tabla 4 Axes
Pruebas de nodo
Cada eje tiene un tipo principal de nodo. El tipo principal de un eje ser el tipo de los nodos que contiene. ? Para el eje attribute, el tipo de nodo principal es atributo. ?
Pgina 43
? Para el eje namespace, el tipo de nodo principal es espacio de nombres. ? ? Para los dems ejes, el tipo de nodo principal es elemento. ?
Una prueba de nodo que sea un Qname (nombre calificado) es verdadera si y slo si el tipo del nodo es el tipo principal de nodo y tiene un nombre expandido igual al especificado en el QName. Por ejemplo, child::obj selecciona los elementos obj hijos del nodo contextual. Si el nodo contextual no tiene ningn hijo obj, seleccionar un conjunto de nodos vaco. attribute::href selecciona el atributo href del nodo contextual. Si el nodo contextual no tiene atributo href, seleccionar un conjunto de nodos vaco.
Un QName en la prueba de nodo da lugar a un nombre expandido utilizando las declaraciones de espacio de nombres del contexto de la expresin. Si el QName no tiene prefijo, entonces el URI de espacio de nombres es nulo.
Una prueba de nodo * es verdadera para cualquier nodo del tipo principal de nodo. Por ejemplo, child::* seleccionar todo elemento hijo del nodo contextual, y attribute::* seleccionar todos los atributos del nodo contextual.
Una prueba de nodo puede tener la forma NCName:*. En este caso, el prefijo es expandido de la misma forma que con un QName, utilizando las declaraciones de espacio de nombres del contexto. La prueba de nodo ser verdadera para cualquier nodo del tipo principal cuyo expanded-name tenga el URI de espacio de nombres al qu el prefijo se expande, con independencia de la parte local del nombre.
La prueba de nodo text() es verdadera para cualquier nodo de texto. Por ejemplo, child::text() seleccionar los nodos de texto hijos del nodo contextual. La prueba de nodo comment() es verdadera para cualquier nodo comentario. La prueba de nodo processing-instruction() es verdadera para cualquier instruccin de procesamiento.
La prueba processing-instruction() puede tener un argumento que sea Literal. En este caso, ser verdadera para cualquier instruccin de procesamiento que tenga un nombre igual al valor del Literal.
Una prueba de nodo node() es verdadera para cualquier nodo de cualquier tipo que sea.
Axes
Pgina 44
NodeTest ::=
Predicados
Los ejes estn orientados hacia adelante o hacia atrs. Un eje hacia delante slo puede contener el nodo contextual y los que se encuentran a continuacin en el orden del documento. Si puede contener el nodo contextual o nodos que estn antes del nodo contextual en el orden del documento es un eje hacia atrs. As, los ejes ancestor, ancestor-or-self, preceding, y preceding-sibling son ejes hacia atrs y todos los dems ejes son hacia adelante. Dado que el eje self siempre tendr a lo sumo un nodo, no supone ninguna diferencia que sea un eje hacia adelante o hacia atrs.
Un predicado filtra un conjunto de nodos con respecto a un eje para producir un nuevo conjunto de nodos. Por cada nodo del conjunto, la PredicateExpr es evaluada, si se evala como verdadera, el nodo se incluye en el nuevo conjunto de nodos.
Sintaxis Abreviada
He aqu algunos ejemplos de caminos de localizacin usando la sintaxis abreviada: ? obj ? Selecciona los elementos obj hijos del nodo contextual.
? text() Selecciona todos los nodos texto hijos del nodo contextual. ?
? @nombre ?
Pgina 45
? */obj ?
? capitulo//obj ?
? //obj ?
Selecciona todos los descendientes obj de la raz del documento y por tanto
selecciona todos los elementos obj que estn en el mismo documento que el nodo contextual.
? //lista/elemento Selecciona todos los elementos elemento que estn en el ? mismo documento que el nodo contextual y tengan un padre lista.
? .//obj ?
? .. Selecciona el padre del nodo contextual. ? ? ../@nombre Selecciona el atributo nombre del padre del nodo contextual. ?
? obj[@tipo="libro"] Selecciona todos los hijos obj del nodo contextual que ? tengan un atributo tipo con valor libro.
? obj[@tipo="libro"][5] Selecciona el quinto hijo obj del nodo contextual que ? tenga un atributo tipo con valor libro
? obj[5][@tipo="libro"] Selecciona el quinto hijo obj del nodo contextual si dicho ? hijo tiene un atributo tipo con valor libro. ? tema[titulo="Introduccion"] Selecciona los hijos tema del nodo contextual ? que tengan uno o ms hijos titulo con valor igual a Introduccin.
? capitulo[uno] Selecciona los hijos capitulo del nodo contextual que tengan uno o ? ms hijos uno.
Pgina 46
? trabajo [@nombre and @url] Selecciona todos los hijos trabajo del nodo ? contextual que tengan un atributo nombre y un atributo url.
La abreviatura ms importante es child:: que puede ser omitida en un paso de localizacin. A efectos prcticos, child es el eje por defecto. Por ejemplo, un camino de localizacin puesto/trabajo es abreviatura de child::puesto/child::trabajo.
Hay tambin una abreviatura para atributo, attribute:: puede abreviarse como @. Por ejemplo, un camino de localizacin puesto [@nombre="uno"] es abreviatura de child::puesto [attribute::nombre="uno"].
La abreviatura de /descendant-or-self::node()/ es //. Por ejemplo, //obj es abreviatura de /descendant-or-self::node()/child::obj y por tanto seleccionar cualquier elemento para en el documento. obj1//obj2 es abreviatura de child::obj1/descendant-or-self::node()/child::obj2 y por tanto seleccionar todos los descendientes obj2 de hijos obj1.
Abbreviations AbbreviatedAbsoluteLocationPath AbbreviatedRelativeLocationPath AbbreviatedStep ::= // RelativeLocationPath ::= RelativeLocationPath // Step ::= . | .. AbbreviatedAxisSpecifier ::= @?
Tabla 7 Abbreviations
Expresiones
La construccin sintctica bsica en XPath es la expresin. Las expresiones son evaluadas para producir un conjunto de nodos, un boleando, un nmero o una cadena.
Expresions Expr PrimaryExpr ::= OrExpr ::= VariableReference | ( Expr ) | Literal | Number | FunctionCall
Tabla 8 Expresions
Pgina 47
Funciones
Con XPath, tambin se pueden construir funciones, las cuales pueden recibir parmetros como argumentos (que pueden ser string, number o boolean).
Struts
Struts es un framework OpenSource cuyo objetivo es la implementacin de aplicaciones Web con Servlets y Jsp respetando el patrn arquitectnico Modelo Vista Controlador. [28, 54]
Un framework es la extensin de un lenguaje mediante una o ms jerarquas de clases que implementan una funcionalidad y que (opcionalmente) pueden ser extendidas.
De los componentes del Modelo Vista Controlador, struts ofrece el controlador ya implementado, permitiendo si fuese necesario su herencia para ampliarlo o modificarlo. Respecto al workflow de la aplicacin, este se puede programar desde un archivo XML, donde se indican las acciones que se ejecutarn sobre el modelo de objetos de negocio, y posteriormente se implementan dichas acciones basndose en clases predefinidas por el framework y siguiendo el patrn Facade. La generacin de interfaz se lleva a cabo mediante un conjunto de etiquetas (Tags) predefinidas por Struts cuyo objetivo es evitar el uso de Scriplets (los trozos de cdigo Java entre "<%" y "%>").
Pgina 48
Para configurar struts existe un fichero xml: struts-config.xml. Dicho fichero indica la descripcin de la Navegacin, es decir que links llevan a donde, y refleja: ? Las acciones que se deben ejecutar. Struts cumple el patrn command, donde cada ? accin viene representada por un comando independiente. ? Como se deben ejecutar dichas acciones. ? ? Quien debe ejecutarlas. Es decir que objeto del modelo debe lanzar dicha accin. ?
Java
La opcin de Java consiste nicamente en realizar la aplicacin procurando cumplir en la medida de lo posible el patrn Modelo Vista Controlador. [25,26]
Para ello se utilizaran una serie de clases (servlets) que realizan las funciones de controlador, cuyo objetivo es transmitir al modelo las operaciones invocadas por el usuario, y redireccionar a otras clases (servlets) que se encargan de generar una pgina de respuesta con la informacin que le ofrece el modelo.
Para realizar un sistema que cumpla al totalmente el patrn, sera necesario que la clase que acepta las peticiones fuese nica, y que esta realizase la distribucin de acciones en funcin del tipo de peticin. Pero para evitar que una clase englobe tantsima funcionalidad, se diversificar en varias, una por cada rea funcional.
Resolucin
Para la implementacin de este sistema se ha considerado que la mejor opcin es utilizar Java directamente sin la necesidad de utilizar struts principalmente porque el equipo de desarrollo no tiene experiencia con el framework por lo que sera una necesario su aprendizaje, conllevando una dilatacin del tiempo de desarrollo del sistema.
Otro de los motivos por los que se ha decidido utilizar Java, es para aprovechar el potencial ofrecido por xml, ya que dicha estructura se ha utilizado tanto para el almacenamiento de informacin como para la transmisin de esta a travs de las distintas capas del sistema. De modo que las vistas nicamente se limitan a obtener el xml asociado y su correspondiente xsl y a presentarlo, en lugar de utilizar un jsp, que sera la tecnologa por la que se optara en el caso de utilizar struts.
3 Anlisis y Diseo
Pgina 49
Pero esta no es la nica funcionalidad, ya que con el objetivo de facilitar en lo posible la bsqueda de empleo se le ofrecen al usuario otras utilidades: ? Buscar Empresas: Consiste en un procedimiento anlogo a la bsqueda de puestos de ? trabajo, de tal modo que el usuario desde el sistema puede realizar una bsqueda de las empresas que estn inscritas a los portales de empleo, pudiendo visualizar posteriormente los puestos de trabajo que dichas empresas oferten. ? Darse de Alta: Es un procedimiento que permite al usuario annimo (rol que el sistema ? asume por defecto) llegar a ser un usuario registrado, de tal modo que pueda acceder a muchas funcionalidades que nicamente estn disponibles para los usuarios registrados. Cuando el usuario se da de alta, el sistema almacena la informacin de dicho usuario, de tal modo que cuando vuelva a acceder al sistema, no es necesario volver a repetir el proceso de darse de alta. ? Validarse: Permite a los usuarios annimos cambiar su rol a usuario registrado, de tal ? modo que tenga acceso a las funcionalidades privadas. Para que un usuario pueda validarse es necesario que se haya dado de alta en el sistema anteriormente. ? Buscar Inteligentemente: Bsqueda en principio anloga a la genrica con la diferencia ? de que el resultado ofrecido al usuario se valida frente a los puestos de trabajo ya ofertados en das anteriores. Permitiendo que el sistema tenga conocimiento de si un puesto de trabajo es nuevo o no, y si lleva mucho tiempo publicado. Dando la capacidad de ignorar aquellas ofertas que no son interesantes y visualizar nicamente aquellas ofertas que han sido publicadas recientemente. Este tipo de bsqueda slo esta disponible para aquellos usuarios que se han validado anteriormente. ? Gestionar Perfil: Un usuario registrado tiene asociado una serie de servicios ofrecidos ? por el sistema, que se detallarn ms adelante. A la personalizacin de estos servicios se le denomina gestin de perfil. ? Recibir Alertas: Los usuarios registrados que lo hayan solicitado en su gestin de perfil, ? recibirn peridicamente los resultados de las bsquedas que deseen en su direccin
Pgina 50
de correo electrnico. Pudiendo realizar un seguimiento de los puestos de trabajos ofertados por varios portales del empleo nicamente con consultar su correo electrnico.
Anlisis Funcional
El anlisis funcional tiene como objetivo describir todas y cada una de las funcionalidades del sistema BuscaEmpleo. Para su realizacin se han utilizado diagramas de casos de uso de UML. Hay que destacar que por la complejidad del sistema y en bsqueda de la mayor claridad posible, se han creado varias vistas, de tal modo que se pueda profundizar en el nivel de detalle, dando inicialmente una imagen muy genrica y posteriormente descomponiendo cada una de las funcionalidades principales en subfuncionalidades.
Pero antes de identificar las funcionalidades del sistema se va a realizar un estudio de los portales de empleo que son utilizados por la aplicacin y las utilidades que estos brindan al usuario para realizar la bsqueda de empleo.
Otro objetivo de este anlisis era descubrir los portales que: ? Tenan ms aceptacin en los potenciales usuarios del sistema. Para lo cual se ? procedi a realizar un pequeo estudio sociolgico. ? Disponan de una mayor oferta de puestos de trabajo. ? ? Respetan una estructura ms homognea y simple en la presentacin de los resultados ? de bsqueda de cara a que su tratamiento sea lo ms sencillo posible. ? Se observ el cdigo que conformaban las respuestas de los portales a fin de constatar ? que realmente los portales seleccionados eran fcilmente tratables mediante mecanismos automticos.
Pgina 51
Inicialmente se observ cuales eran las funcionalidades ms comunes de los portales: ? Buscar puestos de trabajo. Funcionalidad que lgicamente compartan todos los ? portales ? Capacidad de realizar bsquedas con varios criterios (distintas tecnologas) ? simultneamente. Dicha capacidad no la compartan todos los portales, nicamente algunos de los estudiados, e incluso aquellos que permitan hacer bsquedas con varios criterios, se encontraban muy limitados, ya que nicamente permitan dos tecnologas simultneamente. ? Buscar empresas: Funcionalidad que slo aportaban algunos de los portales. ? ? Darse de alta en el Sistema: Lo daban todos los portales de empleo estudiados, con la ? diferencia de cada uno solicitaba unos datos distintos de registro.
Respecto a la informacin que ofrecan del puesto de trabajo: ? Nombre del puesto. ? ? URL con la descripcin del puesto. ? ? Empresa que oferta el puesto. ? ? Descripcin de la empresa. ? ? Provincia o Localidad en donde se oferta el trabajo. ? ? Fecha de la ltima publicacin, que en ocasiones no era ofrecida. ? ? Nmero de curriculums enviados a dicha oferta. Dato que no todas los portales ? mostraban. ? Porcentaje de curriculums ledos por la empresa. Tampoco era mostrado por todos los ? portales.
En cuanto a la informacin que presentaban aquellos portales que permitan bsquedas de empresas sobre estas: ? Nombre de la empresa. ? ? URL con la descripcin detallada de esta. ? ? Forma jurdica. Dato que no ofrecan todos los portales. ? ? Tipo de Industria. ? ? Provincia. ? ? URL con la Web de la Empresa. Dato que no ofrecan todos los portales. ?
El resultado de este anlisis es que los portales ms proclives a ser utilizados por el sistema seran: ? Infojobs. Es el portal de empleo lder en Espaa, con un alto prestigio y aceptacin ? entre el pblico objetivo que utilizaran el sistema BuscaEmpleo. En el mbito de las nuevas tecnologas, se considera el mejor portal de empleo. Y la razn fundamental: el nmero de ofertas disponibles. Ofertas de Empleo: 24.600
Pgina 52
El principal servicio que ofrece es el acercamiento de los usuarios que demandan un puesto de trabajo a las empresas que lo ofertan, pero tambin ofrecen informacin relacionada con la bsqueda de empleo, consejos, informacin legal, entrevistas... Url: http://www.infojobs.net ? Tecnoempleo. Portal de empleo especializado en informtica, telecomunicaciones y ? tecnologas con gran aceptacin pero con la diferencia de que su oferta es mucho menor que infojobs. Al igual que el anterior, su principal funcionalidad es permitir a los usuarios buscar puestos de trabajos que son ofertados en el portal, pero tambin ofrece noticias y artculos relacionados con la bsqueda de empleo. Url: http://www.tecnoempleo.com ? Monsters. Portal de empleo de mbito internacional con presencia en 22 pases. Es la ? mejor opcin para encontrar trabajo en Estados Unidos, Canad y buena parte de Europa (en todos esos pases hay, al menos, tantas ofertas como en Espaa). Son los lderes en el mundo en el sector de portales de empleo, y este es el principal motivo por el cual se aadi a BuscaEmpleo. Es una herramienta sencilla y rpida de usar, ofreciendo los resultados en varios formatos, de modo que nos permite escoger aquel que sea ms fcilmente tratable por el sistema. Ofrece puestos de trabajos de naturalezas muy diversas. No especializndose en los trabajos relacionados con las nuevas tecnologas. Url: http://www.monster.es ? TodoTrabajo. Portal que permite diversificar en cierto modo el pblico al cual estar ? destinado el sistema puesto que los anteriores portales principalmente ofrecen puestos de trabajos relacionados con las nuevas tecnologas (Informtica, Telecomunicaciones, Ingenieras) Url: http://www.todotrabajo.com
Y en cuanto a la informacin que se mostrara tanto de las bsquedas de empresa como de las bsquedas de puestos seran aquellos datos que compartiesen la gran mayora de los
Pgina 53
portales de tal modo que se le ofreciera al usuario una informacin ms homognea y estructurada.
Modelado de Requisitos
El principal objetivo del sistema es llegar a constituir una herramienta til, cmoda y eficiente que permita a un usuario encontrar un puesto de trabajo que se ajuste a su perfil profesional. Para ello se ha concluido que el sistema debe ser un portal web, de tal modo que sea accesible desde cualquier dispositivo conectado a la Word Wide Web.
Funcionalidades Principales
Pgina 54
Darse de Alta
Usuario Anonimo
Buscar Empresa
Buscar Puestos
Buscar Inteligentemente
Validarse
Recibir Alertas
Descripcin:
Buscar Puestos Usuario Annimo Mostrar al usuario, un listado de puestos de trabajo ofertados por las empresas que se encuentran disponibles en varios portales de empleo.
Descripcin:
El usuario especifica al sistema la tecnologa y la provincia de los puestos de trabajo en los cuales esta interesado y pulsa el botn buscar.
Darse de Alta Usuario Annimo Registra al usuario en el sistema, almacenando su informacin personal. Permitiendo acceso a funcionalidades para usuarios registrados.
Pgina 55
Permitiendo acceso a funcionalidades para usuarios registrados. Descripcin: El usuario nicamente debe dar su login y password, y si dicho login no ha sido escogido por ninguna persona anteriormente. Debe rellenar sus datos personales y pulsar el botn guardar.
Buscar Empresa Usuario Annimo Muestra al usuario el listado de empresas asociadas a la consulta realizada, pudiendo acceder a los puestos de trabajo ofertados por dichas empresas.
Descripcin:
El usuario introduce en el sistema un trmino y pulsa el botn buscar, obteniendo aquellas empresas cuyo nombre contenga dicho termino.
Validarse Usuario Registrado Permite al usuario annimo (rol por defecto) cambiar de rol a usuario registrado y poder acceder a las funcionalidades privadas del sistema.
Descripcin:
Para validarse, el usuario debe pulsar el botn Area Personal y posteriormente insertar en la aplicacin su usuario y password. Para que un usuario pueda validarse es necesario que se haya dado de alta en el sistema anteriormente.
Buscar Inteligentemente Usuario Registrado Permite al usuario realizar bsquedas de puestos de trabajo filtrando aquellos puestos han sido ofertados en das anteriores, de modo que pueda acceder a los puestos de trabajo realmente nuevos.
Descripcin:
El usuario especifica la tecnologa y la provincia de donde son los puestos ofertados as como un tercer parmetro indicando si desea los puestos de trabajo: ? Nuevos (no han sido publicados en das anteriores). ? ? Casi Nuevos (han sido publicados no ms de en dos ocasiones). ? ? Viejos (han sido publicados menos de 10 veces) ? ? Todos los puestos de trabajo. ?
Requisitos:
Caso de uso:
Gestionar Perfil
Pgina 56
Usuario Registrado Permite la personalizacin de los servicios ofrecidos por el sistema al usuario. El usuario tiene una serie de servicios asociados que puede configurar accediendo al rea personal, entre dichos requisitos: ? Modificacin de datos personales ? ? Configuracin de alertas asociados. ? ? Configuracin de los controles asociados. ? ? Gestin de los puestos de trabajos asociados. ?
Requisitos:
Recibir Alertas Usuario Registrado El usuario registrado recibe en su direccin de correo electrnico las bsquedas que desee.
Descripcin:
El usuario configura en el sistema una serie de bsquedas, para que los resultados de dichas consultas se le enven peridicamente a su direccin de correo personal. Permitindole realizar un seguimiento de los puestos de trabajos ofertados por varios portales del empleo nicamente con consultar su correo electrnico.
Requisitos:
1. 2.
Usuario se haya registrado en la aplicacin. Que la alerta haya sido creada y configurada anteriormente por el usuario.
Bsqueda de Puestos
En un sistema en el cual el objetivo principal es que los usuarios que interacten con l encuentren trabajo, el proceso ms importante ser aquel que permita realizar bsquedas de los puestos ofertados por las empresas, es decir, las bsquedas de puestos de trabajo, y por ello, dicho proceso se ha descompuesto ofreciendo mltiples funcionalidades.
Pgina 57
Usuario Anonimo
Buscar Puestos
Bsqueda Completa
Usuario Registrado
Descripcin
Buscar Puestos Usuario Annimo Permite al usuario realizar los puestos de trabajo de varios portales de empleo.
Descripcin:
Es la principal funcionalidad del sistema, consiste en que el usuario realiza una consulta contra el sistema y este realiza una bsqueda mltiple en varios portales de empleo, agrupando los resultados de todos los portales y ofrecindolos con el mismo formato y presentacin.
Bsqueda Unitaria Usuario Annimo Una consulta de los puestos de trabajos de una nica tecnologa y provincia. Las bsquedas de puestos de trabajos son consideradas unitarias, cuando la consulta tenga asociada una nica tecnologa, de tal modo que se implemente con una nica bsqueda a los portales de empleo.
Pgina 58
Bsqueda Simple Usuario Annimo Una consulta de los principales puestos de trabajos. Las consultas unitarias a su vez, pueden ser simples, es decir, los resultados de dichas bsquedas no contienen todos los puestos de trabajos asociados a dicha consulta, sino que nicamente se presentan las ofertas de empleo ms importantes, las que aparecen en la primera pgina de resultados
Bsqueda Completa Usuario Annimo Una consulta de todos los puestos de trabajos. Consiste en una bsqueda que presenta todos los puestos de trabajo asociados a una consulta, es decir muestra las ofertas de empleo de todas las pginas de resultados que los portales de empleo ofrecen como respuesta a la bsqueda.
Bsqueda Compuesta Usuario Annimo Una consulta de los puestos de trabajos asociados a varias tecnologas. Son consultas en las cuales el usuario indica que desea que le aparezcan resultados asociados a varias tecnologas. Este tipo de bsquedas es implementada con varias consultas a los portales de empleo
Requisitos:
Unir Resultados Usuario Annimo Presenta la unin de los resultados de varias consultas. Cuando un usuario realiza una bsqueda compuesta, puede indicar al sistema que los resultados que se le presenten sean la unin de cada una de las subconsultas que forman la bsqueda compuesta, tratando los resultados ofrecidos por los portales como conjuntos de elementos.
Caso de uso:
Interseccionar Resultados
Pgina 59
Usuario Annimo Presenta la interseccin de los resultados de varias consultas. Cuando un usuario realiza una bsqueda compuesta, puede indicar al sistema que desea que los resultados que se le presenten sean la interseccin de cada una de las subconsultas que forman la bsqueda compuesta, es decir, slo los puestos de trabajo que aparecen en las todas las subconsultas.
Buscar Inteligentemente Usuario Registrado Presenta los puestos de trabajo que son nuevos. Es un caso concreto de Buscar Puestos, que permite descartar aquellos puestos que no son nuevos o aquellos que han sido publicados en numerosas ocasiones. A su vez, este tipo de consultas hereda todos los subtipos de bsquedas que tienen las bsquedas normales. Es decir la bsqueda puede ser unitaria o compuesta, y en el caso de ser compuesta, puede estar formada por la unin o la interseccin de los resultados de cada una de las subconsultas
Pgina 60
Gestionar Alertas
Gestionar Controles
Visualizar Seguimiento
Borrar Puesto
Descripcin
Gestin de Alertas Usuario Registrado Configuracin de las alertas asociadas al usuario. Una alerta consiste en una bsqueda cuyo resultado se desea recibir por correo electrnico con una periodicidad determinada. El sistema permite al usuario agregar y eliminar alertas, as como indicar la periodicidad con la que desea recibir los correos electrnicos. El usuario puede elegir recibir los correos, diaria, semanal o mensualmente.
Caso de uso:
Gestin de Controles
Pgina 61
Usuario Registrado Configuracin de los controles asociados al usuario. Los controles son utilizados para que el usuario pueda establecer cual es la bsqueda que le interesa, permitiendo al sistema la realizacin de un seguimiento de dicha bsqueda. Estos seguimientos son utilizados por el buscador inteligente para determinar si un puesto de trabajo es interesante o no. El sistema permite al usuario agregar y eliminar sus controles.
Visualizacin de Controles. Usuario Registrado Realizar el seguimiento de los controles. El posible observar los puestos de trabajos publicados y que responden a la bsqueda de dicho control, y el nmero de ocasiones que dichos puestos han sido ofertados.
Gestin de puestos de trabajo Usuario Registrado Permite al usuario realizar un seguimiento de los puestos de trabajo que le interesan.
Descripcin:
Los usuarios del sistema tienen la posibilidad de almacenar en el sistema un listado de puestos de trabajo ofertados por las empresas, con el fin de poder llevar un control de estos de una forma rpida y sencilla.
Agregar Puestos Usuario Registrado Almacenar los puestos de trabajo interesantes. Los usuarios podrn agregar a su listado los puestos de trabajo que hayan sido publicados y consideren interesantes. Dichos puestos son almacenados por el sistema de modo que el usuario los puede consultar cuando desee.
Modificar Estado Puesto Usuario Registrado Realizar un seguimiento de los estados de los puestos interesantes Los puestos de trabajo almacenados en el sistema contienen un estado, que es utilizado para realizar el seguimiento del proceso de seleccin. El sistema permite al usuario modificar el estado de estos.
Pgina 62
Borrar Puestos Usuario Registrado Eliminar los puestos de trabajo del listado. Los usuarios pueden eliminar puestos de trabajo de su listado, cuando los haya descartado, por el tiempo en el cual no ha recibido ninguna noticia de ellos o porque simplemente ya no le interesen.
A continuacin se presenta un diagrama de estados que refleja los posibles estados de un puesto de trabajo:
Inicio Guardar Puesto Puesto Interesante Enviar CV Curriculum Enviado Realizar Entrevista Borrar Entrevista realizada Aceptar Puesto Aceptado Borrar
Borrar
Eliminado
Los puestos de trabajo, tienen una secuencia de estados lineal. Inicialmente un puesto de trabajo es almacenado porque el usuario se siente interesado por l, despus, entre todos los puestos que se ha almacenado, se le enviar el curriculun slo a aquellos que cumplen los requisitos mnimos establecidos por el usuario. El siguiente paso, si la empresa lo considera necesario, es realizar una entrevista. Y finalmente, si el usuario cumple todos los requisitos establecidos por la empresa, y a l le interesa, se incorpora a la empresa.
Pgina 63
Durante todo este proceso, el usuario puede descartar el puesto, ya sea porque no quiera mandar el curriculum, porque en la entrevista le descarten o porque la empresa no le llame.
Operaciones de Bsqueda
Como ya se ha comentado anteriormente, la principal funcionalidad del sistema es la bsqueda de un puesto de trabajo en mltiples portales de forma simultnea, y de cara a enriquecer dicha funcionalidad, se ha incluido la posibilidad de trabajar con los resultados de las bsquedas como si fuesen conjuntos de puestos de trabajos permitiendo al usuario realizar uniones o intersecciones sobre dichos conjuntos.
Porque permiten generar consultas ms amplias, en el caso de que los puestos de trabajo asociados a una nica tecnologa sean muy pocos, pudiendo aumentar el nmero de resultados de una bsqueda. Para ello se utiliza la unin de las consultas.
JAVA Barcelona
SQL Barcelona
XML Barcelona
? ?
Porque permiten generar consultas ms refinadas de tal modo que se consiguen filtrar aquellas ofertas de empleo que realmente son interesantes. Permitiendo al usuario establecer ms requisitos que deban cumplir los puestos de trabajo. Para ello se utiliza la interseccin de las consultas.
Pgina 64
JAVA Madrid
XML Madrid
SQL Madrid
Esta interseccin, pese a que existen portales que ofrecen dicha utilidad, se ha comprobado que nicamente permiten realizar bsquedas de dos tecnologas, de tal modo que gracias a BuscaEmpleo, es posible refinar ms la bsqueda que en los portales de empleo, propiedad necesaria, pues el sistema aporta una cantidad mayor de puestos de trabajo al usuario, que los portales convencionales.
Otro aspecto destacable del sistema de cara al refinamiento de las bsquedas, es que este da la posibilidad al usuario de especificar el municipio al cual pertenece el puesto de trabajo, con lo que es posible descartar aquellos puestos que no pertenezcan a un municipio determinado. Opcin que no aportaba ninguno de los portales de empleo con los que se ha tratado.
JAVA Madrid
Las Rozas
Pgina 65
Respecto al Mdulo realizado en JAVA, este se encuentra formado por los siguientes paquetes: ? repositorios: Donde se encuentran las clases que implementan el registro de la ? informacin, as como las consultas. ? nucleo: Clases que componen la capa lgica del negocio. ? o nucleo.comunes: Donde se encuentran clases con utilidades comunes a la capa lgica, como son el tratamiento de cadenas, el tratamiento de fechas, generacin de ficheros xml. o nucleo.buscador: Clases directamente relacionadas con las bsquedas en los portales, tanto de los puestos de trabajo como de las empresas registradas. o nucleo.avanzado: Donde se encuentran las clases que realizan operaciones complejas cuyo objetivo es el dotar de inteligencia al sistema. ? interfaz: Es un paquete ficticio ya que realmente no se ha creado, las clases que lo ? componen han quedado sin agrupar. Son todas aquellas clases que representan la capa de presentacin de la Informacin, los Servlets.
Patrones de diseo
Algunos patrones que se ha utilizado en este proyecto son:
Singleton
El problema se presenta cuando existe un objeto de una clase determinada que nicamente se puede crear en una ocasin, y que es utilizado por mltiples clases. De tal modo que cada clase debe utilizar siempre los mtodos de la misma instancia de la clase, sin poder crear nuevos objetos de dicha clase.
Pgina 66
Este patrn se caracteriza porque permite controlar el nmero de ocasiones que se instancia una clase determinada. Generalmente se utiliza para que slo exista una instancia, pero puede ser extendido fcilmente para generar varias, de tal modo que se puede utilizar para implementar un pool de conexiones de una base de datos. Para que una clase se ajuste a este patrn, simplemente hay que declarar privado el constructor, y crear un mtodo esttico que nos devuelva la nica instancia existente de la clase en el caso de que ya exista, y si no existe, la construya.
Command
La problemtica surge cuando se desea tratar a las acciones de manera independiente, de tal modo que estas se creen, se almacenen y cuando sea necesario, se ejecuten.
Este patrn se caracteriza porque permite tratar a las acciones como objetos, pues cada accin se representa mediante un objeto de una clase que a su vez implementa el interfaz Command. De tal modo que es posible almacenar dichas acciones y ejecutarlas, independientemente de lo que haga dicha accin.
El funcionamiento es el siguiente, el cliente crea una serie de comandos diferentes utilizando como argumento un objeto de la clase Receiver, y aadiendo posteriormente los comandos al Invoker, que lanza la ejecucin de estos cuando es necesario, provocando que el objeto Receiver realice la accin adecuada.
Pgina 67
Client
Invoker
Command execute()
Este patrn se ha utilizado en el sistema para la implementacin de las alertas y los controles de seguimiento y la actualizacin de la cach (Comentada ms adelante).
Strategy
La situacin que se da es la siguiente, es necesario realizar un desarrollo pero todava no est decidido como se va a implementar las clases que se deben utilizar, es decir se conoce la funcionalidad que estas deben dar, pero no su implementacin definitiva. O simplemente, se desea dejar abierta la posibilidad de cambiarla en un futuro.
El funcionamiento consiste en que se define un interfaz con las operaciones y los algoritmos que se deben implementar, y las aplicaciones que requieren de dichos algoritmos se apoyan en el interfaz. Esto permite que el algoritmo se pueda realizar de diversos modos.
Context contextInterface()
Strategy algorithmInterface()
ConcreteStrategyA algorithmInterface()
ConcreteStrategyB algorithmInterface()
ConcreteStrategyC algorithmInterface()
Pgina 68
Este patrn se ha utilizado en el sistema para la implementacin de los repositorios, el cual inicialmente se implement con vectores, que no aseguraban la persistencia de los datos, y posteriormente se hizo con ficheros xml.
Diseo
El sistema ha sido implementado siguiendo una metodologa Orientada a Objetos, y por lo tanto el diagrama que mejor modela el diseo de la aplicacin es el Diagrama de Clases.
La aplicacin como ya se ha comentado anteriormente est estructurado en tres capas. A continuacin se presenta el diseo de cada una de las capas que forman el sistema.
Capa de Presentacin
Donde se encuentran las clases relacionadas con el Interfaz de Usuario, que a su vez estn conectadas con su respectivo Gestor, el cual se encarga de transmitir las operaciones a la Capa Lgica de Negocio.
Pgina 69
GestorPuesto IUGestorPuesto getPuestos() addPuesto() borrarPuesto() actualizarPuesto() GestorControl IUGestorControl getControles() addControl() borrarControl() GestorAlerta IUGestorAlerta getAlertas() addAlerta() borrarAlerta()
Como se puede observar en el diagrama todos los Gestores de la capa de presentacin heredan del GestorUsuario, esto es debido a que todas las operaciones tienen una relacin directa con la clase Usuario, es decir se borrar una Alerta, es porque se le borra a un usuario, si se aade un control es porque se le asigne a un usuario. De modo que al extender dicho Gestor, los dems gestores heredan las operaciones implementadas en el GestorUsuario evitando tener cdigo duplicado en el sistema.
En la capa lgica de Negocio del sistema se identifican dos grupos de clases que aportan las principales funcionalidades del sistema.
Por un lado nos encontramos con las clases que se encargan de ejecutar las operaciones de gestin de recursos, es decir la creacin de usuarios, la agregacin de
Pgina 70
controles, alertas o controles, etc... Dichas clases modelan las acciones que los usuarios solicitan al sistema.
Alerta GestorPuesto getPuestos() addPuesto() borrarPuesto() actualizarPuesto() GestorAlerta getAlertas() addAlerta() borrarAlerta() GestorControl getControles() addControl() borrarControl() Control tecnologia provincia tecnologia provincia mail periodicidad actua() getTecnologia() getProvincia() getMail() Puesto empresa puesto urlpuesto urlempresa fecha
Y por otro lado se encuentran las clases que modelan las acciones peridicas que realiza la aplicacin. Dichas clases se ajustan al patrn command, de modo que cada tipo de operacin se implementa con una clase que hereda de Command, y por lo tanto se puede ejecutar de manera independiente cuando el LanzadorCommand lo considere necesario.
Pgina 71
Command actua()
ComandoAvisar
ComandoControlar
ComandoBuscar
GestorAvisos avisa()
Capa de Datos
Respecto al modelo de datos, este viene representado con RepositorioUsuario, clase que independiza la aplicacin de la Base de Datos.
RepositorioUsuario GestorUsuario ExisteUsuario() addUsuario() getUsuario() setUsuario() existeUsuario() addUsuario() getUsuario() setUsuario() getAlertas() addAlerta() addControl() getControles()
Pgina 72
informacin que va a ser almacenada, para ello se utiliza un diagrama Entidad-Relacin. Para la realizacin de dicho diagrama se seguirn los siguiente pasos: ?? Identificacin de las entidades y sus atributos, especificando cuales de estos son clave: Usuario: Login, Password, Nombre, Apellido, Mail Puesto: Nombre, Url, Empresa, UrlEmpresa, Fecha Control: Tecnologia, Provincia Alerta: Tecnologa, Provincia, Periodicidad Bsqueda: Tecnologa, Provincia, Accesos Empresa: Nombre, UrlEmpresa PuestoPublicado: Fecha_Hasta, Publicados ?? Identificacin de las Relaciones, y sus atributos: Almacena: Usuario x Puesto Controla: Usuario x Control Gestiona: Usuario x Alerta Formado: Control x Puesto (Publicados) Publica: Empresa x PuestoPublicado Es_Un: PuestoPublicado x Puesto ?? Una vez se han identificado las entidades y las relaciones, se procede a su representacin grfica:
Pgina 73
Login Password Nombre Apellido Mail Usuario 1 n n Tecnologia Localidad gestiona n Alerta Tecnologia Localidad Periodicidad
controla n
Control n
Publicados
almacena n
Puesto
Nombre URLEmpresa
Pgina 74
Para representar el comportamiento del sistema se van a utilizar diagramas de secuencia y diagramas de colaboracin de UML.
Bsqueda
: Usuario Anonimo
1: Buscar Puestos
5: Respuesta en HTML IUBuscador transforma el resultado en XML en una pgina HTML con XSL
: IUBuscador
2: buscar( )
4: Resultado en XML
: GestorConsultas
3: buscar( ) : Buscador El Buscador hace multiples petiones http concurrentes a los portales de empleo, unificando los resultados
Descripcin
El usuario se conecta al sistema mediante un navegador da una orden de bsqueda. El sistema en ese momento traduce la orden y genera una serie de peticiones utilizando el
Pgina 75
protocolo http a los diversos portales para obtener las pginas html con los resultados de dicha bsqueda.
Una vez obtenidas las pginas, son tratadas para producir unas pginas html bien estructuradas, y posteriormente utilizando expresiones Xpath, se saca la informacin necesaria y se transforma a un mismo formato en XML.
Finalmente se le da al usuario la informacin obtenida transformndola mediante plantillas XSL, para su correcta presentacin en el Navegador.
Proceso de Alta
: Usuario Anonimo
oIUGestorPersonal : IUGestorPersonal
oGestorUsuario : GestorUsuario
oRepositorioUsuario : RepositorioUsuario
oUsuario : Usuario
ExisteUsuario( ) existeUsuario( )
Formulario HTML
Descripcin
Pgina 76
El usuario inserta su identificador (Login) y su contrasea, y el sistema, apoyndose en el Repositorio de Usuarios, comprueba si dichos datos ya existen. Si no existen se le presenta en el navegador un formulario para que sea rellenado por el usuario. Una vez el sistema recibe dicha informacin, actualiza el Repositorio de Usuarios dichos datos (quedando registrada la informacin en un fichero XML). Posteriormente el usuario tiene la posibilidad de seguir en la parte privada del portal o desconectarse (Logout).
: Usuario Registrado
oServletPersonal : IUGestorPersonal
oGestorUsuario : GestorUsuario
oRepositorioUsuario : RepositorioUsuario
getUsuario( ) getUsuario( )
Descripcin
El usuario se valida contra el sistema, de tal modo que si no esta dado de alta, le presenta un mensaje de error. Y si se encuentra ya registrado en la aplicacin, obtiene del Repositorio de Usuarios un XML que es utilizado para mostrar al usuario el formulario de datos con la informacin que anteriormente registr. (Dicho proceso se apoya en una plantilla XSL)
Pgina 77
Una vez aparezca en el navegador el formulario con los datos personales, se proceder a la modificacin de estos para su posterior envo al servidor, el cual actualizar el Repositorio de Usuarios con la informacin nueva.
Gestin de alertas
: Usuario Registrado
oGestorAlerta : GestorAlerta
oRepositorioUsuario : RepositorioUsuario Se pide el usuario, y este ya incluye sus alertas. Luego el obj. IUGestorAlertas muestra lo necesario
getUsuario( )
getUsuario( )
Aadir alerta
addAlerta( )
addAlerta( )
Descripcin
El proceso de gestin de alertas de un usuario, es anlogo al de modificacin de los datos asociados a un usuario, simplemente se realiza la correspondiente peticin de las alertas del usuario (las cuales se obtienen mediante un fichero XML) y se le ofrecen por pantalla al usuario para que este pueda modificarlas. Finalmente dichos cambios quedan registrados en el servidor.
Pgina 78
Gestin de controles
oRepositorioUsuario : RepositorioUsuario Se pide el usuario, y este ya incluye sus controles. Luego el obj. IUGestorControles muestra lo necesario
getUsuario( )
Aadir control
addControl( )
addControl( )
Descripcin
El proceso de gestin de controles de un usuario, es anlogo al de modificacin de los datos asociados a un usuario, simplemente se realiza la correspondiente peticin de los controles del usuario (los cuales se obtienen mediante un fichero XML) y se le ofrecen por pantalla al usuario para que este pueda modificarlos. Finalmente dichos cambios quedan registrados en el servidor.
Pgina 79
Creacin de Comandos
oLanzadorComandos : LanzadorCommand
oGestorCache : GestorCache
agregarComandos( )
Se crean todos los comandos de la cache y se aaden al Lanzador. Estos comandos son objetos ComandoBuscar oComando : Command
new Command
addComando( )
: GestorAlerta
agregarComandos( )
oGestorControl : GestorControl
Figura 25 Diagrama de Secuencia - Proceso de Actualizacin de Controles, Generacin de Alertas y Actualizacin de Cach
Descripcin
Los procesos de actualizacin de controles, generacin de alertas y actualizacin de cach, se han unificado para cumplir el patrn command. Cada uno de los procesos esta formado por una serie de comandos unitarios e independientes. Es decir existen tres tipos de comandos, uno que realiza la actualizacin de un control en concreto, otro que genera el aviso correspondiente a una alerta y finalmente otro tipo de comando que realiza una bsqueda y actualiza la cach del sistema.
El funcionamiento es el siguiente, existe una clase esttica que es ejecutada peridicamente desde lnea de comandos gracias a la utilidad crontab disponible en linux. Esta
Pgina 80
clase construye los comandos necesarios en funcin de la hora en la que se ha lanzado (existen acciones que se deben ejecutar en varias ocasiones en el mismo da y otras que una nica vez) y despus ejecutan todos los comandos secuencialmente.
Actualizacin de Cache oLanzadorComandos : LanzadorCommand actua( ) buscar( ) oComandoBuscar : ComandoBuscar oBuscador : Buscador oCacheBusqueda : CacheBusqueda
agregarBusqueda( )
buscarTodo( )
agregarBusquedaTodo( )
Descripcin
La actualizacin de la memoria cach consiste en la creacin de un conjunto de comandos con las consultas ms frecuentes y su posterior ejecucin. De tal modo que cada comando realiza una peticin al Buscador y su correspondiente almacenamiento de los resultados en la Cach de Bsquedas (quedando los datos guardados en ficheros XML).
Pgina 81
Generacin de Alertas oLanzadorComandos : LanzadorCommand oComandoAvisar : ComandoAvisar oAlerta : Alerta oGestorAvisos : GestorAvisos oBuscador : Buscador oGestorCorreo : GestorCorreo
El lanzador avisa a todos los comandos y estos segun la periodicidad realiza los avisos de las alertas. actua( ) getPeriodicidad( )
mandarCorreo( )
Descripcin
La ejecucin de las alertas, consiste en una peticin al Buscador, el cual se conecta mediante http a los portales, unificando los formatos para posteriormente componer un listado de todos los puestos de trabajo disponibles. Finalmente, se enva un correo electrnico con el listado al usuario adecuado.
Pgina 82
Generacin de Controles oLanzadorComandos : LanzadorCommand oComandoControlar : ComandoControlar oControl : Control oBuscador : Buscador oRepositorioEmpresa : RepositorioEmpresa
buscarTodo( ) addPuestos( )
Descripcin
El proceso de generacin de controles se basa en que cada da se realizan todas las bsquedas establecidas en los controles de los usuarios (evitando la realizacin de dos bsquedas iguales) y se almacenan en el Repositorio de Empresas (quedando los datos registrados en un fichero XML).
Con el fin de optimizar en la medida de lo posible este proceso, se tomo como criterio que los comandos que se deban ejecutar antes, deberan ser los de actualizacin de la cach, de tal modo que los dems tipos de comandos que tambin requeran de bsquedas pudiesen aprovechar la funcionalidad ofrecida por la cach.
Pgina 83
oGestorControl : GestorControl
oRepositorioEmpresa : RepositorioEmpresa
getControles( ) getPuestos( ) Puestos en Xml Respuesta en Html Se transforma el xml en html utilizando una hoja de estilo xsl
Descripcin
El usuario realiza la peticin de visualizacin de un control, y el sistema accediendo al Repositorio de Empresas ofrece al usuario la informacin almacenada correspondiente a dicho control, utilizando una plantilla XSL, que trata el documento XML obtenido del Repositorio de Empresas para que la informacin este estructurada correctamente y sea visible desde el Navegador.
Pgina 84
oRepositorioUsuario : RepositorioUsuario
getUsuario( )
Se pide el usuario, y este ya incluye sus controles. Luego el obj. IUGestorControles muestra lo necesario
actualizarPuesto( )
actualizarPuesto( )
Descripcin
Cada usuario tiene la posibilidad de tener almacenados una serie de puestos de trabajo, con el fin de recordar cuando se realiz una solicitud de empleo, y a que empresa se hizo. Por lo tanto el sistema da la posibilidad al usuario de poder gestionar un listado de puestos de empleo.
Bsqueda Inteligente.
Pgina 85
1: Buscar Inteligentemente oIUBuscador : IUBuscador 7: Resultado en HTML : Usuario Registrado 6: Resultado en XML
El IUBuscador transforma el resultado en XML a una pgina HTML utilizando una hoja de estilo XSL
2: buscarInteligente( )
El Gestor de Consulta completa la busqueda realizada con los controles establecidos a fin de poder obtener ms criterios de busqueda
oGestorConsultas : GestorConsultas
obuscador : Buscador
oGestorControles : GestorControl
oRepositorioEmpresa : RepositorioEmpresa
Descripcin
La bsqueda Inteligente consiste en una bsqueda que es capaz de eliminar aquellos puestos de trabajos que se consideran fantasmas, es decir puestos de trabajo que llevan mucho tiempo publicados en los portales de empleo.
El usuario una vez se ha validado contra el sistema, accede a la opcin de bsqueda inteligente y rellenando el formulario de bsqueda, realiza la peticin. El sistema traduce dicha peticin, y utilizando WEBL, genera una serie de peticiones http concurrentes a fin de obtener las pginas de resultados de los diversos portales de empleo.
Una vez se han obtenido, se unifican los formatos y contenidos dando lugar a una informacin con una estructura correcta (en XML) con los puestos ofertados por los portales.
Cuando ya se dispone de la informacin en un formato adecuado, se valida siguiendo unos criterios contra los controles y los puestos de trabajo disponibles en das anteriores determinando que empleos se le mostrarn al usuario.
Bsqueda de Empresas.
Proceso anlogo al de la bsqueda de puestos de trabajo, en el cual el usuario realiza una peticin que mediante WebL se transmite a los portales, obteniendo de estos ficheros xml
Pgina 86
que se traducen con las correspondientes hojas de estilos xsl. Se diferencia en que los scripts en WebL no son los mismos y que se extrae una informacin distinta de las pginas html de resultados.
Pgina 87
4 Implementacin
Definicin del Interfaz
Con el objetivo de conseguir una aplicacin con una imagen moderna cuyo aprendizaje resulte sencillo e intuitivo y buscando que a los usuarios habituados a navegar por Internet les resulte familiar, se realiz un estudio de los de las interfaces de diversos portales disponibles en Internet, con el fin de descubrir las tendencias relativas al diseo de aplicaciones Web.
Una vez, realizado dicho estudio se pas a agrupar todas las funcionalidades segn un orden lgico, con el objetivo de presentrselas al usuario siguiendo dicha lgica, de modo que le resulte sencillo encontrar las distintas funcionalidades.
Por otro lado el diseo del interfaz se orient a que el usuario dispusiera en todo momento de acceso a las funcionalidades ms importante, como es el caso de la bsqueda de puestos de trabajo, o de empresas.
El interfaz cumple una estructura muy habitual en las aplicaciones disponibles en la WWW, en la cual aparecen principalmente tres reas: ? rea de Cabecera: Destinada principalmente a dar imagen al portal, ya que no tienen ? en ninguna funcionalidad, salvo la de ofrecer al usuario la sensacin de que est en todo momento en el mismo portal. ? rea de Funcionalidades Principales: Su finalidad es que el usuario en todo momento ? tenga acceso a las funcionalidades principales del sistema, durante toda la interaccin con la aplicacin. En dicho rea nos encontraremos distintas opciones en funcin del rol del usuario: o Si el usuario es annimo: ? Bsqueda de Puestos de Trabajo. ? ? Bsqueda de Empresas. ? ? Acceso al rea personal, es decir, validarse como usuario registrado ? ? Darse de alta en la aplicacin. ? o Si el usuario ya se encuentra registrado y se ha validado: ? Bsqueda de Puestos de Trabajo ? ? Bsqueda Inteligente de Puestos de Trabajo ? ? Bsqueda de Empresas. ? ? Posibilidad de salir del sistema, es decir, pasar a ser usuario annimo. ? ? rea de Trabajo Principal: Cuyo objetivo es presentar la informacin al usuario, tanto ? de consultas como personal (configuracin de su perfil).
Pgina 88
REA DE CABECERA
En el rea de trabajo principal, a su vez se puede encontrar con la siguiente estructura en pestaa, de modo que el usuario pueda navegar por el sistema pulsando las distintas opciones disponibles en el margen superior del rea de trabajo, y presentando la informacin de las distintas opciones en el rea de Trabajo Secundara.
Opcin 1
Opcin 2
Opcin 3
Opcin 4
Las opciones que se encuentran en el rea de Trabajo Principal sern: ? Datos Personales. ? ? Alertas. ? ? Controles. ? ? Puestos. ?
Tecnologas aplicadas
Para su implementacin se han utilizado los siguientes mdulos: ? JSDK: Necesario para la integracin de la aplicacin con la Web ? ? Xalan: Permite el tratamiento de ficheros XML ?
Pgina 89
? Jtidy: Mdulo en Java que permite analizar pginas HTML as como imprimir de ? forma elegante documentos DOM. ? WebL. ?
JSDK
Para la implementacin de la capa de presentacin se ha utilizado JSDK, en concreto se han utilizado servlets. Estos se encargan de recibir las peticiones de los usuarios a travs del protocolo HTTP, y transmitirlas correctamente al sistema. [24, 50, 51]
Tambin se encargan de traducir las respuestas del sistema en forma de ficheros XML al usuario como cdigo HTML utilizando hojas de estilo XSL.
Se pueden identificar dos tipos de servlets dentro del sistema. ? Servlets que muestran informacin al usuario. Se limitan a obtener la informacin en ? XML resultante de una peticin al sistema y traducirla a HTML. Estos servlets son los que aportan la funcionalidad de navegacin a travs del sistema.
A continuacin se listan estos servlets: ? MostrarInformacion.java ? ? MostrarMenu.java ? ? MostrarArea.java ? ? MostrarPersonal.java ? ? MostrarAlertas.java ? ? MostrarControles.java ? ? MostrarPuestos.java ? ? MostrarControl.java ? ? MostrarEmpresa.java ? ? MostrarBusquedaInt.java ? ? MostrarMensaje.java ? ? Servlets que realizan operaciones con el sistema. Se encargar de interpretar las ? peticiones y transmitirlas al correspondiente gestor de la lgica de negocio de la aplicacin, para que ejecute la orden, y posteriormente se redireccion la peticin a uno de los servlets anteriores para mostrar al usuario la respuesta de la operacin.
Pgina 90
Xalan
Es un mdulo realizado en Java que ofrece un lenguaje XSLT (Transformations XSL) y un Lenguaje de Direccionamiento de XML (XPath), herramientas muy tiles para el tratamiento de ficheros XML. [34, 36, 37]
XSLT es un lenguaje que permite componer hojas de estilos XSL (Extensible Stylesheet Language), las cuales contienen instrucciones para realizar transformaciones en documentos XML, pudiendo cambiar el formato de estos, de tal modo que es posible traducir un fichero XML a una pgina HTML o a otro fichero XML.
Por defecto Xalan utiliza como analizador de XML, Xerces, pero puede ser configurado para utilizar otros analizadores de XML. Xerces, permite analizar un documento XML y crear un objeto Document, con la estructura de dicho documento y respetando el Modelo de Objetos del Documento (DOM). Este objeto, cumplir las especificaciones de Nivel 2 del Modelo de Objetos del Documento (Document Object Model (DOM) Level 2 Core Specification). [12]
Dichas especificaciones consisten en un plataforma y una API que permite que programas y scripts accedan dinmicamente y actualicen el contenido y la estructura de los documentos. La especificacin tambin incluye unas interfaces especializada orientadas a documentos XML.
El analizador Xerces, funciona extraer un objeto Document de un fichero XML como se indica a continuacin:
Pgina 91
Una ventaja de Xalan, es que permite su fcil integracin con los servlets, de tal modo que es posible generar la pgina de respuesta del servlet como el resultado de traducir un fichero XML con la ayuda de una hoja de estilo XSL.
Por ejemplo, se utiliza el mdulo de Xalan al presentar el resultado de hacer una bsqueda, que es un objeto de tipo Document (XML), de tal modo que para dicha presentacin se le aplica una hoja de estilo determinada (puestos.xsl).
TransformerFactory tFactory = TransformerFactory.newInstance(); FileInputStream entrada = new FileInputStream(Constantes.pathXSL+"trabajos.xsl"); Source xslSource = new StreamSource(fichero); Transformer transformer = tFactory.newTransformer(xslSource); ... PrintWriter out = response.getWriter(); // Realizamos la bsqueda Document resultado = buscador.buscarTodo(tecnologia,provincia); // Finalmente transformamos el resultado (document) aplicndole el xml try{ Source xmlSource = new DOMSource(resultado); // Perform the transformation, sending the output to the response. transformer.transform(xmlSource, new StreamResult(out)); } catch (Exception e) { out.write(e.getMessage()); e.printStackTrace(out); } out.close();
XPath es un lenguaje que permite crear expresiones para direccionar los ficheros XML ofreciendo gran flexibilidad pues permiten trabajar con un documento XML utilizando su estructura arbrea para buscar informacin en sus nodos, de tal modo se accede directamente a estos.
Por ejemplo, dado este fichero XM L con los puestos de trabajo obtenidos en una bsqueda, las expresiones XPath indexan la siguiente informacin.
Pgina 92
<?xml version='1.0' encoding='iso-8859-1'?> <usuarios> <usuario apellidos="Moli" login="Jorge" mail="jmoli@ya.com" nombre="Jorge" password="XXXX"> <control provincia="32" tecnologia="JAVA"></control> <alerta destino="jmoli@ya.com" periodicidad="1" provincia="32" tecnologia="JAVA"></alerta> <alerta destino="jmoli@ya.com" periodicidad="1" provincia="32" tecnologia="SQL"></alerta> <puesto empresa="CM CAPITAL MARKETS" fecha="16/1/2004" nombre="Informticos"></puesto> <puesto empresa="Stratesys Consulting ADP&M" fecha="16/1/2004" nombre="Programador J2EE/UML"></puesto> <puesto empresa="Intesys" fecha="16/1/2004" nombre="Jefe de Proyecto entorno JAVA"></puesto> </usuario> </usuarios>
? /usuarios/usuario Esta expresin devuelve todos los nodos usuario. ? ? /usuarios/usuario[@login=Jorge] Todos los nodos usuario cuyo atributo login es igual ? a Jorge. ? /usuarios/usuario[@login=Jorge]/alerta Devuelve todas las alerta del usuario con ? atributo login igual a Jorge. ? //control Se obtienen todos los controles del rbol. ?
Jtidy
Mdulo en Java que permite analizar pginas HTML as como presentar de forma elegante documentos DOM [39, 40]. En este sistema se ha utilizado para limpiar/corregir las pginas obtenidas por los portales de empleo, ya que estas no tienen una estructura correcta.
La estructuracin/limpieza de la pgina del portal devuelve un documento DOM. Dicho documento ya es susceptible de ser tratado automticamente y permite la obtencin de la informacin de los puestos de trabajo publicados por medio de expresiones XPath.
Este proceso de limpieza junto con el de interaccin con los portales de empleo son los ms lentos del sistema, por lo que se ha procurado minimizar en todo lo posible el nmero de ocasiones en las que se utiliza.
Pgina 93
? Directivas de Proceso ?
-indent -omit
-wrap 72 Limita el texto en columnas de 72 caracteres -upper -clean -errors -quiet -xml -asxml Pone en maysculas las etiquetas Remplaza etiquetas por CSS, por ejemplo <CENTER> Muestra solo los errores Elimina la salida no importante Se utiliza si la entrada es un fichero XML bien formado Convierte el HTML a XML bien formado
? Codificacin de caracteres ?
Usa ASCII como salida y Latin-1 como entrada Usa Latin-1 como entrada y salida Usa ISO2022 como entrada y salida Usa UTF-8 como entrada y salida
? Manipulacin de ficheros ?
-config <fichero> Establece el fichero de configuracin -f <fichero> -modify Escribe los errores en <fichero> Modifica los fichero originales
Todos estos parmetros y alguno ms se puede especificar en un fichero de configuracin, para la aplicacin se ha utilizado Config.txt
WebL
Se ha utilizado WebL para la interaccin del sistema con los dems portales de empleo, porque es la tecnologa que nos permita un desarrollo ms rpido.
La utilidad que se le ha dado ha sido el acceso a los portales de empleo para rellenar los formularios de bsquedas y obtener las pginas con los resultados de dichas bsquedas
Soporte de la Informacin.
Pgina 94
Como ya se ha comentado anteriormente el soporte fsico en el cual se almacenar la informacin ser en ficheros xml [20]. En concreto se han utilizado varios tipos distintos de ficheros xml, uno para cada concepto principal modelo entidad relacin: ? Usuario. Engloba sus alertas, controles y puestos ? ? Cach. Donde se almacena la informacin asociada a la memoria cach. ? ? Empresas. Donde se guardan las empresas y los puestos que dichas empresas ? publican. ? Bsquedas. Permite llevar un control de las bsquedas ms frecuentes. ?
DTD de usuario.
<!ELEMENT usuarios (usuario*) > <!ELEMENT usuario (control|alerta|puesto)* > <!ELEMENT usuario EMPTY> <!ATTLIST usuario nombre CDATA #REQUIRED apellidos CDATA #REQUIRED mail CDATA #REQUIRED login CDATA #REQUIRED password CDATA #REQUIRED> <!ELEMENT control EMPTY> <!ATTLIST control tecnologia CDATA #REQUIRED provincia CDATA #REQUIRED> <!ELEMENT alerta EMPTY> <!ATTLIST alerta tecnologia CDATA #REQUIRED provincia CDATA #REQUIRED destino CDATA #REQUIRED periodicidad CDATA #REQUIRED> <!ELEMENT puesto EMPTY> <!ATTLIST puesto nombre CDATA #REQUIRED empresa CDATA #REQUIRED fecha CDATA #REQUIRED estado CDATA #REQUIRED>
Cdigo Fuente 4 DTD de usuarios
Pgina 95
DTD de Cach
<!ELEMENT todo(puestos)> <!ATTLIST todo proyect CDATA #REQUIRED fecha CDATA #REQUIRED> <!ELEMENT puestos (puesto*)> <!ELEMENT puesto (#PCDATA)> <!ATTLIST puesto urlPuesto CDATA #REQUIRED urlEmpresa CDATA #REQUIRED nombreEmpresa CDATA #REQUIRED localidad CDATA #REQUIRED fecha CDATA #REQUIRED>
DTD de Empresas
<!ELEMENT empresas (empresa*)> <!ELEMENT empresa (puesto+)> <!ATTLIST empresa nombre CDATA #REQUIRED urlEmpresa CDATA #REQUIRED > <!ELEMENT puesto EMPTY> <!ATTLIST puesto nombre CDATA #REQUIRED urlPuesto CDATA #REQUIRED localidad CDATA #REQUIRED fechaDesde CDATA #REQUIRED fechaHasta CDATA #REQUIRED publicados CDATA #REQUIRED >
Cdigo Fuente 6 DTD de Empresas
DTD de Bsquedas
<!ELEMENT busquedas (busqueda*)> <!ELEMENT busqueda EMPTY> <!ATTLIST busqueda tecnologia CDATA #REQUIRED provincia CDATA #REQUIRED
Pgina 96
Pero pese a que slo haya cuatro tipos de ficheros xml, en el sistema existen mltiples ficheros asociados a dichos tipos dtd, esta decisin se tomo de cara a facilitar el tratamiento de los datos, de modo que en lugar de realizar un fichero xml contenga todos las empresas y los puestos de trabajos correspondientes a los controles existentes en el sistema, se tiene un fichero xml para cada uno de los controles. Consiguiendo un sistema ms fiable, con la informacin ms diversificada.
Al igual que con las empresas, para la cach, tambin existen diversos ficheros xml para cada una de las bsquedas ms habituales del sistema.
De todos los ficheros xml, el ms importante es el fichero de usuarios, puesto que en l almacenamos la informacin de los usuarios necesaria para que estos se puedan validar y tener configurado su perfil, y el de empresas, que permite al sistema almacenar un historial de las bsquedas establecidas por los controles.
<?xml versin='1.0' encoding='iso-8859-1'?> <usuarios> <usuario apellidos="Molinero" login="Jorge" mail="jmoli@ya.com" nombre="Jorge password="Jorge"> <control provincia="32" tecnologia="JAVA"/> <control provincia="32" tecnologia="SQL"/> <control provincia="32" tecnologia="XML"/> <alerta destino="jmoli@ya.com" periodicidad="1" provincia="32" tecnologia="JAVA"/> <puesto empresa="Indusoft" estado="1" fecha="01/05/2004" nombre="Analista Programador Java, Struts"/> <puesto empresa="Raw Steel Group" estado="1" fecha="27/03/2004" nombre="T.S. WINDOWS/BB.DD"/> <puesto empresa="PROFESSIONAL STAFF ETT" estado="1" fecha="24/04/2004" nombre="PROGRAMADOR WEB ESPECIALISTA .NET/XML"/> <puesto empresa="Stratesys Consulting ADP&M" estado="0" fecha="01/05/2004" nombre="Programador J2EE"/ > </usuario> <usuario apellidos="Molinero" login="Nacho" mail="imoli@ya.com" nombre="Ignacio password="Ignacio">
Pgina 97
<control provincia="32" tecnologia="VISUAL"/> <control provincia="32" tecnologia="BD"/> <alerta destino="imoli@ya.com" periodicidad="1" provincia="32" tecnologia="JAVA"/> </usuario> </usuarios>
Cdigo Fuente 8 Fichero XML de ejemplo de usuarios
<?xml version='1.0' encoding='iso-8859-1'?> <empresas> <empresa nombre="Psicotec" urlEmpresa="http://www.infojobs.net/gen_multisite.ij/iCodigoPerfil=968651524526522102730125557182"> <puesto nombre="ANALISTA CRM / BUSINESS INTELLIGENCE" urlPuesto="http://www.infojobs.net/visualizar_oferta.ij/of_codigo=871748524531 306400594555653794&buscador=1&palabra=JAVA" localidad="MADRID" fechaDesde="01/07/2004" fechaHasta="04/07/2004" publicados="5" /> </empresa> <empresa nombre="Garben Proyectos Informticos" urlEmpresa="http://www.infojobs.net/gen_multisite.ij/iCodigoPerfil=96295352452620255 0343215545583"> <puesto nombre="WEBSPHERE, JAVA - Analistas y APs" urlPuesto="http://www.infojobs.net/visualizar_oferta.ij/of_codigo=81695352453120 6040944245539990&buscador=1&palabra=JAVA" localidad="Madrid" fechaDesde="01/07/2004" fechaHasta="01/07/2004" publicados="2"/> <puesto nombre="WEBSPHERE, JAVA - Analistas, APs y Programadores" urlPuesto="http://www.infojobs.net/visualizar_oferta.ij/of_codigo =881453424531007910274615052845&buscador=1&palabra=JAVA" localidad="Madrid" fechaDesde="02/07/2004" fechaHasta="02/07/2004" publicados="1"/> <puesto nombre="JAVA, Analistas Programadores y Programadores" urlPuesto="http://www.infojobs.net/visualizar_oferta.ij/of_codigo=815 251524531206440114255752158&buscador=1&palabra=JAVA" localidad="Madrid" fechaDesde="01/07/2004" fechaHasta="04/07/2004" publicados="5"/> </empresa> ...... </empresas>
Cdigo Fuente 9 Fichero XML de ejemplo de empresas
Pgina 98
La cach consiste en el almacenamiento en un fichero fsico de los puestos de trabajos ofertados, con la misma estructura con la que trabaja la aplicacin internamente, con el objetivo de agilizar en la medida de lo posible el proceso de bsqueda. A continuacin se presenta un fichero de ejemplo de la cach.
<?xml version='1.0' encoding='iso-8859-1'?> <todo project="Puestos de Trabajo" fecha="23/21/2003"> <puestos> <puesto urlPuesto="http://www.infojobs.net/visualizar_oferta.ij/of_codigo=867550524531206691604205155540 &buscador=1&palabra=JAVA" urlEmpresa="http://www.infojobs.net/gen_multisite.ij/iCodigoPerfil=962750524526202250743215554861" nombreEmpresa="EXES" localidad="Madrid" fecha="07/07/2004"> Desarrollador en JAVA Y J2EE </puesto> <puesto urlPuesto="http://www.infojobs.net/visualizar_oferta.ij/of_codigo=932455524531670112940375751810 &buscador=1&palabra=JAVA" urlEmpresa="http://www.infojobs.net/gen_multisite.ij/iCodigoPerfil=961450424526202850173215054762" nombreEmpresa="Sermicro" localidad="Madrid" fecha="07/07/2004"> AP JAVA (BBDD ORACLE)</puesto> <puesto urlPuesto="http://www.infojobs.net/visualizar_oferta.ij/of_codigo=927755524531007051864234950941 &buscador=1&palabra=JAVA" urlEmpresa="http://www.infojobs.net/gen_multisite.ij/iCodigoPerfil=966249524526202750773214854693" nombreEmpresa="INSA (Zona Madrid)" localidad="Madrid" fecha="07/07/2004"> Programadores/as Java Websphere </puesto> ... </puestos> </todo>
Cdigo Fuente 10 Fichero XML de ejemplo de cach
Pero estos ficheros de cach no se generan de forma aleatoria, sino que nicamente se precalculan las bsquedas ms frecuentes, las cuales se almacenan en un fichero anlogo al siguiente:
Pgina 99
<busqueda accesos="34" provincia="32" tecnologia="JAVA"></busqueda> <busqueda accesos="5" provincia="32" tecnologia="STRUTS"></busqueda> <busqueda accesos="1" provincia="35" tecnologia="EJB"></busqueda> <busqueda accesos="1" provincia="35" tecnologia="XML"></busqueda> <busqueda accesos="2" provincia="32" tecnologia="ORACLE"></busqueda> </busquedas>
Accesibilidad.
Actualmente las nuevas tecnologas de la informacin y la comunicacin, se hacen imprescindibles para alcanzar el grado de bienestar deseado. Existen miles de millones de pginas que se encuentran a disposicin de cualquier persona con el nico requisito de estar conectado a la Word Wide Web. Adems, ha desaparecido la restriccin de que dicha persona deba estar conectada por medio de un ordenador personal con un navegador, ya que hoy en da existen mltiples dispositivos que permiten el acceso a Internet como telfonos mviles, PDAs, videoconsolas con acceso a Internet, etc. [9, 44]
Esto hace que aparezcan dos problemas muy importantes asociados a los recursos disponibles en la WWW, ya que estos no se encuentran correctamente estructurados y homogenizados.
El primer problema es que no todo el mundo tiene las mismas facultades fsicas e intelectuales. Existen grupos de personas que tienen algn tipo de limitacin funcional que les limita y no les permite acceder de la misma manera a Internet. Personas de baja o nula visin, que tienen limitada la funcionalidad de sus manos, que oyen poco o que tienen un nivel de comprensin reducido, son quienes forman este colectivo. Para ellos se han creado instrumentos y herramientas que adaptan el ordenador a su forma de operar y se estructuran los contenidos de manera que los puedan manejar. Y las pginas Web, no pueden quedar al margen.
El World Wide Web Consortium (W3C) [8], a travs de un grupo de trabajo conocido como WAI (Web Accessibility Iniciative) [9], ha normalizado el procedimiento de diseo de las pginas Web para que sean accesibles. Todo este procedimiento ha quedado plasmado en una serie de recomendaciones en forma de Pautas.
Pgina 100
Las Pautas de Accesibilidad al Contenido en la Web 1.0, son una especificacin del W3C que proporciona una gua sobre la accesibilidad de los sitios de la Web para las personas con discapacidades.
El segundo problema es que no todos los dispositivos que permiten el acceso a la WWW interpretan del mismo modo la informacin contenida en ella, dando lugar a que las pginas Web no sea posible visualizarlas desde gran cantidad de dispositivos o incluso desde navegadores antiguos.
Del mismo modo que el W3C se ha responsabilizado de la accesibilidad para discapacitados, tambin ha creado un estndar XHTML, que segn W3C combina "la familiaridad de HTML con la potencia de XML".
Considerando que XHTML 1.0 es compatible con HTML 4, la mayor parte de los actuales lectores cuentan ya con soporte para el nuevo estndar. Un ejemplo es la propia pgina de W3C, que est escrita en XHTML, y que puede ser visualizada sin problemas con las versiones ms recientes de los lectores Navigator e Internet Explorer.
La propia entidad describe XHTML como "un puente a la WWW del futuro", en el que se procur especialmente disear un lenguaje de ltima generacin para los documentos de la Web, sin dejar obsoleto lo que ya ha sido publicado en ese medio
Por todo esto el Interfaz del portal BuscaEmpleo se ha diseado cumpliendo los criterios de accesibilidad de prioridad 1 y 2 (Ver Anexo, Mapa de puntos de Verificacin), logrando un nivel de adecuacin Doble A (AA). Y todas las pginas del sistema han sido escritas en XHTML Bsico, de tal modo que sean accesibles por la mayor parte de clientes Web para que pueda ser consultado desde todos los dispositivos posibles.
Respecto a la representacin grfica del portal se han utilizado hojas de estilos (CSS) para obtener un sistema visualmente agradable permitiendo a su vez fcil modificacin posterior, si fuese necesario.
Reduccin de Latencia
Uno de los problemas ms importantes que se presentan en la implementacin de este sistema es la gran latencia de las operaciones, los tiempos de espera son muy altos para tratarse de una aplicacin Web, lo que puede derivarse en que el usuario que interacta con la aplicacin llegue a pensar que la conexin se ha perdido y vuelva a realizar la misma peticin,
Pgina 101
o simplemente que deje de utilizar el sistema debido a que no est dispuesto a esperar tanto tiempo para recibir la respuesta.
Ciertamente, los tiempos de consulta, son altos, pero esta latencia est completamente justificada, pues el proceso de consulta es complejo y no depende nicamente de la eficiencia del sistema. Ya que tambin est asociado a la disponibilidad de los portales de empleo con los que se interacta. De modo que si los portales tardan en servir su respuesta, dichos tiempos se ven reflejados en la latencia de respuesta del sistema.
Para corregir este problema se han tomado mltiples iniciativas: ? Interaccin concurrente con portales de empleo. ? ? Limitacin del tiempo de espera para la obtencin de la respuesta del portal ? ? Implementacin del proceso de consulta lo ms eficiente posible. ? ? Creacin de una cach de consultas. ?
Para la interaccin del sistema con los portales de empleo, se han utilizado hilos de ejecucin, de tal modo que cada hilo (Thread) hace una consulta a un portal de empleo consiguiendo solapar los tiempos de espera de respuesta de los portales.
Para medir esta reduccin, se han utilizado bsquedas completas (todos los resultados) de provincias en la cual hay muchos puestos de trabajo, y se ha desactivado el mdulo de memoria cach.
Bsqueda
Reduccin
82 % 80 % 78 %
Con este procedimiento se consigui una reduccin del tiempo espera de aproximadamente un 20%.
Otra decisin que se tomo para la implementacin del sistema es que era ms importante la reduccin del tiempo de espera que el hecho de que la respuesta del portal fuese
Pgina 102
completa. Esta decisin se apoy en la idea de que los usuarios probablemente valoren ms la fluidez de la interaccin con el sistema que la completitud de las respuestas de este. Pese a todo esto, los tiempos limite de espera de respuesta son lo suficientemente altos como para obtener la respuesta de todos los portales, de tal modo que nicamente se desestimar la consulta de un portal cuando este tenga algn problema y tarde ms de lo habitual en responder.
Respecto a esta iniciativa simplemente hay que destacar que se ha evitado en todo lo posible realizar operaciones costosas en tiempo, y minimizando el nmero de comprobaciones y chequeos.
Otra lnea de actuacin llevada a cabo ha sido evitar en todo lo posible el acceso a disco, es decir, trabajar mayormente con informacin contenida en la memoria del servidor.
Una vez se ha utilizado el sistema, rpidamente se percibe que la gran mayora de las bsquedas realizadas son siempre las mismas, en unas provincias muy determinadas donde hay mucho ms trabajo como puede ser Madrid, Barcelona, Bilbao, etc. y de unas tecnologas concretas que son mucho ms demandadas como puede ser JAVA, ORACLE, VISUAL, etc..
Por este motivo se decidi realizar una pseudo-cach capaz de anticiparse a las peticiones de los usuarios, precalculando las bsquedas frecuentes de tal modo que cuando un usuario vaya a realizar una consulta, la respuesta ya haya sido calculada y no tenga que esperar, pues se coge directamente de la cach.
Este mecanismo de cach, ha resultado ser muy eficiente reduciendo los tiempos de bsqueda de manera muy considerable.
A continuacin se realiza un clculo de la estimacin de tiempos de las bsquedas, todas ellas simples (de la primera pgina de resultados).
Caso 1
Probabilidad de que una bsqueda unitaria, es decir de una tecnologa en concreto se encuentre en cach 50%
Pgina 103
Tipo de bsqueda
3 6 9
Caso 2
Tipo de bsqueda
3 6 9
Pgina 104
Para ello se ha buscado que la aplicacin sea todo lo parametrizable posible. Existen unos ficheros situados en la carpeta ini con los cuales se pueden agregar ms portales de empleo. ? provincias.ini Indica los portales con los que trata el sistema y contiene una serie de ? cdigos asociados a cada portal, para poder realizar las peticiones http con los argumentos correctos. ? portal.ini Cada portal tiene un fichero de configuracin en la cual aparece entre otros ? parmetros, las expresiones XPath necesarias para indexar la informacin relevante de las pginas de resultado de las bsquedas. ? empresas.ini Indica los portales con los cuales el sistema es capaz de buscar empresas. ? ? portalEmpresa.ini Al igual que con portal.ini, existe un fichero de configuracin asociado a ? cada portal, con las expresiones XPath necesarias para indexar la informacin relativa a la bsqueda de empresas.
Otro aspecto importante que se debe tener en cuenta de cara a la escalabilidad es que cada portal tiene una serie de scripts en WebL, cuyo objetivo es realizar las consultas a los portales. Los scripts asociado a cada portal son: ? portal.webl Realizan la peticin de bsqueda, de tal modo que nicamente se descargan ? al servidor la primera pgina de resultados, a fin de ofrecer al usuario un tipo de bsqueda ms rpida. ? portalM.webl Scripts anlogo a los anteriores con la diferencia de que estos se descargan ? todas las pginas de resultados, para que despus sean tratadas por el sistema, de tal modo que sea posible ofrecer al usuario una respuesta lo ms completa posible. ? portalEmp.webl Realizan la peticin de bsqueda de empresas, para descargarse todas ? las pginas de respuesta.
Respecto al interfaz, se puede cambiar fcilmente la imagen de la aplicacin, es decir las pginas html que se devuelven al cliente. Para realizar estos cambios nicamente hay que cambiar las plantillas que usa el sistema. Estas plantillas son ficheros XSL, que indican como se debe presentar la informacin al usuario.
Disponibilidad
El sistema en principio se encuentra disponibles para acceder a l, va http, las 24 horas del da. Para ofrecer esta garanta, se ejecuta peridicamente un script gracias a la utilidad crontab que comprueba si el servicio web est activado, y en caso de no ser as vuelve a arrancar el Tomcat.
export JAVA_HOME = ..
Pgina 105
export CLASSPATH = .. if [ `ps -ef | grep -v 'grep'| grep 'jmoli' | grep '/usr/lib/j2se/1.4/bin/java Djava.endorsed.dirs=/home/apt/jmoli/programas/jakarta-tomcat-4.1.24/common/endorsed classpath /usr/lib/j2se/1.4/lib/tools.jar:/home/apt/jmoli/programas/Tidy.jar' | wc -l` -lt 1 ]; then /home/apt/jmoli/programas/jakarta-tomcat-4.1.24/bin/startup.sh & fi
El funcionamiento de este script es muy sencillo, se limita a establecer las variables de entorno JAVA_HOME y CLASSPATH y mira los procesos que estn corriendo. Si no existe un proceso Jakarta-Tomcat, lanza el script de arranque del Tomcat.
Esta disponibilidad 100% no es posible garantizarla. Por lo que el servicio de la aplicacin puede verse interrumpido por los siguientes motivos:
incendio, inundacin, boicot o escasez de energa y recursos necesarios para la prestacin del servicio.
? Que el estado de la red de la universidad no se encuentre en correcto funcionamiento. ? ? Que la propia mquina fsica en la cual corre el sistema no funcione correctamente o ?
parecer al usuario que la aplicacin no esta disponible mientras que otros si puedan acceder.
Concurrencia
El sistema cumple con las caractersticas de una aplicacin concurrente [27], ya que permite el acceso simultneo de varios usuario. Esta propiedad es inherente a la arquitectura y a la tecnologa utilizada para su implementacin, por lo que durante el desarrollo en principio no fue necesario prestar especial atencin a dicho aspecto.
La problemtica surgi cuando se utiliz WebL, ya que el mecanismo de transmisin resultados entre WebL y el ncleo del sistema era por medio de ficheros html, de tal modo que las peticiones simultneas de los usuarios provocaban que los resultados recogidos no fuesen los correctos. Para solventar dicha situacin se opt por mandarle como argumento al script WebL un nmero aleatorio, que identificase la sesin, de tal modo que los ficheros que se
Pgina 106
utilizaban, concatenaban en el nombre el identificador de la sesin, evitando que se produjera el solapamiento entre las peticiones.
En el proceso de interaccin con los portales de empleo, tambin se utilizaron mltiples hilos de ejecucin por motivos de eficiencia. Dicho proceso se caracteriza por tener unos tiempos de espera muy largos, generados por el tiempo de respuesta de los portales y por el trfico de la red. Estos tiempos, gracias a la concurrencia se podan solapar, de tal modo que el sistema puede realizar otras operaciones, o operaciones parciales, mientras espera a que los portales de empleo le respondan. A estos hilos de ejecucin, se les otorga un determinado tiempo de espera. Y cuando dicho tiempo a expirado, se continua la ejecucin del sistema sin el resultado asociado a dicho script. Con este mecanismo se evita que el sistema se quede pendiente de las respuestas de los portales durante ms tiempo del debido.
Robustez
El sistema ha sido sometido a una batera de prueba cuyo objetivo era dotar al sistema de la suficiente robustez como para poder considerarlo una aplicacin comercial.
Los puntos crticos de la aplicacin son los nexos de unin con los portales de empleo, ya que pueden cambiar del da a la noche. Estos cambios pueden ser de tres tipos:
Utilizacin de otras tecnologas, de los parmetros que reciben las aplicaciones que corren en los servidores...
Porque los resultados de bsquedas se den agrupados, o requieran de una validacin previa por parte del usuario...
Salvo los cambios de imagen, que han sido contemplados durante el desarrollo de la aplicacin para que en el caso de que se den no afecten a la aplicacin, la mayora de los cambios repercutiran en el correcto funcionamiento del sistema.
Pgina 107
De todos modos, se ha comprobado que estos portales no son sometidos a apenas ningn cambio, ya que durante todo el proceso de desarrollo del proyecto, no se ha modificado ningn portal de empleo, y no se recuerda por parte de los desarrolladores, que hayan sido modificados desde su aparicin en la World Wide Web.
El principal motivo por el que estos portales no sufren apenas cambios, radica en: ? El funcionamiento de estos es ms que aceptable, por lo que no parece necesario ? realizar mejoras de eficiencia. ? El pblico al cual va dirigido, pese a ser mayoritariamente personas con conocimientos ? de informtica, gracias a la aceptacin de los portales est muy diversificado, de modo que no a todas las personas que utilizan estos portales les resultaran cmodo adaptarse a un cambio del portal. ? Dichos portales han tenido una gran aceptacin por lo que no se arriesgan a modificar ? su imagen.
De todos modos, con la idea de prever todos los posibles cambios, se han implementado los scripts de consulta y los procesos de extraccin de informacin con vista a que el acoplamiento con los portales de empleo sea el mnimo posible.
Para evitar el acoplamiento del sistema con los portales de empleo, la extraccin de informacin se ha basado en aquellos atributos menos proclives a cambiar:
Atributos Inestables table tr td width height cellpading cellspacing color bgcolor align valign
A continuacin se definen una serie de reglas que se han seguido para que el sistema perciba lo mnimo posible los cambios de los portales: ? Para obtener los formularios se han utilizado los atributos action, ya que de este modo ? nicamente afectaran al sistema los cambios de funcionamiento interno, es decir que cambien las aplicaciones que tratan las peticiones de los usuarios. De este modo, se asegura obtener el formulario correcto, pese a que cambie el aspecto e incluso la estructura del portal. ? Para obtener los campos de un formulario, el sistema utiliza los nombre de estos, en ? lugar de la posicin relativa que ocupan en el formulario, de tal modo que al igual que
Pgina 108
con la regla anterior, el sistema nicamente se ve afectado cuando en los portales se producen cambios internos. ? Evitar en la medida de lo posible indexar los contenidos en funcin de los atributos que ? anteriormente se han catalogado como inestables. A fin de evitar que un cambio de imagen del portal afecte a la extraccin de informacin.
Pese a la importancia de cumplir las reglas definidas anteriormente, en la extraccin de la informacin asociada a las bsquedas ha sido imposible basarse nicamente en los atributos robustos, por lo que en algunos casos el procesos de obtencin de informacin se ha tenido que apoyar en atributos inestables.
Para solventar esta fuente de inestabilidad, se ha implementado el sistema de tal modo que los scripts, tanto de consulta (WebL) como de extraccin de informacin (Expresiones Xpath), son independientes del sistema, de modo que pueden ser modificados sin necesidad de cambiar el cdigo fuente de la aplicacin.
Otro punto conflictivo que podra comprometer la robustez del sistema son las deficiencia en el servicio que ofrezcan los portales, los cuales pueden no funcionar en un momento determinado o que los tiempos de respuesta se dilaten demasiado en un momento dado porque tengan algn problema.
El sistema, con el objetivo de corregir este aspecto, tiene asociado un time-out a cada uno de los portales. De tal modo que si estos se retrasan demasiado en su respuesta, o simplemente no funcionan y por lo tanto no responden, la aplicacin los ignora ofreciendo el resultado de cach si fuese posible, y en el caso de no serlo, dando al usuario una respuesta parcial. Ofreciendo una imagen de completa robustez.
Reutilizacin
La reutilizacin es una disciplina cuyo objetivo es reducir costes en desarrollo y mantenimiento de un Sistema.
Uno de los conceptos principales de la reutilizacin es la evolucin, el sistema debe ser variable, flexible. En el momento que la aplicacin tenga una estructura rgida, no se podr adaptar a un entorno cambiante, por lo que al trasladarla a cualquier otro entorno que no sea el original, generar muchos errores.
Pgina 109
Y para permitir dicha evolucin es imprescindible realizar una labor de abstraccin, este es realmente el pilar ms importante de la reutilizacin, ya que permite que el sistema sea flexible.
Dicha labor de abstraccin ha sido una de las tareas principales en el desarrollo del proyecto, puesto que desde el anlisis y el diseo se le ha otorgado gran importancia al hecho de identificar aquellos patrones de diseo que se daban en el sistema. Puesto que la aplicacin de dichos patrones garantiza una eficiencia y estabilidad ya comprobada. Por lo que se puede asegurar que el concepto de reutilizacin se ha aplicado desde el primer momento.
Otro aspecto que demuestra que en el proyecto se ha aplicado el concepto de reutilizacin, es la utilizacin de mltiples libreras (ficheros jar), todas ellas estandarizadas y cuyo funcionamiento se encuentra ms que comprobado. Estas libreras son: ? Jtidy.jar. Permite obtener un fichero xml bien estructura a partir de una pgina html que ? puede no estar correctamente formada, con etiquetas incorrectamente colocadas. ? Xalan.jar: Aporta al sistema la capacidad de trabajar con ficheros xml, aplicndole ? transformaciones con hojas de estilos xsl, as como la posibilidad de indexar la informacin con expresiones Xpath. ? Jsdk.jar: Proporciona a la aplicacin la capacidad de recibir peticiones http y responder ? a estas.
Pero el concepto de reutilizacin, no supone que se tengan que utilizar elementos externos y estandarizados. Se pueden implementar componentes del sistema, con funcionalidades muy tiles y demandadas habitualmente, con la finalidad de que puedan ser utilizadas en nuevos sistemas anlogos al proyecto. Dichas funcionalidades se han implementado en las clases que componen el paquete .nucleo.comunes
Mantenimiento
BuscaEmpleo, es un sistema autnomo, que en principio no requiere de un gran mantenimiento, de modo que dicha actividad est nicamente destinada a cubrir los posibles errores motivados por los cambios en los portales de empleo utilizado.
Con el objetivo de que el mantenimiento del sistema sea lo ms sencillo posible, se ha realizado una completa documentacin de este, facilitando en todo lo posible la compresin del
Pgina 110
sistema y permitiendo agilizar los desarrollos necesarios para realizar futuras ampliaciones de la aplicacin
Otro argumento a favor de simplificar el mantenimiento es el hecho de que se hayan implementado mdulos comunes (Ver apartado de reutilizacin), evitando utilizar cdigo redundante, cuya modificacin suele ser conflictiva.
Un aspecto a destacar relativo al mantenimiento, es la versatilidad de la aplicacin referente a su parametrizacin. Puesto que todos los aspectos proclives a ser modificados en un futuro se puede cambiar por medio de parmetros evitando la necesidad de alterar el cdigo fuente de la aplicacin. Es decir, en el caso de que sea necesario adaptar el sistema para que se ajuste a las modificaciones realizadas en un portal de empleo, nicamente hay que modificar los scripts y los ficheros de configuracin asociados a dicho portal.
En el supuesto caso de en la aplicacin se haya producido algn error, y esta no tuviese el comportamiento adecuado frente a las peticiones de los usuarios, se han ideado una serie de ficheros de logs, en los cuales quedara reflejado cualquier error, con el fin de facilitar su identificacin y su posterior correccin.
A continuacin se muestra una tabla con los ficheros de logs que genera el sistema y la funcionalidad a la cual estn asociados.
Ficheros de Logs
$HOME_TOMCAT/logs/catalina.out
Fichero de logs, generado por el servidor web, en el cual tambin se registran los errores que se produzcan en la aplicacin en respuesta a las peticiones de los usuarios.
$PROYECTO/log/<portal>.out
Salida estndar de los scripts asociados a cada portal, que se encargan de interactuar con los portales de empleo, con el objetivo de descargarse la pgina HTML de respuesta de los procesos de bsqueda.
$PROYECTO/log/<portal>.log
Salida de error de los scripts asociados a cada portal, que se encargan de interactuar con los portales de empleo, con el objetivo de descargarse la pgina HTML de respuesta de los procesos de bsqueda.
Pgina 111
Errores generados en el proceso de lanzamiento de comandos asociados al tratamiento de las pginas con Jtidy.
Tabla 15 Ficheros de Logs
Las acciones que se deben realizar en el caso de que se detecte un comportamiento anmalo en el sistema son:
1.
Observar si el error proviene de la aplicacin o del entorno, es decir, podra darse el caso de que el sistema no responda porque la red de la universidad no est disponible, ya sea por un problema tcnico o por mantenimiento de esta.
2.
3.
Comprobar que el servidor Tomcat funciona correctamente estudiando los logs que genera. En estos logs ya se tendr una idea bastante aproximada de cual ha sido el motivo de que la aplicacin no funcione correctamente.
Si el problema fuese que el sistema no ofrece apenas resultados en su respuesta. El origen de dicha situacin podra ser porque los portales de empleo, hayan modificado la presentacin de la informacin. Para solventarlo, nicamente sera necesario modificar las expresiones Xpath asociada a aquellos portales cuya imagen haya sido cambiada, para que obtenga los datos apropiados.
Portabilidad
Actualmente con la gran variedad de plataformas y sistemas operativos existentes y sin poder decidir cual de ellos es ms rpido y eficiente, no se debe vincular bajo ningn concepto el desarrollo de una aplicacin a un sistema operativo. Debido a que nadie puede garantizar que la plataforma que se utilice en un momento determinado, sea la definitiva de modo que en un futuro se deba migrar la aplicacin a otro sistema.
Previniendo esta situacin, se ha implementado un sistema prcticamente independiente de la plataforma. Tal es dicha independencia, que el entorno de desarrollo utilizado han sido ordenadores personales con Windows98 y Windows XP, y el entorno de produccin es una mquina con un sistema operativo Linux.
Pgina 112
La portabilidad del sistema es garantizada gracias a que el sistema ha sido implementado con JAVA (Un lenguaje independiente de la plataforma), que permite realizar aplicaciones sin necesidad de tener en cuenta el sistema operativo sobre el cual se ejecutarn dichos programas.
Otro caracterstica del sistema que permite asegurar su portabilidad, es el hecho de que todos los recursos que necesita el sistema, como la situacin de los scripts, los ficheros xml, la cach, las pginas html, se encuentra parametrizados.
Por tanto, en el caso de que se desee migrar el proyecto a otro servidor, nicamente sera necesario copiar todos los componentes de la aplicacin y modificar los ficheros de configuracin situados en el directorio ini, para que el sistema pueda direccionar todos los recursos.
Los nicos requerimientos de la plataforma para que pueda hospedar el sistema son: ? Que tenga conexin a Internet y un cliente de correo, pues la aplicacin se ha apoyado ? en la utilidad mail de Linux. ? Que disponga de alguna utilidad que permita realizar programacin de tareas, de cara ? al lanzamiento de los comandos.
Diagrama de Consulta
El proceso de consulta se corresponde con el siguiente grfico:
Pgina 113
Navegador HTTP
Navegador
Navegador HTTP
JSDK
MEDIADOR
SHELL
HTML
WRAPPER
WRAPPER HTTP
Portal 2
Portal 3
En el grfico se pueden observar dos flujos de informacin, uno de ellos descendente que representa como la peticin realizada por los usuarios llega a los portales de empleo, y otra ascendente, que indica como la respuesta del portal de empleo es entregada al usuario.
Respecto al flujo descendente de informacin, se observa como los navegadores se comunican con el sistema mediante Servlets (JSDK). Esta comunicacin es muy flexible, pues permite que acceder al sistema sin necesidad de realizar una instalacin de la aplicacin en el puesto cliente. Despus se transmite la consulta a los Wrappers(envoltorios) mediante un comando (por medio de la shell del sistema operativo). Y finalmente los Wrappers traducen dicha consulta a cada portal.
En cuanto al flujo de informacin ascendente, los portales responden a la peticin http, de tal modo que los wrappers obtienen la pgina html con el resultado de la consulta. Dicha pgina es tratada por el sistema, el cual extrae la informacin y le da un formato homogneo para finalmente entregrsela al usuario.
Hay que destacar en todo el proceso, que la parte comprendida entre el mediador y los portales de empleo se ejecuta de manera concurrente, a fin de obtener una mayor eficiencia. Pues en este momento la aplicacin se queda pendiente de la respuesta de los portales de
Pgina 114
empleo y de la velocidad con la cual estos son capaces de responder a las peticiones, pudiendo retardar en gran parte la respuesta de la aplicacin al usuario.
Respecto al funcionamiento de los Wrappers, estos se encuentran implementados en WEBL, estos se conectan al correspondiente portal de empleo y se descargan la pgina principal, una vez hecho esto, rellenan los formularios necesarios para la realizacin de la bsqueda con los parmetros que se le hayan transmitido al Wrapper y se emiten una peticin http al portal. De tal modo que este responde con el resultado de la bsqueda. El Wrapper captura dichos resultados y los almacena en pginas html para que posteriormente sean tratados por la aplicacin para extraer la informacin.
Pgina 115
5 Pruebas
Para verificar el correcto comportamiento del sistema, fue sometido a una batera de pruebas, cuyo objetivo era descubrir cualquier error de la aplicacin o cualquier situacin anmala que inicialmente no hubiese sido contemplada.
Cada registro de la batera esta compuesto por la prueba que se ha realizado, el resultado de dicha prueba y en el caso de que se haya producido algn error, su descripcin y su posterior solucin. En este documento, simplemente se han reflejado las pruebas bsicas, aparte de estas, se han realizado muchas otras relacionadas con la navegacin y destinadas a la comprobacin de que los resultados ofrecidos por el portal eran los adecuados.
Inicialmente se muestran las pruebas relacionadas con la bsqueda, por parte de un usuario annimo.
Bsqueda de Puestos de Empleo Prueba y Descripcin Bsqueda Simple. Consiste en la realizacin de una bsqueda unitaria (Una nica tecnologa y indicando una provincia) Visualizacin de todos los resultados de una bsqueda Simple. Una vez el usuario a realizado una bsqueda simple, pulsa el botn de ver todos los resultados, y le aparecen todos los puestos de trabajos ofertados por los portales de empleo. Bsqueda Compuesta, unin de resultados. Consiste en la realizacin de una bsqueda indicando que se desean los puestos de trabajos asociados a dos o ms tecnologas, y pidiendo que realice la unin de estos (JAVA + XML + SQL) Visualizacin de todos los resultados de una bsqueda compuesta. Una vez el usuario a realizado una bsqueda compuesta de unin, pulsa el botn de ver todos los resultados, y le aparecen todos los puestos de trabajos ofertados por los portales de empleo. Bsqueda Compuesta, interseccin resultados. Consiste en la realizacin de una bsqueda indicando que se desean los puestos de trabajos asociados a dos o ms tecnologas, y pidiendo que realice la interseccin de estos (JAVA & XML & SQL) Visualizacin de todos los resultados de una bsqueda compuesta. Una vez el usuario a realizado una bsqueda compuesta de interseccin, pulsa el botn de ver todos los resultados, y le aparecen todos los puestos de trabajos ofertados por los portales de empleo. Realizacin de una bsqueda indicando Localidad. La localidad consiste en un filtro que muestra nicamente los puestos de dicho lugar. Acceso al Puesto Ofrecido por la Bsquedas. OK OK OK OK OK OK OK Result. OK
Pgina 116
Bsqueda de Empresas Prueba y Descripcin Bsqueda de una empresa. Acceso a una empresa ofrecidas como resultado de una bsqueda
Tabla 17 Pruebas - Bsquedas de Empresas
Result. OK OK
Una vez se han realizado las pruebas asociadas a las bsquedas que pueden realizar los usuarios annimos, se presentan las pruebas relacionadas con el perfil privado.
Acceso al rea Personal Prueba y Descripcin Creacin de un nuevo usuario. Acceso al rea Personal por parte de un usuario no registrado. El sistema debe presentar un mensaje de error en el cual indica que el usuario no esta dado de alta. Acceso a pginas internas del Sistema sin haberse registrado anteriormente. Consiste en que un usuario mal intencionado desee acceder directamente a cualquier de los servlet que componen la aplicacin sin haberse validado anteriormente. El sistema debe presentar un mensaje de error. Acceso al rea Personal por parte de un usuario registrado. Salida del rea privada del sistema pulsando el botn desconectar.
Tabla 18 Pruebas - Acceso al rea Personal
Result. OK Ok
OK
OK OK
A continuacin se presentan las pruebas relacionadas con las funcionalidades que aporta el sistema a un usuario registrado.
Funcionalidades del rea Personal Prueba y Descripcin Insercin y modificacin de los datos personales. Creacin, eliminacin de alertas pertenecientes al usuario registrado. Recepcin de las alertas establecidas en el sistema en el correo electrnico del usuario registrado. Creacin, eliminacin de controles pertenecientes al usuario registrado. Comprobacin de que los controles establecidos por el usuario realmente realizan un seguimiento de la bsqueda indicada. Visualizacin de los puestos asociados a un control del usuario. Muestra el seguimiento que se esta realizando por parte de dicho control. OK OK OK Result. OK OK OK
Pgina 117
Agregacin de una oferta de empleo al listado de puestos asociados al usuario Modificacin del estado de una oferta de empleo en el listado de puestos pertenecientes a un usuario Eliminacin de una oferta del listado de puestos de trabajo.
Tabla 19 Pruebas - Funcionalidades del rea Personal
OK OK
OK
Funcionalidades de la Bsqueda Inteligente Prueba y Descripcin Bsqueda Simple. Consiste en la realizacin de una bsqueda unitaria (Una nica tecnologa y indicando una provincia) Visualizacin de todos los resultados de una bsqueda Simple. Una vez el usuario a realizado una bsqueda simple, pulsa el botn de ver todos los resultados, y le aparecen todos los puestos de trabajos ofertados por los portales de empleo. Bsqueda Compuesta, unin de resultados. Consiste en la realizacin de una bsqueda indicando que se desean los puestos de trabajos asociados a dos o ms tecnologas, y pidiendo que realice la unin de estos (JAVA + XML + SQL) Visualizacin de todos los resultados de una bsqueda compuesta. Una vez el usuario a realizado una bsqueda compuesta de unin, pulsa el botn de ver todos los resultados, y le aparecen todos los puestos de trabajos ofertados por los portales de empleo. Bsqueda Compuesta, interseccin resultados. Consiste en la realizacin de una bsqueda indicando que se desean los puestos de trabajos asociados a dos o ms tecnologas, y pidiendo que realice la interseccin de estos (JAVA & XML & SQL) Visualizacin de todos los resultados de una bsqueda compuesta. Una vez el usuario a realizado una bsqueda compuesta de interseccin, pulsa el botn de ver todos los resultados, y le aparecen todos los puestos de trabajos ofertados por los portales de empleo. Realizacin de una bsqueda indicando Localidad. La localidad consiste en un filtro que muestra nicamente los puestos de dicho lugar.
Tabla 20 Pruebas - Funcionalidades de la Bsqueda Inteligente
Result. OK
OK
OK
OK
OK
OK
OK
Pgina 118
1.
El primer paso en la realizacin del sistema, fue realizar un anlisis de lenguaje WebL. El objetivo de la realizacin de dicho anlisis era familiarizarse con el lenguaje y descubrir el potencial de este como mecanismo de interaccin con la Web.
Para ello se ejecutaron los ejemplos disponibles con WebL y hicieron pruebas sencillas que rellenaban formularios y se descargaban los resultados.
Una vez se lleg a este punto, se evalu la conveniencia de la utilizacin de WebL para la implementacin del sistema o el uso de JAVA para crear el mdulo de interaccin con la Web, concluyendo a que sera ms ventajoso la utilizacin de WebL, debido a que ya aportaba una serie de utilidades, como el tratamiento de formularios o de sesiones, que podran ser necesarias ms adelante durante el desarrollo del sistema y que habra que implementarlas desde cero si se decidiese por utilizar nicamente JAVA.
2.
Una vez se hizo un estudio del lenguaje WebL, se procedi a la realizacin de un anlisis detallado de los diversos portales de empleo disponibles en las World Wide Web.
El objetivo del anlisis era descubrir los portales que: ? Tenan ms aceptacin en los potenciales usuarios del sistema. Para lo cual se ? procedi a realizar un pequeo estudio sociolgico. ? Disponan de una mayor oferta de puestos de trabajo. ? ? Respetan una estructura ms homognea y simple en la presentacin de los resultados ? de bsqueda de cara a que su tratamiento sea lo ms sencillo posible.
Pgina 119
? Se observ el cdigo que conformaban las respuestas de los portales a fin de constatar ? que realmente los portales seleccionados eran fcilmente tratables mediante mecanismos automticos.
El resultado de este anlisis es que los portales ms proclives a ser utilizados por el sistema seran: ? Infojobs. Que es el portal con mayor aceptacin entre el pblico objetivo que utilizaran el ? sistema. http://www.infojobs.net [1] ? Monster. El portal lder en empleo internacionalmente. http://www.monsters.es [2] ? ? Tecnoempleo. El segundo portal con mayor aceptacin, con la diferencia de que su oferta ? es mucho menor que el anterior. http://www.tecnoempleo.com [3] ? TodoTrabajo. Portal que permite diversificar en cierto modo el pblico al cual estar ? destinado el sistema puesto que los anteriores portales bsicamente ofrecen puestos de trabajos relacionados con las tecnologas. http://www.todotrabajo.com [4]
3.
Una vez se tomo la decisin de los portales que se iban a integrar en el sistema y a tecnologa que se iba a utilizar se procedi a la realizacin de una bsqueda simple, nicamente de la primera pgina de resultados del portal de Infojobs, y a su posterior almacenamiento en un fichero para su posterior tratamiento.
Ya en este momento, se percibi un problema, los formularios de bsqueda de los puestos de trabajos eran excesivamente sencillos, y cuando se intent realizar la bsqueda avanzada, no todos los portales de empleo ofrecan los mismos campos de bsqueda y cuando se detallaba un poco la bsqueda poniendo la remuneracin mnima o el tipo de contrato, nos encontrbamos con que apenas se ofreca un resultado. Por lo que se desestim la utilizacin de los campos de la bsqueda avanzada.
4.
Una vez ya se dispona del conocimiento necesario para interactuar con los portales de empleo, se procedi a la implantacin de la arquitectura necesaria para albergar el sistema.
Pgina 120
Los requerimientos de dicha arquitectura son que diesen la posibilidad de contener aplicaciones, es decir que permitiesen la ejecucin de servlets.
Finalmente se opt por implantar un servidor Tomcat, motivado por su naturaleza gratuita. Respecto a su posterior configuracin. Ver anexo: Instalacin de Aplicacin.
5.
El siguiente paso, fue el tratamiento de la respuesta ofrecida por el portal de empleo, con el objetivo de obtener un documento con la informacin correctamente estructurada en formato xml para facilitar en la medida de lo posible su tratamiento automtico.
Para ello se decidi primero convertir la pgina html de resultados en un documento DOM, utilizando la librera Jtidy, de tal modo que la pgina html se encontrase estructurada como un fichero xml. Y despus extraer de dicho documento la informacin de los puestos de trabajo mediante expresiones XPath, de tal modo que fuese fcilmente configurable para prever posibles cambios de la estructura de la pgina html de resultados, consiguiendo que el sistema sea escalable de cara a poder extenderlo fcilmente con la agregacin de ms portales de empleo. Puesto que nicamente sera necesario ajustar las expresiones XPath a cada uno de los portales.
6.
La siguiente accin fue realizar la peticin WebL desde un sistema realizado con Java. Para esto se plantearon dos opciones: ? Utilizar el API que proporciona WebL para desde el sistema hacer las peticiones ? directamente ? Utilizar scripts en WebL. ?
Finalmente se decidi utilizar scripts en WebL, debido a que de este modo el sistema sera ms configurable permitiendo su posterior ampliacin con otros portales de empleo. Para ejecutar dichos scripts, se opt por la utilizacin de la clase Process de Java.
Pgina 121
Respecto a la presentacin de la informacin, aprovechando que esta se encontraba correctamente estructurada en un fichero xml, se decidi por presentarla directamente aplicndole hojas de estilo XSL. Dando opcin a modificar fcilmente la presentacin.
7.
Una vez llegados al punto en el cual era posible realizar una peticin de bsqueda y ver el resultado de esta desde el sistema BuscaEmpleo. Se procedi a la ampliacin del sistema mediante la agregacin de los dems portales de empleo, para lo cual se crearon nuevos scripts en WebL asociados a cada uno de los portales y la obtencin de las expresiones XPath que permitiesen extraer la informacin esencial de las pginas html de resultados de los portales.
Finalmente, se cre una clase que era capaz de realizar la unin de ficheros xml, para unificar los resultados de todos los portales, y as obtener una respuesta completa, homognea e independiente de su fuente.
La implementacin de las bsqueda para los dems portales requiri de 15 das aproximadamente.
8.
Una vez el usuario del sistema ya poda realizar bsquedas en varios portales simultneamente, se procedi a la creacin de un rea privada con una serie de utilidades que slo estaran a disposicin de los usuarios que se registrasen en el sistema, y que facilitasen el proceso de bsqueda de trabajo.
a.
Datos Personales
Primero realiz un mdulo que permita aadir los datos personales, los cuales se almacenaban en el servidor en forma de ficheros xml, que podan ser tratados directamente por los servlets para mostrar la informacin en pantalla, permitiendo as que el usuario pudiese modificar ms adelante sus datos personales.
b.
Alertas
Pgina 122
El siguiente paso fue la realizacin de un mdulo de gestin de alertas, de tal manera que el usuario especifique que bsquedas desea recibir peridicamente, y en que intervalo de tiempo, en su direccin de correo.
Respecto al envo de correos electrnicos, se opt por utilizar la utilidad crontab disponible en el servidor, y se respect el patrn command, de tal modo que cada alerta era un comando independiente.
c.
Puestos Asociados
Despus se realiz un mdulo que permitiese a los usuarios poder guardar en el servidor una lista de puestos de trabajo ofertados por las empresas evitndole el engorro de tener que anotar los puestos que le parecan interesantes. Ms delante de decidi dotar al sistema de un workflow de tal modo que los puestos de trabajo pudiesen tener diversos estados: puesto interesante, currculum vitae enviado, entrevista realizada o aceptado.
d.
Controles
Posteriormente se plante dotar al sistema de una pseudo-inteligenca. Para ello era necesario tener un registro de los puestos de empleo que los portales publicaban. Al seguimiento necesario para dicho registro, se le denomin control. Cada control consista en una bsqueda que se realizaba peridicamente con el objetivo de registrar los puestos de empleo asociado a dicha consulta. Por lo que se realiz el mdulo de gestin de controles y se implement dicha funcionalidad cumpliendo al igual que con las alertas el patrn command.
9.
Llegados a este punto se orient el desarrollo de la aplicacin a la implementacin del buscador inteligente que permitiese realizar consulta dando la posibilidad de eliminar en los resultados aquellos puestos que haban sido publicados en numerosas ocasiones, e incluso mostrar nicamente los puestos realmente nuevos, ya que los portales de empleo realizan publicaciones peridicas no permitiendo al usuario distinguir las nuevas ofertas.
Dicho desarrollo se apoy en el registro de las publicaciones de los portales obtenidas por el seguimiento que se realizaba por medio de los controles. De tal modo que para su
Pgina 123
correcto funcionamiento era necesario haber establecido anteriormente los controles adecuados.
La inclusin del buscador inteligente acapar unos 20 das del desarrollo del proyecto.
Las siguientes acciones se destinaron a perfilar en lo ms posible la bsqueda de puestos de trabajo, minimizando en lo posible el tiempo que debera dedicar el usuario en revisar la respuesta ofrecida por el servidor.
a.
Hasta el momento, nicamente se trataba la primera pgina de respuesta del portal de empleo, mostrando al usuario una informacin sesgada e incompleta, que generalmente era aquella a la que los propios portales de empleo daban ms importancia.
Con el objetivo de evitar esta situacin, se decidi permitir la realizacin de una bsqueda de todos los puestos de trabajo, por medio de la descarga iterativa de todas las pginas de resultado del portal y su posterior agregacin.
b.
El problema que surgi de la realizacin de las bsquedas completas, es que el sistema ofreca una enorme cantidad de puestos de trabajo, de tal modo que su posterior estudio exiga un tiempo considerable. De cara a afinar ms la bsqueda, se aadi un campo de municipio, que permitiese filtrar los puestos que no pertenezcan a un municipio determinado con el fin de minimizar el nmero de resultados ofrecidos.
c.
Finalmente, con el objetivo de perfeccionar ms el proceso de bsqueda, se dot al sistema de la capacidad de realizar intersecciones y uniones de los resultados de las consultas.
Gracias a las intersecciones es posible obtener las ofertas de empleo que estn relacionadas con varias tecnologas, aportando un gran valor aadido al proceso de consulta.
Pgina 124
Por otro lado, de cara a poder ampliar el nmero de ofertas de una consulta, se posibilit la realizacin de uniones de bsquedas, de tal modo que se ampliaba el nmero de resultados que respondan a la misma consulta.
d.
Llegados a este punto se percibi que el tiempo de respuesta del sistema se haba disparado, lo cual supona un gran problema de cara a su puesta en produccin.
Para solventar dicho problema, se implemento una memoria cach, que almacenase resultado de las bsquedas unitarias ms frecuentes en el sistema, de cara a que el sistema pudiese obtener las ofertas de empleo asociadas a dichas bsquedas sin necesidad de conectarse a los portales de empleo cuando el usuario haga una bsqueda.
La insercin de todas las funcionalidades que componen esta fase requiri de unos 45 das.
Con el objetivo de completar el servicio ofrecido por el sistema se decidi ampliar su funcionalidad, permitiendo realizar bsquedas de empresas, aprovechando el hecho de que varios portales (no todos) tambin ofrecan esa capacidad de consulta.
La implementacin del buscador de empresas, sigui un proceso anlogo al de consulta de puestos, reutilizando la mayor parte del cdigo fuente, de tal modo que su desarrollo se hizo en un corto espacio de tiempo.
Llegados a este punto, se procedi a una etapa de pruebas consistente en realizar un uso intensivo de la aplicacin procurando cubrir todas las situaciones y casos de ejecucin con el objetivo de descubrir los fallos de implementacin.
La realizacin de la tarea de bsqueda consisti inicialmente en realizar operaciones de gestin con los mdulos individuales, y despus se realizaron pruebas de integracin, para observar el comportamiento de este como un todo.
Pgina 125
Para finalizar el proyecto, se realiz la documentacin lo ms completa posible utilizando mltiples diagramas en UML, y comentando cada uno de los mdulos que lo forman.
Y finalmente la documentacin de todo el proyecto, fase que supuso globalmente la mayor cantidad de tiempo, se hizo en 90 das aproximadamente.
Fase Toma de Contacto con Webl. Anlisis de los portales de empleo ptimos para ser tratados. Realizacin de una bsqueda simple con Webl. Implantacin de la arquitectura. Tomcat. Adaptacin del resultado de la bsqueda a formato xml Implementacin de la llamada a Webl y presentacin del fichero xml de resultado a xhtml Implementacin de la bsqueda para los dems portales de empleo. Implementacin del mdulo privado. Implementacin de la bsqueda inteligente. Ampliacin de las opciones de bsqueda. Bsqueda de empresas. Fase de pruebas. Documentacin del proyecto. Tiempo Total del Proyecto.
15
45 20 45 10 5 90 289
Pgina 126
7 Problemas Encontrados
Durante el desarrollo del sistema han aparecido mltiples situaciones conflictivas que han retrasado la implantacin de la aplicacin. La mayora de los problemas estaban relacionados con la interaccin con los portales de empleo, pues cada portal tiene una estructura determinada y la tecnologa que se ha utilizado para dicha interaccin era desconocida por el equipo de desarrollo.
La no homogeneidad de los portales hace referencia al hecho de que no todos los portales ofrecen la misma informacin acerca de los puestos de trabajo ofertados. Hay portales que indican el nmero de curriculums enviados a un puesto, otros que no muestran la fecha de publicacin en todos los puestos, o si la empresa lee todos los curriculums enviados... La solucin que se ha adoptado para evitar esta incertidumbre ha sido tratar slo aquellos datos que son comunes a todos los portales, y cuando era posible, asumir la informacin no ofrecida por el portal. Por ejemplo, un portal de empleo no mostraba la fecha de publicacin para ciertos puestos que consideraba destacados, esto hizo que se adoptara la postura de mostrar la fecha del da actual, de tal modo que dichos puestos ya podan ser tratados como todos los dems.
Otro problema que surgi relativo a la interaccin con los portales de empleo, es que estos no ofrecan pginas HTML correctamente formadas, sino que les faltaban etiquetas o el orden en el cual se encontraban no era el correcto, no permitiendo un tratamiento inmediato de la informacin obtenida de estas. Es decir, era necesario un proceso de limpieza de la pgina que la estructurase y la completase, antes de poder extraer la informacin. Para ello se han utilizado un programa denominado Tidy [38,39], destinado a ser utilizado por WEBL, y un mdulo de java llamado Jtidy, ya comentado anteriormente. La utilizacin de estas dos herramientas ha hecho que aumentase enormemente el tiempo de espera, por lo que se ha realizado el sistema lo ms eficientemente posible con el objetivo de contrarrestar los tiempos de espera de estas herramientas.
Tambin habra que destacar como problema, la utilizacin por parte de los portales de empleo de JavaScript, pues complic el tratamiento de las pginas de resultados, ya que requera de hacer un seguimiento de las funciones en JavaScript para llegar a la accin real. Otro problema que fue observado durante el estudio de los portales de empleo, es que existen algunos que ya han previsto la utilizacin de sistemas de tratamiento automtico de la informacin en la Web, y para evitar ser tratados por dichas aplicaciones, recurren a diversas maniobras como la utilizacin de javascript para evitar poner los nombre de las etiquetas o de las clases directamente en la pgina HTML. Por ejemplo en un portal que se consider inicialmente y que al final fue desechado, se encontr el cdigo javascript:
Pgina 127
Respecto a la interaccin con los portales de empleo, otra complicacin que surgi es que durante la realizacin del proyecto un da que un portal de empleo cambio tanto su apariencia. De modo que aunque se intent en todo lo posible que estos cambios no repercutiesen en la aplicacin, no se recoga toda la informacin del portal que haba cambiado su imagen, por lo que fue necesaria una modificacin en las expresiones XPath asociadas a dicho portal, constatando la fcil y rpida adaptacin del sistema a los cambios que puedan sufrir los portales de empleo con los cuales esta integrado.
Independientemente de la interaccin con los portales de empleo, otro problema que se tuvo fue debido a que la mquina en la cual resida la aplicacin, era reiniciada por las noches, lo cual provocaba, que ciertas clases que realizaban un comportamiento peridico no pudiesen ser gestionadas por la propia aplicacin. Esto se solucion utilizando la utilidad crontab ofrecida por Unix, la cual se utilizaba para lanzar peridicamente unos scripts que se encargaban tanto del reinicio del servidor web, si este no se encontraba operativo, como de las tareas peridicas como es el lanzamiento de alertas o el seguimiento de los portales de empleo.
Otra situacin conflictiva eran los grandes tiempos de espera necesarios, cuando se hacan consultas compuestas, pues requeran de la realizacin de varias consultas a los portales de empleo y del tratamiento de todas las pginas devueltas. Este problema como ya se ha comentado en el apartado Reduccin de Latencia se solvent con la agregacin de una memoria cach y dndole al usuario la posibilidad de solo descargarse las primeras pginas de respuesta de las bsquedas.
Respecto a la bsqueda inteligente, inicialmente se pens en que lo ideal para saber si un puesto de trabajo era nuevo, sera recrear la Base de Datos de los portales en local por medio de la realizacin de consultas muy genricas que nos diesen todos los resultados y poder tenerlos almacenados para realizar posteriores comparaciones, pero esta solucin era inviable dada la gran cantidad de puestos de trabajo ofertados por los portales de empleo. Para solventar esta situacin apareci el concepto de los controles, de modo que el sistema nicamente realizaba un seguimiento de los controles que antes haban sido establecidos por los usuarios de modo que ya se poda dar la funcionalidad de la bsqueda inteligente en la cual se filtran aquellos puesto puestos que llevan publicados un nmero determinado de ocasiones. El nico inconveniente de esta solucin es que para que el sistema funcione correctamente requiere de que el usuario haya establecido con una anterioridad los controles, de modo que la aplicacin tenga tiempo para poder realizar un seguimiento de las consultas oportunas en los
Pgina 128
portales de empleo.
Pgina 129
Actualmente se comienzan a implantar sistemas de esta ndole, Google tiene un apartado en el cual se pueden acceder a las noticias de mltiples portales de noticias y una seccin en la cual se realizan bsquedas en tiendas de regalos, y Yahoo tambin ha presentado una seccin dedicada a la compra por Internet, que permite al usuario poder realizar buscar productos en portales de venta por Internet.
Respecto a los conocimientos adquiridos en el desarrollo del proyecto, se debe indicar que su realizacin ha sido muy enriquecedora, pues ha permitido asentar conocimientos adquiridos durante la carrera como el modelado de aplicaciones, la aplicacin de patrones de diseo en una aplicacin relativamente compleja as como conocimientos asociados a la realizacin de auditorias pues ha sido necesaria un estudio tanto de los portales de empleo disponibles en el mercado, con sus correspondiente caractersticas y elementos en comn, como de las tendencias en desarrollo de aplicaciones web, tecnolgica y grficamente. Por otro lado, durante su ejecucin se ha aprendido a utilizar tecnologas muy en auge en la actualidad como son XML y XSL.
Otro aspecto ms que destacable es que la propia realizacin y utilizacin de la aplicacin me ha supuesto encontrar un nuevo puesto de trabajo, lo que reafirma la utilidad que el sistema puede aportar a una persona que este en el proceso de bsqueda de un nuevo trabajo.
Pgina 130
De todos modos, el sistema es altamente flexible y permite incluir nuevas mejoras y la realizacin de trabajos futuros para ampliar las funcionalidades que aporta. A continuacin se presentan una serie de posibles ampliaciones: ? Agregacin de ms portales de empleo. Permitira que el servicio que ofrece la ? aplicacin sea ms completo, de modo que pueda albergar una porcin mayor del mercado de trabajo disponible en Internet. ? Integracin del sistema de alertas con otros portales capacitados para enviar mensajes ? a mviles. Dando la capacidad de recibir las alertas mediante un mensaje en el telfono mvil, permitiendo as al usuario recibir en el momento y en cualquier lugar la agregacin de nuevos puestos de trabajo en los portales de empleo. ? Inclusin de foros. Permitiendo a los usuarios opinar acerca de la aplicacin, de las ? empresas y de los puestos que se ofertan en los portales de empleo. Pudiendo advertir a la gente que busca un puesto de lo bien o mal que se trata a los empleados en las empresas. ? Inclusin de un chat en tiempo real. ? ? Creacin de un rol de administrador que gestione los usuarios registrados, las alertas y ? los controles existentes en la aplicacin. ? Adaptacin del Interfaz Web para su correcta lectura desde otros dispositivos, como ? telfonos mviles.
Pgina 131
9 Bibliografa
[1] http://www.infojobs.net Portal de Empleo Infojobs
[12] http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113 W3C. Document Object Model (DOM) Level 2 Core Specification
Pgina 132
[15] Vicente Luque Centeno, Luis Snchez Fernndez, Carlos Delgado Kloos. Automatizacin de Tareas en el Web: Una propuesta basada en estndares. Tesis Doctoral, Universidad Carlos III de Madrid.
[16] M Eugenia Gonzalo Cabellos. WebL, Un Lenguaje de Programacin para la Web. Documento Interno, Universidad Carlos III de Madrid.
[17] Thomas Kistler and Johannes Marais. WebL- A Programming Languaje for the Web. Computer Networks and ISDN Systems, Volume 30, pages 259-270.
[18] http://www.it.uc3m.es/vlc/webl/ Repositorio de Vicente Luque Centeno destinado a contenidos relacionados con WebL.
[20] Bhavani Thuraisingham XML databases and the semantic web. Boca Raton, CRC Press , cop. 2002
[21] Vladimir Geroimenko and Chaomei Chen Visualizing the semantic web : XML-based internet and information visualization. London, Springer. 2003
[22] Elliotte Rusty Harold XML : Extensible Markup Language. Foster City, IDG Books Worldwide. 1998
[23] Raymond Kosala, Hendrik Blockeel Web Mining Research: A Survey. 2000
Pgina 133
Aprenda Servlets de Java como si estuviera en segundo. Perteneciente a la coleccin Aprenda..., como si estuviera en primero. Escuela superior de Ingeniero Industriales. San Sebastin, Abril 1999.
[25] Larman, Craig. UML y patrones : introduccin al anlisis y diseo orientado a objetos y al proceso unificado.
[26] Gamma, Erich Patrones de diseo : elementos de software orientado a objetos reutilizable.
[28] Husted, Ted N Struts in action : building web applications with the leading Java framework. Greenwich: Manning. 2003
[29] Andrew Patzer JSP : ejemplos prcticos. Madrid : Anaya Multimedia, cop. 2003
[30] Jayson Falkner Desarrollo Web con JSP : fundamentos. Madrid : Anaya Multimedia, 2002
[31] http://www.mysql.com The world's most popular open source database [32] http://www.omg.org/technology/documents/formal/uml.htm Documentation of omg about Unified Modeling Language (UML).
[33] Geri Schneider, Jason P. Winters Applying Use Cases. Addison Wesley. Reading, Massachusetts. 2001
[34] http://www.w3.org/TR/xpath.html W3C. Xml path language (xpath) 2.0. W3C Working Draft 15 November 2002, 2002.
Pgina 134
[41] http://www.it.uc3m.es/~xml Web del Departamento de Ingeniera Telemtica de la Universidad Carlos III de Madrid. Cuyo objetivo es la difusin de XML en el mundo hispano.
[43] http://validator.w3.org Markup Validation Service. Servicio gratuito que comprueba y valida HTML y XHTML, segn las recomendaciones y los estndares de la W3C
[49] http://jakarta.apache.org
Pgina 135
[52] Rich Bowen, Ken Coar. Servidor Apache Al Descubierto. Prentice Hall, 2000
[53] Lino Gonzlez Garca Sistema de Gestin de Aprendizaje para Entornos Web. Documento Interno de la Universidad Carlos III. Octubre 2003.
[54] Ted N. Husted, Cedric Dumoulin, George Franciscus, David Winterfeldt Struts in Action, Softbound, November 2002.
[56] http://www.ati.es/novatica/2000/145/vjulia-145.pdf V. Juli/n, V. Botti. Agentes Inteligentes: el siguiente paso en la Inteligencia Artificial. Dpto. sistemas informticos y Computacin de la Universidad Politcnica de Valencia. Junio 200.
Pgina 136
Para acceder al sistema es necesario disponer de un navegador capaz de interpretar cdigo XHTML as como una conexin a Internet que permita al navegador llegar al portal BuscaEmpleo.
El sistema inicialmente muestra una pantalla que permite realizar una bsqueda bsica de puestos de trabajo as como acceder a la parte privada del Portal, para lo cual es necesario que el usuario se haya dado de alta en el sistema anteriormente.
Pgina 137
Para realizar una bsqueda bsica, se deben rellenar los campos Tecnologa y Provincia, dichos campos sern aquellos que posteriormente se utilizarn para realizar la consulta en los portales de empleo.
Para acceder a la parte privada, el usuario debe darse de alta en el sistema, el proceso de registro, es muy sencillo nicamente es necesario pulsar sobre Dar de Alta y rellenar los campos que aparecen en el formulario personal, una vez hecho esto, se pulsa Enviar
Pgina 138
Una vez el usuario est registrado, puede gestionar sus alertas, controles y puestos. As como modificar sus datos personales si lo desea.
Gestin de Alertas.
Una alerta es un aviso mediante el cual BuscaEmpleo le informa al usuario de los puestos de trabajo ofertados por los portales de empleo utilizando como canal de comunicacin el correo electrnico.
Pgina 139
Para agregar una alerta se debe especificar la tecnologa, la provincia y la periodicidad con la cual se desea recibir dichos avisos.
Para borrar una alerta se pulsa el botn borrar que est situado al lado de la alerta.
Gestin de Controles.
Los controles permiten al sistema hacer un seguimiento de los puestos de trabajo que ofertan los portales, de tal modo que cada control le indica a la aplicacin que la bsqueda especificada por este tiene que ser sometida a seguimiento, esto permite: ? Visualizar los resultados de estas bsquedas peridicas de una forma ordenada y pudiendo ? observar el nmero de veces que un puesto de trabajo ha sido publicado ? Realizar bsquedas inteligentes en las cuales se pueda utilizar el nmero de ocasiones que ? un puesto ha sido publicado como criterio para desechar puestos no interesantes.
Pgina 140
Para agregar un control se debe especificar la tecnologa, la provincia que definen la bsqueda que debe ser sometida a seguimiento. Para borrar un control se pulsa el botn Borrar que est situado al lado de dicho control.
Si se desea observar el seguimiento que est realizando un control, nicamente hay que pulsar en el botn ver que tiene asociado cada control.
Cada control tiene asociado un listado de puestos de trabajo agrupados por las empresas que los ofertan, indicando la fecha en la cual se puso el puesto en el portal y el nmero de das que dicha oferta lleva publicada. De tal modo que es posible observar si un puesto de trabajo lleva mucho tiempo sin cubrir.
Pgina 141
Gestin de Puestos
El sistema le permite a los usuarios llevar una gestin de los puestos de trabajo a los que les enva su curriculum, de tal modo que este tenga un listado de puestos de trabajo asociado a su perfil para as no repetir la accin de mandar el curriculum.
Pgina 142
Para aadir un puesto de trabajo al listado, se debe pulsar el botn de Guardar situado al lado de dicho puesto en los resultados de las bsquedas.
Una vez el puesto se ha agregado al listado, el usuario puede cambiar el estado de este en funcin de la fase en la cual se encuentre el puesto de trabajo. ? Si le ha enviado el curriculum. ?
Para borrar un puesto de trabajo del listado, se debe pulsar el botn Borrar situado al lado de dicho puesto.
Bsqueda Inteligente
El concepto de bsqueda inteligente apareci por el hecho de que en los portales de empleo cuando se realiza una bsqueda peridicamente, se percibe que de un da a otro hay muy pocas ofertas realmente nuevas, es decir, los portales publican peridicamente con fecha
Pgina 143
del da actual las mismas ofertas de empleo. Por lo tanto, el usuario cuando realiza dicha bsqueda puede considerar que si que hay mucho trabajo, pero la mayora de estas ofertas son antiguas y no se han cubierto.
Otro motivo que justifica este tipo de bsqueda, es que muchas empresas publican ofertas fantasmas, es decir, publican puestos de trabajo que no se pretenden cubrir nicamente con el objetivo de darse publicidad, pues as la gente que consulta asiduamente estos portales observa que hay empresas que siempre estn presentes. Estos puestos, despus de realizar un estudio se observa que tienen el mismo nombre, es decir que se apoyan en una funcionalidad del portal de empleo que publica el mismo puesto durante unos das.
Todos esto, motivo el hecho de realizar una bsqueda inteligente capaz de filtrar los puestos por nmero de ocasiones publicadas. Para ello, se crearon los controles que ya se han comentado, de tal modo que los usuarios pueden indicar cuales son las bsquedas que hacen normalmente a fin de as utilizar dicha informacin, pues realizar un seguimiento completo de las publicaciones de los portales es inviable.
Para realizar una bsqueda, simplemente hay que especificar la tecnologa y la localidad en la cual se desea realizar dicha bsqueda e indicar la antigedad de los puestos. En la pantalla de bsqueda aparecen todos los controles que realizan los seguimientos, para que el usuario si ve que su bsqueda no est siendo sometida a seguimiento lo pueda corregir,
Pgina 144
e incluso se pueden observar los resultados de dichos seguimientos pulsando el botn Ver que se encuentra al lado de cada uno de los controles.
Pgina 145
Para programar comandos cuya ejecucin se requiere repetidamente (cada hora, diariamente, semanalmente) se utiliza crontab, el cual tiene las siguientes opciones: ? crontab a fichero: Instala el fichero en el crontab. En la mayora de los sistemas este ? comando se ejecuta simplemente poniendo: crontab fichero ? crontab e : Edita el fichero crontab. O lo crea si no existe. ? ? crontab l : Muestra el fichero crontab. ? ? crontab r : Borra el fichero crontab. ? ? crontab v :Muestra la ltima vez que se edito el fichero crontab. ? ? crontab u usuario: Permite modificar o ver el fichero crontab del usuario. Solo esta ? permitido para el administrador.
El comando crontab crea un fichero crontab que contiene los comandos y las instrucciones que especifican cuando el demonio cron debe ejecutar aquellas instrucciones. Cada entrada en el fichero crontab consiste en seis campos.
Estos campos deben ir separados por espacios o tabuladores. Los cinco primeros son patrones de nmeros y el sexto es el comando que debe ejecutarse. A continuacin se describen los campos.
Descripcin El minuto exacto en el cual debe ejecutarse el comando La hora del da en la cual debe ejecutarse el comando El da del mes en el que se ejecuta el comando El mes del ao en el que se ejecuta el comando. El da de la semana en el que se ejecuta el comando. Domingo=0, Lunes=1
Comando
Especial
Pgina 146
Cada uno de los patrones de los cinco primeros campos puede contener un asterisco o una lista de elementos separados por comas. Cada elemento ser un nmero o un rango, indicado con dos nmeros separados por un smbolo menos (8-11).
En concreto para la realizacin del proyecto el fichero crontab se encargaba de lanzar la ejecucin del lanzador de comandos de forma peridica, todos los das cada cuatro horas, as como de lanzar un script cada 15 minutos que comprobase si el servidor web estaba cado, y en el caso de estarlo, de arrancarlo.
Pgina 147
El mdulo implementado en Java corre en un servidor Jakarta-Tomcat-4.1.24. A continuacin se describe brevemente el proceso de instalacin de un servidor de aplicaciones Tomcat: ? Descarga el servidor de aplicaciones de Internet. Esto es posible debido a ? que el servidor de aplicaciones Tomcat es GNU, es decir software libre.
Y el archivo que fue descargado para la implementacin del proyecto fue: jakarta-tomcat-4.1.24.tar.gz ? Instalacin. La instalacin del servidor de aplicaciones Tomcat, nicamente ? hay que descomprimirlo y desempaquetarlo en el directorio correcto. tar zxvf jakarta-tomcat-4.1.24.tar.gz ? Inicializar el servidor. Para arrancar el servidor se debe teclear la siguiente ? instruccin: $TOMCAT_HOME/bin/startup.sh ? Configuraciones adicionales. Para configurar el servidor ha sido necesario ? modificar varios ficheros.
Por un lado se ha aadido un servidor web, que escucha en el puesto 2345 (debido a que para que escuche en el puerto 80, es necesario arrancarlo con permisos de root, de los cuales no disponemos). Para ello se modifico el fichero: $TOMCAT_HOME/conf/server.xml
Otro fichero que se tuvo que modificar fue aquel en el cual se establece el classpath, debido a que en el proyecto se utilizan mdulos que tenan que ser aadidos al classpath para que funcionase el sistema. Dicho fichero fue: $TOMCAT_HOME/bin/setclasspath.sh
Pgina 148
Respecto a la los scrips en WebL, fue necesaria la creacin del entorno para la ejecucin de estos. WebL se encuentra implementado en Java, luego requiere que en el sistema este instalado el JDK de Java. Para ejecutar scripts en WebL nicamente es necesario utilizar un mdulo disponible en la red denominado WebL.jar. Dicho mdulo es gratuito y se puede descargar en:
http://research.compaq.com/SRC/WebL/
Estos scripts en WebL, utilizan tambin una serie de mdulos con funciones, dichos mdulos son: ? Forms.webl: Aporta utilidades que permiten la automatizacin del tratamiento ? de los formularios de las pginas HTML. ? Xpath.webl: Aporta utilidades que permiten la utilizacin de expresiones Xpath ? en el tratamiento de las pginas HTML.
Por otro lado, para el tratamiento automtico de las pginas devueltas por los servidores, se utiliz un programa en C que se encargaba de la limpiar las pginas html para que el formato de esta sea correcto. Dicho programa se denomina tidy, y para su funcionamiento fue necesario compilarlo a partir del cdigo fuente.
Estructura de Directorios
Uno de los aspectos ms importantes de la instalacin de la aplicacin es la estructura de directorios, ya que esta ser la que determinar donde se encuentran los ficheros que forman el sistema. Del mismo modo que existen dos mdulos tecnolgicos, tambin existen dos estructuras de directorios, cada una asociada a su tecnologa. ? Servidor de Aplicaciones Jakarta-Tomcat ?
La mayor parte de la aplicacin se encuentra en el servidor de aplicaciones, en concreto en la instancia web creada para dicho propsito.
$JAKARTA_HOME/webapps/empleo
En dicha ubicacin se encuentran: . ./img Las pginas HTML estticas Las imgenes utilizadas por la aplicacin
Pgina 149
./scripts ./xml
Los ficheros css utilizados en el portal Directorio en el cual se encuentran los ficheros xml en los cuales se almacena la informacin del sistema. Usuarios registrados, bsquedas frecuentes, puestos publicados por las empresas...
./xml/cache ./xsl
Ficheros xml con la memoria cach del sistema. Directorio en el cual se encuentran las plantillas xsl que son utilizadas para tratar las respuestas del servidor a pginas html. Si se desea cambiar la imagen del sistema, nicamente hay que modificar estos ficheros, sin necesidad de cambiar las clases del sistema.
./ejecucion
Directorio en el cual se almacenan los resultados obtenidos de las bsquedas para su tratamiento.
./ini
Los ficheros ini que permiten configurar la aplicacin. Existen mltiples ficheros, unos generales denominados agregador y empresas, que indica los distintos portales con los cuales trabaja la aplicacin y luego dos para cada portal, con las expresiones Xpath, uno para la bsqueda de puestos y otro para la bsqueda de empresas.
./WEB-INF/classes
? WEBL ?
Los ficheros asociados a la comunicacin con los portales de empleo, realizados en WebL se encuentran situados en el directorio:
$WEBL_HOME/
./log
Directorio en el cual se almacenan los logs resultantes de la interaccin con los portales de empleo
Pgina 150
Pgina 151
En General (Prioridad 1) Existencia de texto equivalente para todo elemento no textual (a travs de alt, longdesc o en el contenido del elemento). Esto incluye imgenes, representaciones grficas del texto, mapas de imgenes, animaciones, botones, sonidos... Toda la informacin transmitida a travs de colores, tambin disponible sin ellos. Identificacin de los cambios de idioma original del texto. Documento organizado, de modo que pueda ser visualizado sin hojas de estilo. Los equivalentes de los contenidos dinmicos son actualizados cuando cambian dichos contenidos dinmicos Hasta que las aplicaciones de usuario, se debe evitar provocar parpadeo en la pantalla. Utilice el lenguaje ms claro y simple para el contenido del sitio Si se utilizan Imgenes o Mapas de Imgenes (Prioridad 1) Debe existir un vnculo redundante por cada zona de actividad del mapa de imgenes. Los mapas de imgenes deben ser controlados por el cliente y no por el servidor. Si se utilizan tablas (Prioridad 1) En las tablas de datos se deben identificar los encabezamientos de fila y columna Para las tablas de datos que tienen ms de dos niveles lgicos de encabezamientos de filas o columna, se deben utilizar marcadores que asocien las celdas de encabezamiento con las de datos. Si se utilizan Frames (Prioridad 1) Se debe titular cada marco para facilitar la identificacin y navegacin de los mismos Si se utilizan Applets y Scripts (Prioridad 1)
Si OK
No
N/A
OK
OK OK
OK
OK
OK Si OK No N/A
OK
Si OK
No
N/A
OK
Si OK
No
N/A
Si
No
N/A
Pgina 152
Las pginas deben seguir siendo utilizables cuando se desconecte o no se soporte la ejecucin de scripts, applets u otros objetos de programacin.
Tabla 24 Puntos de Verificacin de Prioridad 1
OK
En General (Prioridad 2) Las combinaciones de colores de fondo y primer plano deben tener suficiente contraste para que sean percibidas por personas con deficiencias de percepcin de color o por pantallas en blanco y negro. Cuando exista un marcador apropiado, utilizacin del marcador en lugar imgenes para transmitir informacin, Los documentos deben estar validados por las gramticas formales publicadas. Utilizacin de hojas de estilo para controlar la maquetacin y la presentacin. Utilizacin de unidades relativas en lugar de absolutas en la especificacin de los atributos de los marcadores de texto y en los valores de las hojas de estilos. Utilizacin de elementos de encabezamiento para transmitir la estructura lgica y utilizacin de acuerdo con la especificacin Marcacin de las listas y los puntos de estas correctos. Contenidos dinmicos accesibles, o existencia de una pgina o presentacin alternativas. No debe darse un parpadeo del contenido (cambios de presentacin en tiempos regulares). No deben realizarse pginas que se carguen automticamente de forma peridica. No se debe provocar apariciones repentinas de ventanas o cambios de ventana sin informar al usuario. Utilizacin de tecnologas W3C cuando estn disponibles y sean apropiadas para la tarea. No utilizacin de caractersticas desaconsejadas por las tecnologas W3C Divisin de bloques largos de informacin en bloques ms manejables cuando sea natural y apropiado. Identificacin clara del objetivo de cada vnculo. Proporcin de metadatos para aadir informacin semntica a las pginas.
Si OK
No
N/A
OK
OK
OK
OK
OK
OK OK
OK
OK
OK
OK
OK
OK
OK OK
Pgina 153
Proporcin de informacin acerca de la maquetacin general del sitio, cuando este sea medianamente complejo. Utilizacin mecanismos de navegacin coherentes Si se utilizan Tablas (Prioridad 2) No se deben utilizar tablas para maquetar, al menos que tenga sentido cuando se alinee. Si se utilizan tablas para maquetar, no se deben utilizar marcadores estructurales para realizar un formateo visual. Si se utilizan Marcos (Prioridad 2) Debe existir una descripcin de los marcos y de cmo se relacionan estos entre s, si no resulta obvio con el ttulo del marco. Si se utilizan Formularios (Prioridad 2) Cada etiqueta debe estar colocada adecuadamente, y debe existir una asociacin implcita entre la etiqueta y el campo del formulario. Debe existir una asociacin explcita entre las etiquetas y los campos del formulario. Si se utilizan Applets o Scripts (Prioridad 2) Los manejadores de eventos deben ser entradas independientes del dispositivo. Se deben evitar los movimientos en las pginas. Cada elemento con su propia interfaz debe poder manejarse de forma independiente del dispositivo. Para los scripts, se deben especificar manejadores de eventos lgicos, que manejadores de eventos dependientes del dispositivo.
Tabla 25 Puntos de Verificacin de Prioridad 2
OK
OK Si OK No S/N
OK
Si OK
No
S/N
Si OK
No
S/N
OK
Si OK
No
S/N
OK OK
OK
Pgina 154