5. Resultados 55
5.4. Iteración 2: Modelo de la base de datos y módulos de acceso, importación y
DiagramaControlIncremento: La misma finalidad que la tabla anterior, solo que para el proceso que genera un diagrama de control teniendo en cuenta el “peso” de los días.
PuntosDiagramaControl: Tabla que almacena la productividad de cada día que será utilizada por unscriptpara generar un diagrama de control.
PuntosDiagramaControlIncremento: Tabla que almacena la productividad diaria pa- ra ser utilizada por unscriptpara generar un diagrama de control. Se diferencia de la anterior tabla en que el proceso que utiliza estos datos tiene en cuenta la configuración del “peso” de los días.
PrediccionSemanas: Contiene toda la información que se mostrará al usuario cuando realice predicciones de futuras semanas de trabajo, como la productividad o el tiempo que invertirá en cada día de la semana.
RecomendacionEstres: Almacena la última recomendación acerca del estrés genera- da por cada usuario.
FestivosYVisperas: En esta tabla se almacenan los días del año que son festivos y vísperas de festivos en el territorio español.
usuarios Nombre varchar(200) Contraseña text
Email text
Telefono text
FechaNacimiento text
Foto blob
Activo int
configuracionPesosDias
Id int
NombreUsuario varchar(200)
L double
M double
X double
J double
V double
S double
D double
Festivos double
VisperasFestivos double
diagramaControl
Id int
MediaTiempoTotal double LimiteSuperior double LimiteInferior double NombreUsuario varchar(200)
diagramaControlIncremento NombreUsuario varchar(200) MediaIncremento double LimiteSuperior double LimiteInferior double
Id int
festivosYVisperas
Día int
Mes int
Descripcion text
Tipo text
Id int
puntosDiagramaControl
Fecha date
Punto double
NombreUsuario varchar(200)
Id int
puntosDiagramaControlIncremento
Fecha date
Punto double
NombreUsuario varchar(200)
Id int
recomendacionEstres NombreUsuario varchar(200) Recomendacion text
Id int
rolesUsuario
Id int
NombreUsuario varchar(200)
Rol text
tareas
Nombre text
Fecha date
Naturaleza text
Fase text
NombreProyecto text NombreUsuario varchar(200)
Inicio time
Fin time
TotalTiempo double
TiempoEfectivo double Interrupciones double Proyecto varchar(200) Cliente varchar(200)
Id int
tareasDias
Fecha date
InicialDia text
NumeroSemana int
Amplitud text
TotalRegistros text Interrupciones double TiempoEfectivo double TareasCompletadas text
Año int
NombreUsuario varchar(200)
Tipo text
M1TotalTareas text M2TotalTareas text T1TotalTareas text T2TotalTareas text NTotalTareas text TiempoTotal double
GestionDias text
Id int
prediccionSemanas NombreUsuario varchar(200)
Tipo text
MediaTiempoTotal double DesvTiempoTotal double MediaTiempoEfectivo double DesvTiempoEfectivo double
MediaL double
DesvL double
MediaM double
DesvM double
MediaX double
DesvX double
MediaJ double
DesvJ double
MediaV double
DesvV double
MediaSD double
DesvSD double
Factor1 text
Factor2 text
Factor3 text
EstadoActualEstres text
Id int
Figura 5.17: Diagrama de la base de datos
Como se ha dicho anteriormente se han desarrollado tres módulos El primero de ellos es el deacceso, que está compuesto por los procesos de registro y acceso a la aplicación. La primera vez que un usuario utiliza la herramienta tiene que registrarse antes de poder acceder a la aplicación, eligiendo un nombre de usuario único. En las figuras 5.18 y 5.19 se puede ver un posible formulario de estos procesos. Tras la realización de estos procesos, se detectó que un usuario podía acceder a páginas de la aplicación sin estar autentificado. Por tanto fue necesario añadir una nueva capa de seguridad adicionando al proyectoSpring Security, que es unframeworkque proporciona identificación de usuarios y autorización al sistema5. En la sección D.0.3 se puede encontrar la configuración más relevante definida para el uso de este framework.
Figura 5.18: Prototipo de formulario de login
Figura 5.19: Prototipo de formulario de registro
5http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/
DispatcherServlet.html
A continuación se diseñó un proceso que integra registros de tareas a la aplicación. Di- chos registros deben ser exportados de herramientas de time tracking, y para este proyecto se han seleccionado tres, que sonToggl,PaymoyPrimaERP. El anexo F contiene un ma- nual para exportar de forma correcta los registros, y que así estos sean compatibles con la aplicación.
Cuando los registros son importados a la herramienta, se realiza un proceso donde éstos son agregados por días y se etiqueta a cada día en función de su productividad. Para el etiquetado de los días se usa un motor de reglas llamadoEasyRules6. Se ha decidido hacer uso de esta librería por su alta flexibilidad y simplicidad de integración, ya que el sistema de razonamiento se construye con el mismo lenguaje que el del sistema, en este casojava. Para conseguir una mayor flexibilidad de la aplicación, las reglas se describen en un ficheroXML
y la caracterización de los patrones en ficherosproperties. De esta manera el usuario puede realizar cambios en las reglas sin tener que modificar el código fuente de la aplicación.
El último módulo creado en esta iteración es el deconfiguración, cuya finalidad es que el usuario puede establecer por defecto elpeso de los días, es decir, el total de horas que emplea en realizar tareas cada día de la semana, distinguiendo también los días que se consideran vísperas de festivo y festivos. Además, se han establecido por defecto algunos de los días que son festivos y vísperas de festivo (ver tabla 5.10).
Día Mes Descripción
01 Enero Año nuevo
06 Enero Día de Reyes 01 Mayo Día del trabajador 12 Octubre Día de la Hispanidad 01 Noviembre Día de todos los Santos 06 Diciembre Día de la Constitución 08 Diciembre La Inmaculada Concepción 25 Diciembre Natividad del Señor
Tabla 5.10: Días marcados como festivos en el territorio español
6http://www.easyrules.org/index.html