Universitat Oberta de Catalunya TFC - J2EE Gestió del temps Alumne: Jordi Tribó Villaró Enginyeria Tècnica d'Informàtica de Sistemes Tutor: Albert Grau Perisé Gener 2013 TFC - J2EE 2 Gestió del temps 1 AGRAÏMENTS A l'Albert Grau, pels seus consells, suport i ànims durant la realització d'aquest projecte. Als companys de la UOC, especialment als que han compartit els seus dubtes i per als que han ofert les seves sugerències per a solventar-los. Als meus companys de feina, que m'han ofert la seva experiència alhora d'escollir el framework més idoni. A l'Anton Not, que m'ha ajudat en la correcció del text de la memòria i la presentació. I a la Somsri, a qui sempre li deia que estava molt enfeinat en aquest projecte. Aquest treball es distribueix sota llicència Creative Commons CC BY-SA 3.0 La llicència completa es pot consultar a http://creativecommons.org/licenses/by-sa/3.0/deed.ca Memòria 2 de 54 14/01/2013 TFC - J2EE 3 Gestió del temps 2 RESUM En el següent document es descriu el desenvolupament d'una aplicació de gestió del temps com a treball de final de carrera en l'àrea de J2EE. El producte obtingut és capaç de registrar els marcatges d'entrada i sortida dels col·laboradors i sol·licitar autoritzacions d'absència. També els hi permet consultar la seva planificació, marcatges realitzats, hores treballades i incidències detectades. Cada treballador té associat un responsable, que és el qui a la vegada pot accedir a l'aplicació per consultar les dades dels seus col·laboradors. També compta amb usuaris administradors, els quals poden consultar qualsevol treballador, gestionar els usuaris i els seus rols, i crear i modificar els torns i patrons de dies. Es tracta d'una aplicació web client-servidor, desenvolupada amb el llenguatge de programació Java i seguint els estàndards de programació J2EE. El framework utilitzat ha estat Java Server Faces, versió 2, tot i que per als elements de la interfície gràfica s'ha comptat amb la llibreria PrimeFaces, versió 3.4. La persistència s'ha gestionat amb les interfícies que ofereix JPA, utilitzant alhora el contenidor de EJB com a model per a implementar el accés a les dades. El servidor d'aplicacions J2EE on s'ha desplegat l'aplicació és el JBoss Application Server 7.1, utilitzant com a sistema de gestió de bases de dades relacional el MySQL 5.5. Els principals apartats que constitueixen la memòria són: • Motivació a l'hora d'escollir l'àrea del TFC i el tipus de programari desenvolupat. • Objectius i funcionalitats que es pretenen cobrir. • Planificació del projecte i metodologia emprada per a la construcció del mateix. • Anàlisi dels casos d'ús. • Disseny de l'arquitectura, entitats utilitzades per a representar el model i les taules creades per a suportar la persistència de les entitats. • Exemples de les pantalles de la interfície gràfica i observacions de la implementació. • Conclusions i valoracions. • Annex amb les instruccions d'instal·lació de l'aplicació. Paraules clau: Java, J2EE, Java EE, JPA, Persistència, JSF, Java Server Faces, MVC, EJB, Enterprise JavaBeans, MySQL, Gestió del temps, Control Horari, TFC, PrimeFaces. Memòria 3 de 54 14/01/2013 TFC - J2EE 4 Gestió del temps 3 ÍNDEX Índex de continguts 1 AGRAÏMENTS..........................................................................................................................2 2 RESUM.....................................................................................................................................3 3 ÍNDEX.......................................................................................................................................4 4 INTRODUCCIÓ .......................................................................................................................8 4.1 Context..............................................................................................................................8 4.2 Motivació i Objectius..........................................................................................................9 4.2.1 Motivació....................................................................................................................9 4.2.2 Objectius..................................................................................................................10 4.3 Requeriments previs........................................................................................................10 4.3.1 Tecnològics..............................................................................................................10 4.3.2 Funcionals................................................................................................................11 4.4 Metodologia: Desenvolupament iteratiu i incremental......................................................11 4.5 Planificació.......................................................................................................................14 5 ANÀLISI..................................................................................................................................16 5.1 Actors del sistema............................................................................................................16 5.1.1 Usuari........................................................................................................................16 5.1.2 Col·laborador.............................................................................................................16 5.1.3 Responsable.............................................................................................................16 5.1.4 Administrador............................................................................................................16 5.2 CASOS D'ÚS...................................................................................................................17 5.2.1 Diagrama casos d'ús ................................................................................................18 5.2.2 Descripció casos d'ús................................................................................................18 6 DISSENY................................................................................................................................24 6.1 Disseny arquitectura........................................................................................................24 6.1.1 Plataforma Java EE...................................................................................................24 6.1.2 Patrons de disseny....................................................................................................25 6.2 Entitats del sistema..........................................................................................................26 6.2.1 Diagrama de classes de les entitats..........................................................................26 6.2.2 Descripció de les entitats..........................................................................................27 6.3 Disseny de base de dades...............................................................................................28 6.3.1 Diagrama EER..........................................................................................................28 6.4 Organització dels paquets................................................................................................30 Memòria 4 de 54 14/01/2013 TFC - J2EE 5 Gestió del temps 6.5 Diagrames d'estat............................................................................................................31 6.5.1 Diagrama d'estat d'una sol·licitud..............................................................................31 6.6 Diagrames de seqüència.................................................................................................32 6.6.1 Diagrama de seqüència de l'autenticació..................................................................32 6.7 Càlcul dels comptadors....................................................................................................33 6.8 Vista – Interfície gràfica de l'usuari...................................................................................35 6.8.1 Pantalla inicial amb l'autenticació..............................................................................35 6.8.2 Pantalla canvi de contrasenya...................................................................................36 6.8.3 Pantalla marcatge entrada/sortida.............................................................................36 6.8.4 Pantalla amb la planificació.......................................................................................37 6.8.5 Pantalla d'incidències................................................................................................38 6.8.6 Pantalla acumulats....................................................................................................38 6.8.7 Pantalla sol·licituds....................................................................................................39 6.8.8 Opcions de menú del responsable............................................................................39 6.8.9 Pantalla amb el llistat de col·laboradors del responsable..........................................40 6.8.10 Opcions de menú de l'administrador......................................................................40 6.8.11 Pantalla de gestió dels usuaris................................................................................41 6.8.12 Pantalla de gestió de les dades i rols d'un usuari...................................................41 6.8.13 Pantalla de l'admin. amb el llistat dels col·laboradors.............................................42 6.8.14 Pantalla amb la planificació de torns del col·laborador...........................................42 6.8.15 Pantalla amb el llistat de marcatges.......................................................................43 6.8.16 Pantalla de gestió dels marcatges d'un dia............................................................43 6.8.17 Pantalla de gestió de torns.....................................................................................44 6.8.18 Pantalla de gestió de patrons de dies.....................................................................44 6.8.19 Pantalla d'assignació de torns en un patró.............................................................44 7 IMPLEMENTACIÓ..................................................................................................................45 7.1 Eines utilitzades...............................................................................................................45 7.2 Notes de la implementació...............................................................................................46 7.2.1 Internacionalització....................................................................................................46 8 AMPLIACIONS EN VERSIONS FUTURES............................................................................47 9 CONCLUSIONS......................................................................................................................48 10 GLOSSARI...........................................................................................................................49 11 BIBLIOGRAFIA.....................................................................................................................50 12 ANNEX – INSTAL·LACIÓ DE L'APLICACIÓ.........................................................................51 12.1 Base de dades...............................................................................................................51 12.1.1 Instal·lació...............................................................................................................51 Memòria 5 de 54 14/01/2013 TFC - J2EE 6 Gestió del temps 12.1.2 Configuració............................................................................................................51 12.2 Java...............................................................................................................................52 12.2.1 Instal·lació...............................................................................................................52 12.3 Servidor JBoss...............................................................................................................52 12.3.1 Instal·lació...............................................................................................................52 12.3.2 Configuració............................................................................................................52 12.3.3 Posta en marxa.......................................................................................................53 12.4 Aplicació web.................................................................................................................53 12.4.1 Deploy WAR............................................................................................................53 12.5 Eclipse...........................................................................................................................54 12.5.1 JBoss Tools.............................................................................................................54 12.5.2 JBoss Server...........................................................................................................54 12.5.3 Importació projecte..................................................................................................54 12.5.4 Afegir projecte al servidor........................................................................................54 Memòria 6 de 54 14/01/2013 TFC - J2EE 7 Gestió del temps Índex d'il·lustracions Fig. 1: Cicle del Desenvolupament Iteratiu i Incremental...........................................................13 Fig. 2: Diagrama de Gantt..........................................................................................................15 Fig. 3: Diagrama de casos d'ús..................................................................................................18 Fig. 4: Arquitectura de les capes del MVC implementat.............................................................25 Fig. 5: Diagrama de classes entitats..........................................................................................26 Fig. 6: Diagrama EER de la base de dades...............................................................................29 Fig. 7: Diagrama d'estats d'una sol·licitud..................................................................................31 Fig. 8: Diagrama de seqüència de l'autenticació........................................................................32 Fig. 9: Diagrama de classes de l'obtenció dels Acumulats.........................................................34 Fig. 10: Pantalla inicial d'autenticació........................................................................................35 Fig. 11: Validacions i missatges d'avis en l'autenticació.............................................................35 Fig. 12: Opcions de menú del Col·laborador..............................................................................35 Fig. 13: Pantalla de canvi de contrasenya.................................................................................36 Fig. 14: Pantalla de marcatge....................................................................................................36 Fig. 15: Pantalla amb la planificació...........................................................................................37 Fig. 16:Pantalla amb el llistat de les últimes incidències............................................................38 Fig. 17: Pantalla acumulats anuals............................................................................................38 Fig. 18: Pantalla de sol·licituds del col·laborador.......................................................................39 Fig. 19: Opcions de menú del responsable................................................................................39 Fig. 20: Pantalla amb el llistat de col·laboradors del responsable..............................................40 Fig. 21: Opcions de menú de l'administrador.............................................................................40 Fig. 22: Pantalla de gestió d'usuaris..........................................................................................41 Fig. 23: Pantalla d'edició de les dades d'un col·laborador..........................................................41 Fig. 24: Pantalla amb la planificació de torns del col·laborador..................................................42 Fig. 25: Pantalla de llistat de marcatges....................................................................................43 Fig. 26: Pantalla de gestió dels marcatges................................................................................43 Fig. 27: Pantalla de gestió de torns............................................................................................44 Fig. 28: Pantalla de gestió dels patrons de dies.........................................................................44 Fig. 29: Pantalla d'assignació de torns en un patró....................................................................44 Memòria 7 de 54 14/01/2013 TFC - J2EE 8 Gestió del temps 4 INTRODUCCIÓ 4.1 Context En moltes organitzacions s'utilitzen aplicacions de gestió del temps amb l'objectiu d'efectuar un control de la presència i de les hores treballades dels col·laboradors. A més, serveixen per a gestionar la planificació de les vacances anuals i les absències autoritzades, com ara les baixes laborals, gestions professionals, etc. A banda dels mateixos treballadors i els seus responsables, el departament que es pot beneficiar més directament d'un projecte d'aquest tipus és el de RRHH, per a la comptabilitat de les nòmines. També l'oficina de Controlling del Departament de Finances pot utilitzar aquestes dades per a l'anàlisi dels costos laborals. Es pot trobar una gran varietat d'aplicacions i mòduls de control horari, que es poden dividir en tres tipus: • ERPs que incorporen el mòdul de control horari, per exemple el mòdul HCM de SAP1. Aquests mòduls tenen l'avantatge d'integrar-se fàcilment amb altres paquets del ERP, com poden ser el de finances i nòmines. • Paquets de programari específic per al control horari, com Smart2, o Kronos3. Tot i que solen oferir més funcionalitats que els mòduls d'un ERP, per a comunicar l'aplicació de control horari amb altres mòduls de l'organització s'han de crear/configurar les interfícies de comunicació que permetin l'intercanvi de dades. • Aplicacions fetes des de zero per a cobrir les necessitats d'una organització concreta. Dintre d'aquestes es troba l'aplicació que s'ha desenvolupat en aquest projecte. 1 SAP HCM: http://www.sap.com/spain/solutions/business-suite/erp/hcm/index.epx 2 Smart: http://www.smart-workforce.com/ 3 Kronos: http://www.kronosglobal.es/ Memòria 8 de 54 14/01/2013 TFC - J2EE 9 Gestió del temps 4.2 Motivació i Objectius 4.2.1 Motivació Porto ja bastant temps treballant en el desenvolupament d'aplicacions web client-servidor utilitzant el llenguatge de programació Java, bàsicament he treballat amb JSPs per a mostrar la interfície gràfica d'usuari i Servlets que han actuat com a controladors, segons el model MVC. No obstant, no havia treballat mai amb JSF i JPA/Hibernate, tampoc havia utilitzat el servidor de base de dades MySQL ni el servidor d'aplicacions JBoss. Es per això que vaig considerar que realitzar el TFC en l'àrea de J2EE hem seria útil per a conèixer aquestes tecnologies que són àmpliament utilitzades en projectes Web/Java. Les avantatges que ofereix la plataforma Java EE facilita el desenvolupament d'un projecte d'aquestes característiques. Les seves APIs permeten abstraure al desenvolupador de les tasques de baix nivell, que ja es troben implementades en l'estàndard. A més, es tracta d'una plataforma que s'utilitza àmpliament en l'àmbit empresarial, amb una comunitat de desenvolupadors força nodrida; els nombrosos fòrums de suport que hi ha a la xarxa faciliten la resolució de dubtes. També es pot consultar la nombrosa documentació tècnica existent sobre les APIs i els frameworks més populars basats en aquesta plataforma. Actualment m'encarrego de la gestió d'una aplicació de control horari, concretament d'un paquet de programari específic per aquesta finalitat. Al tractar-se d'un programari tancat, qualsevol possible canvi l'ha de gestionar la companyia propietària del mateix, amb els costos de temps i diners que això comporta. A més, és una aplicació generalista pensada per a ser utilitzada en diferents clients, les opcions d'adaptació que ofereix són limitades, fet que suposa un inconvenient alhora d'afegir funcionalitats addicionals per a una organització concreta. Així doncs, vaig pensar en la possibilitat d'intentar desenvolupar una aplicació específica de control horari des de zero, això em permetria avaluar de forma directa els coneixements necessaris que es requereixen i el cost en temps que suposa. També em permetria experimentar de primera mà els dubtes a l'hora d'efectuar el disseny i els problemes d'implementació que sorgeixen durant el desenvolupament. Memòria 9 de 54 14/01/2013 TFC - J2EE 10 Gestió del temps 4.2.2 Objectius Les funcionalitats que es pretenen cobrir en aquest projecte són: • Desenvolupament d'una aplicació web, de manera que l'accés a la mateixa sigui possible des de qualsevol dispositiu amb connexió a Internet o la xarxa corporativa interna d'una organització. En aquesta versió inicial, el client de la mateixa haurà de ser un navegador web, però l'ús de un framework com PrimeFaces ens pot permetre configurar l'aparença de les pàgines per a què es vegin de forma òptima en múltiples clients (ordinador, smartphone, tablet, etc..). • Gestió dels usuaris que poden accedir al sistema, definit el seu nivell d'accés a través de diferents rols. • Recollir els marcatges d'entrada i sortida dels usuaris. • Recompte de les hores treballades per dia, consulta dels marcatges realitzats i de les incidències. • Alta d'autoritzacions d'absència i de vacances. • Alta i modificació de torns horaris. • Alta i modificació de patrons horaris d'un període determinat. • Assignació i gestió dels patrons horaris d'un col·laborador. • Consulta de la planificació d'un col·laborador i gestió dels seus marcatges. A nivell de treball de l'àrea de J2EE, es pretenen cobrir els següents àmbits: • Coneixement d'algunes de les APIs d'aquesta plataforma, com ara JPA (Java Persistence Api), JSF (JavaServer Faces), CDI (Contexts and Dependency Injection), EJB (Enterprise JavaBean). • Desplegar l'aplicació dintre d'un servidor d'aplicacions Java EE 6 com el JBoss AS 7.1. • Estudi i ús de patrons de disseny aplicats en l'arquitectura J2EE. 4.3 Requeriments previs 4.3.1 Tecnològics Per abordar un desenvolupament d'aquest tipus es aconsellable tenir uns coneixements bàsics en les següents àrees: • Llenguatge de programació Java, també és recomanable estar familiaritzat en alguna API de l'estàndard J2EE. • Bases de dades relacionals. Memòria 10 de 54 14/01/2013
Description: