universidad de guayaquil facultad de ciencias...
Post on 17-Oct-2018
221 Views
Preview:
TRANSCRIPT
UNIVERSIDAD DE GUAYAQUIL
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
PROYECTO DE GRADO
Módulo de Recepción y Seguimiento de
Documentos
Previo a la Obtención del Título de:
INGENIERO EN SISTEMAS COMPUTACIONALES
Autores:
BENÍTEZ QUINATOA JOHNNY DALTHON
ORDÓÑEZ CAMPOVERDE VERÓNICA NATHALY
RONQUILLO FREIRE NORYIS ALBERTO
GUAYAQUIL-ECUADOR
Año: 2009
Lomo de la monografía
UG CISC
6to. C.G.
MÓDULO DE RECEPCIÓN Y SEGUIMIENTO
DE DOCUMENTOS
V. ORDÓÑEZ J. BENÍTEZ
A. RONQUILLO
TOMO I
2009
AGRADECIMIENTO
A Mis Padres
Porque gracias a su cariño, guía y apoyo he llegado a
realizar uno de los anhelos más grandes de la vida, fruto
del inmenso apoyo, amor y confianza que en mi se
depositó y con los cuales he logrado terminar mis
estudios profesionales que constituyen el legado más
grande que pudiera recibir y por lo cual les viviré
eternamente agradecido.
Con cariño y respeto
Alberto Ronquillo Freire
DEDICATORIA
Dedico este proyecto a mi familia y amistades las cuales
me ayudaron con su apoyo incondicional a ampliar mis
conocimientos y estar más cerca de mis metas
profesionales. Esto fue posible primero que nadie con la
ayuda de Dios, gracias por otorgarme la sabiduría y la
salud para lograrlo. Gracias a los intercambios y
exposiciones de ideas con mis compañeros y amigos de
estudios durante el proceso del seminario. También
especialmente a dos personajes nuevos en mi vida, mis
hijos: Luis Alberto y Dayanna Valentina
Dios los bendiga!!!
Alberto Ronquillo Freire
Tabla 3.3.2 Detalles de la Tabla Useratto.………..….………..…… 51
Tabla 3.3.3 Detalles de la Tabla Department…..….………..………… 52
Tabla 3.3.4 Detalles de la Tabla Document.………..………..……….. 54
Tabla 3.3.5 Detalles de la Tabla Privilege.……….….………..………. 55
Tabla 3.3.6 Detalles de la Tabla Directory……..….………..………… 56
Tabla 3.3.7 Detalles de la Tabla Audit.………..….………..…………... 57
CAPÍTULO 1
INTRODUCCIÓN.
Las redes informáticas son un requerimiento para el
funcionamiento óptimo de las empresas, y nos permiten
facilitar la comunicación y compartir recursos entre las
diferentes áreas de la organización.
Sistemas informáticos como programas o aplicativos
son desarrollados a diario basados en redes
organizacionales que logran optimizar las tareas
laborales de los usuarios.
2
El incremento de la información conlleva al manejo de gran cantidad de
documentos, por consiguiente la administración consume más tiempo y
recursos humanos por lo que la utilización de un sistema se vuelve cada vez
más necesaria.
1.1. Antecedentes.
En la mayoría de las empresas existe un procedimiento básico para la
administración de la documentación digital, que consiste en implementar un
servidor de archivos en el cual se configuran permisos para que los
diferentes tipos de usuarios hagan uso de la información, sin embargo, no
existe un procedimiento para el monitoreo y seguimiento de documentos que
le permita a los administradores llevar un control del movimiento de la
información.
Empresas como Microsoft o Xerox tienen sistemas que permiten realizar este
tipo de procedimiento, pero con un costo elevado en su implementación y
administración y algunas veces con requerimientos de adquisición de nuevo
hardware.
3
1.2. Solución a la problemática.
La propuesta para la solución al problema antes descrito, es el desarrollo de
un aplicativo basado en ambiente Web, el cual permitirá la recepción y
seguimiento de los documentos de la organización a través de una Intranet o
desde el Internet.
Uno de los objetivos de este sistema es tener en orden y actualizada la
respectiva documentación de la empresa. Además brindar una mayor
seguridad en el control, seguimiento y conservación de todos sus
documentos.
Contará con la elaboración automática de reportes que permitan conocer la
documentación que maneje la empresa. El acceso a la documentación será
según los permisos asignados a los usuarios
La herramienta cuenta con una interfaz gráfica e intuitiva, es decir; amigable
de fácil manejo para usuarios expertos e inexpertos, y su costo no será un
impedimento a la hora de adquirirlo.
Este producto se encuentra direccionado hacia todas las empresas públicas
o privadas; que cuenten con una infraestructura de red corporativa, y tengan
la necesidad de optimizar su proceso de administración de documentos.
4
1.3. Descripción del proyecto.
Nuestro proyecto parte de archivos digitalizados que se encuentran en un
dispositivo de almacenamiento. Estos archivos pueden ser subidos y
consultados en la Intranet desde cualquier equipo conectado a la red. Este
procedimiento lo realiza cualquier persona que tenga creado un usuario en el
sistema.
El ambiente está basado en una infraestructura de dominio Windows el cual
está compuesto por:
Un segmento de subred Clase C.
Un switch que permite la conexión de los equipos de la red.
Un equipo físico configurado con los siguientes servicios:
a. Un Controlador de Dominio, que se encarga de la autenticación y
autorización de los usuarios en el dominio.
b. Servidor DNS, que se encarga de la resolución de nombres de los
computadores en la red.
c. Un Servidor SMTP, encargado del envió de notificaciones vía
correo electrónico.
5
d. Para el direccionamiento IP no se utilizará el servicio DHCP, sino
que las direcciones se asignarán manualmente.
e. La maquina virtual se ejecutara desde una de las estaciones.
Un computador físico configurado con los siguientes servicios:
a. Un Servidor de Base de Datos, donde se almacena la información
del aplicativo.
b. Un Servidor Web que ejecuta el aplicativo.
Computadores físicos, desde donde se puede acceder a la Intranet con
un navegador de Internet y donde se ejecutan los clientes de correo
electrónico.
Ver figura No. 1
6
Figura No. 1
7
1.4. Misión.
Implementar un sistema de colaboración que permita la recepción y
seguimiento de documentos de una manera eficaz y eficiente, para que el
administrador del sistema pueda realizar un control óptimo y por consiguiente
los usuarios mejoren la productividad operativa de la empresa.
1.5. Visión.
Entregar a las organizaciones la mejor herramienta de administración de
documentos utilizando tecnología informática, siendo el beneficio principal el
incremento de su productividad y competitividad en el mercado.
1.6. Objetivo general.
Desarrollar un aplicativo de colaboración basado en ambiente web, que sea
capaz de hacer el seguimiento de los documentos de la organización,
mediante la publicación de los mismos en un portal que podrá se accedido
desde la red interna de la empresa.
8
1.7. Objetivos específicos.
1. Acceso al sistema a través de un navegador web.
2. Acceso a la información de acuerdo a privilegios.
3. Almacenamiento de información centralizada en una base de datos.
4. Restricción del tamaño de los archivos.
5. Restricción del tipo de archivos.
6. Manejo del estado del archivos (activos, inactivos)
7. Notificaciones vía correo electrónico.
8. Reportes de la gestión del documento.
9. Criterios de búsqueda de documentos.
10. Reportes de la gestión del documento e impresión del mismo.
9
1.8. Alcances.
1. El ambiente de trabajo será un dominio Windows con Active Directory.
2. Los usuarios podrán acceder al sistema desde cualquier equipo de la
organización que cuente con un navegador de internet y que tenga los
respectivos privilegios, desde allí podrá revisar cualquier documento
publicado para él.
3. El navegador que se utilizará será Internet Explorer en sus versiones 6 o
7 y 8; Mozilla Firefox.
4. Los usuarios o grupos de usuarios podrán consultar, publicar y eliminar
los documentos de la Intranet, para esto serán validados los premisos
asignados.
5. La información se almacenará en un repositorio de base de datos, lo que
permitirá la administración centralizada de la misma, y su respectivo
mantenimiento.
6. Se controlará el tamaño de archivos que pueden ser publicados;
dependiendo del tipo de archivo se le asignarán cuotas lo que facilitará el
control del crecimiento de la información.
10
7. Debido a que existen tipos de archivos que pueden ser una amenaza a la
integridad del sistema como por ejemplo, .exe, .bat, .com, .vbs, .scr, etc.,
se implementará un filtro de tipo de extensiones permitidas.
8. Los usuarios propietarios según los privilegios que le de el usuario
administrador podrán asignar las veces que el destinatario puede leer el
archivo asignándole un número de lectura que al llegar al límite cambiará
del estado activo a inactivo, mientras el estado sea activo estará
disponible para múltiples lecturas y cuando sea inactivo ya no podrán ser
leído.
9. El usuario administrador podrán crear una interface personalizada para
cada usuario o grupo de usuario de acuerdo a las necesidades del
departamento o de la organización.
10. El usuario recibirá una notificación en su cuenta de correo electrónico
cuando un nuevo archivo sea publicado en la Intranet para él, este
mensaje incluirá el link del archivo para que sea accedido desde su
aplicativo de correos.
11. Se utilizará un servidor SMTP para el envió de las notificaciones a los
clientes de correo.
12. El acceso a los documentos vía Web se realizará dentro de la red local.
11
13. El sistema contará con un módulo de reportes los cuales mostrarán:
13.1. Cantidad de archivos publicados por día.
13.2. Cantidad de archivos publicados por semana.
13.3. Usuarios que leyeron los archivos.
13.4. Estatus de los archivos.
13.5. Publicado por:
13.5.1. Usuarios.
13.5.2. Fecha.
13.6. Reportes personalizados según filtros.
14. Se podrá realizar búsqueda y filtrado de documentos utilizando criterios
predefinidos.
15. Por tipo de archivo.
16. Por estatus de archivo.
17. Por quien lo publica
18. Por fecha.
19. Por nombre.
20. Por tamaño.
21. El sistema contará con un módulo de impresión que permitirá mostrar el
resultado de los reportes en un medio físico (papeles).
12
1.9. Ventajas.
Puede implementarse en pequeñas, medianas y grandes empresas.
Acceso rápido a la información del sistema.
El usuario no necesita instalar ningún componente de hardware ni de
software para acceder al sistema, a excepción del Internet Explorer que
todo equipo Windows tiene instalado por defecto.
El usuario está enterado de las actualizaciones del sistema.
Fácil manejo del sistema.
1.10. Desventajas.
Está diseñado para plataformas Windows.
1.11. Metodología.
Para la implementación de nuestra aplicativo utilizaremos la arquitectura de
tres capas, puesto que una de las ventajas es el desarrollo en varios niveles
y en caso de algún cambio sólo se lo realizará al nivel requerido sin tener
13
que realizar modificaciones en otros componentes. Este modelo permite
distribuir el trabajo entre los participantes del proyecto.
Las tres capas son:
Interfaz de usuario.
Reglas del negocio o Procesador de aplicaciones.
Manejador de base de datos.
La primera capa es la interfaz gráfica para el usuario, es decir, presenta el
sistema al usuario final, le muestra la información y se encarga de capturar
los datos del usuario para luego ser procesados. Esta capa se comunica
únicamente con la capa de negocio.
La segunda capa utiliza el servidor de aplicaciones Tomcat el cuál procesa
las páginas jsp y es el encargado de ejecutar el programa, recibe las
peticiones del usuario y envía las respuestas tras el proceso. Esta capa se
comunica con la capa de presentación, para recibir las solicitudes y
presentar los resultados, y con la capa de datos, para solicitar al gestor de
base de datos el almacenamiento recuperación de los mismos.
La tercera capa es un sistema de bases de datos encargado de almacenar
las configuraciones e información relacionadas a las seguridades. Está
14
formada por un gestor de bases de datos que realiza el almacenamiento de
datos, reciben solicitudes de inserción o recuperación de información desde
la capa de negocio.
1.12. Recursos.
1.12.1. Hardware
Dos Laptop con sistema Operativo Windows XP Profesional SP3.
Procesador Intel Core Duo 1.7 Ghz.
1 GB de memoria RAM.
Disco duro de 60 GB
Unidad de DVD RW
Un PC con Windows Server 2003 R2 SP2.
Procesador Intel PIV 2.8 Ghz.
1 GB de memoria RAM.
Disco duro de 120 GB
Unidad de DVD RW
Una estación virtual con Windows XP Profesional SP2 que será
utilizada como equipo cliente que podrá subir y consultar los
15
documentos y recibirá las notificaciones en el cliente de correos
Outlook.
Una servidor virtual con Windows Server 2003 R2 SP2 donde
ejecutará el controlador de dominio y los servicios SMTP y DNS.
Monitor a color CRT 15”
Impresora de inyección.
Ruteador inalámbrico 4 puertos.
1.12.2. Software:
Para la elaboración de este producto utilizaremos las siguientes
herramientas:
Plataforma Windows con sus sistemas operativos:
Windows Server 2003 SP2
Windows XP Profesional SP3
Base de datos PostgreSQL 8.3
Lenguaje de programación Java con JSP, JSF
Editor JAVA Eclipse.
16
Servidor Tomcat 6.0.
Adobe Reader 6 o superior.
Microsoft Office 2003 o 2007.
Internet.
1.12.3. Humano:
Para el desarrollo de la aplicación intervendrá el siguiente recurso
humano:
Verónica Ordóñez Campoverde.
Alberto Ronquillo Freire.
Johnny Benítez Quinatoa.
17
1.13. Presupuesto:
El presupuesto calculado para la elaboración del proyecto es el siguiente:
1.13.1. Software:
Los principales componentes de software a utilizar en el aplicativo son
open source:
La herramienta de programación JAVA, el editor Eclipse, el servidor
Tomcat y la base de datos PostGresSQL.
Los instaladores de los productos Adobe Reader es un producto
gratuito y fue descargado desde Internet.
Los instaladores y las licencias de los sistemas operativos fueron
facilitados por una empresa de venta de software.
Las licencias de Office son las que vienen instaladas en las PCs.
18
A continuación se presenta el detalle de los costos:
Descripción Costo de
licencia
Cantidad de
Licencias
Valor
Total
Sistema Operativo Windows Server 2003 $0.00 2 $0.00
Sistema operativo Windows XP Profesional $0.00 2 $0.00
Base de Datos PostgreSQL 8.3 $0.00 0 $0.00
Lenguaje de programación Java con JSP $0.00 0 $0.00
Editor de JAVA Eclipse $0.00 0 $0.00
Tomcat $0.00 0 $0.00
Adobe Reader 6,7,u 8 $0.00 0 $0.00
Microsoft Office 2003 o 2007 $0.00 2 $0.00
Internet $30.00 0 $270.00
Total $270.00
1.13.2. Hardware:
A continuación se presenta el detalle de los costos del hardware:
Descripción Costo Cantidad Valor Total
Case Tower ATX $30.00 1 $30.00
Disco Duro 120 GB $60.00 1 $60.00
Memoria RAM $35.00 1 $35.00
Mainboard BioStar $80.00 1 $80.00
Procesador Pentium IV 2.8GHz $120.00 1 $120.00
Monitor 15' $60.00 1 $60.00
Teclado, mouse $25.00 1 $25.00
Total $410.00
19
1.14. Estudio de factibilidad
En general los análisis de factibilidad más profundos, o los estudios de
factibilidad, se completan durante la fase de diseño de sistemas, en general
durante la consideración de la evaluación de las diferentes alternativas de
solución propuestas. Los estudios de factibilidad consideran la factibilidad
técnica, económica y operacional de cada alternativa, así como si el proyecto
es o no apropiado dados los factores políticos y otros del contexto
institucional.
1.14.1 Operacional
Esta factibilidad comprende una determinación de la probabilidad de que
el sistema funcione o se lo utilice para lo cual se lo está diseñando.
De acuerdo al estudio que hemos realizado en la etapa operacional
hemos considerado varios puntos importantes:
El producto a desarrollarse, en este caso el administrador de
documentos digitales no debe ser demasiado complejo tanto para los
usurarios de la organización y para los administradores del sistema, ya
que si lo es, los usuarios pueden ignorar el sistema o bien usarlo de
forma incorrecta.
20
El sistema puede hacer que los usuarios se resistan a él como
consecuencia de una técnica de trabajo, miedo a ser desplazados,
interés en el sistema antiguo u otras razones.
Un nuevo sistema en una organización puede introducir cambios
demasiados rápidos para permitir al personal adaptarse a él y aceptarlo.
Un cambio repentino que se ha anunciado, explicado y “vendido” a los
usuarios con anterioridad puede crear resistencia.
1.14.2 Mercado
Según las indagaciones realizadas por nuestro grupo, nos pudimos
percatar que en las mayorías de las empresas de nuestro país no
cuentan con un aplicativo que permitan el manejo y seguimiento de
documento, por lo que sería de mucha ayuda para ellos contar con una
plataforma de este tipo.
Si lugar a dudas hay organizaciones que cuentan con un software de
manejo de documentos y que por cierto son pocas en nuestro país,
adquieren estos productos a través de internet, en el cual los
proveedores tiene su sede en otros países. Debido a la distancia en
ciertas ocasiones es complicado contar con un soporte físico de dichos
21
productos y en caso de que se lo realizará incrementaría los costos ya
que la organización corre con los gastos de viajes, hospedaje y
alimentación de personal calificado de la herramienta.
Para nosotros es una ventaja desarrollar un de estos tipo de productos
en nuestro país ya que el campo no está muy explotado y a la vez se
pueda brindar soporte físico a un bajo costo e incluso llegar a firmar
contratos de mantenimiento de soporte a la herramienta.
1.14.3 Económica
Los estudios de factibilidad económica incluyen análisis de costos y
beneficios asociados con cada alternativa del proyecto
Si lo vemos desde el punto de vista de la creación del aplicativo los
costos serian bajos, en comparación al desarrollo de otros sistemas, ya
que nosotros utilizaríamos en su mayoría herramientas Open Source.
Desde el punto de vista del cliente nuestro aplicativo le ofrece todos los
beneficios antes mencionados y a un bajo costo económico.
22
1.14.4 Tecnológica
En esta factibilidad hemos tomado varios puntos en consideración:
Los recursos tecnológicos a utilizar en el aplicativo, no requieren
de mayores características físicas para su implementación, por lo que las
empresas no tendrán que preocuparse de actualizar sus equipos o
adquirir tecnología de punta.
Nuestro aplicativo es compatibles con cualquier interfaz de
software, ya que normalmente funciona en cualquier navegador
independientemente de la plataforma.
Al implementar una solución para una organización normalmente
se dará una capacitación técnica de gestión y administración al personal
que sea designado para dicho proyecto. Este personal no requerirá de
mayores conocimientos avanzados ya que la aplicación no lo exige
debido a la facilidad de su uso.
1.15. Cronograma de actividades.
A medida que se desarrolla la aplicación se presentarán cambios en el
cronograma que estarán reflejados en la sección anexos.
CAPÍTULO 2
2. ANÁLISIS
2.1. Levantamiento de información
Al realizar el estudio de campo acerca del uso e
importancia de la documentación en las
empresas, nos pudimos dar cuenta que muchas
empresas en el país no cuentan con un sistema
de administración de documentos; Y las pocas
que lo tienen cancelan un costo elevado por
licenciamientos.
24
Según nuestra investigación el proceso normal de la administración de
documentos en las organizaciones parte cuando un documento es
creado; primeramente es revisado por la persona encargada luego es
enviado al departamento de destino; si es en la misma empresa esto
se lleva personalmente lo que causa malestar en los empleados por el
motivo de falta de tiempo para terminar sus actividades diarias y si el
destinatario esta fuera de la empresa esto se hace mediante un
mensajero lo cual genera un gasto adicional a la empresa.
Dentro de una encuesta realizada a personas que laboran en
diferentes compañías se obtuvo los siguientes resultados:
√ El 80 % de los encuestados preferirían una oficina sin papeles, es
decir, más de la mitad de los encuestados están de acuerdo en
reducir al máximo los papeles en la oficina lo cual apertura un
nicho de mercado para nuestro sistema.
√ El 90% de los encuestados han manejado algún navegador de
Internet. Es decir, que no sería algo nuevo usar un navegador
para el ingreso al sistema.
25
√ Al preguntarles que dieran un costo aproximado acerca del valor
de un software con las características que nosotros ofrecemos los
entrevistados dieron costos muy elevados por lo que tenemos
muchas oportunidades de venderlo a un costo accesible.
2.2. Análisis de requerimientos
Los requerimientos parten desde que se ha creado el documento o
archivo, para lo cual es necesario el uso de papel asociado a imprimir
fotocopiar y archivar el documento lo cual genera un gasto a la
empresa, asimismo se necesita tiempo para buscar los documentos y
en caso de que fueran extraviados se necesita de más tiempo, para
volverlos a generar. La acumulación de documentos en los
archivadores ocupa espacios valiosos en las oficinas, mismos
espacios que pudieran ser mejor utilizados.
Nuestro sistema permitirá automatizar este proceso tedioso, como es
la administración de la documentación en una empresa, el usuario
podrá acceder al sistema con sólo su usuario y clave, el podrá subir y
enviar en la intranet un documento a cuantas personas se requiera, y
estas lo recibirán en tiempo real lo cual ahorra tiempo para la empresa
que hoy en día no es posible cuantificar.
26
Adicionalmente permite la conservación del documento y su
búsqueda de manera rápida, genera reportes de manera eficaz y
sumamente sencilla, muy fácil de manejar para usuarios principiantes,
avanzados y expertos en manejos de sistemas ya que cuenta con una
GUI muy amigable al usuario.
2.3. Análisis de riesgos
Uno de los riesgos a los que nos podemos enfrentar es el surgimiento
de nuevos requerimientos, es decir, una vez que vayamos
desarrollando el programa, nos demos cuenta que necesitamos
módulos adicionales lo que conllevaría a crear nuevos módulos e
integrarlos a última hora, por consiguiente nos faltaría tiempo para
desarrollar estos requerimientos. Esto se evitaría haciendo un buen
análisis de los requerimientos.
Otro riesgo es la falla total o parcial de los equipos que hemos
destinado para el desarrollo de nuestro sistema; ya que retrasaría en
gran manera el avance del proyecto. Este caso se podría evitar
teniendo protegido los equipos en todos los aspectos seguridades de
fallas eléctricas, mantenimiento a PC, etc.
27
2.4. Diagrama entidad relación
El Diagrama Entidad Relación de nuestro proyecto permite visualizar
la manera en que estará almacenada la información en la base de
datos; además muestra los atributos de las entidades (objetos), y
como estas están relacionadas dentro del sistema.
A continuación se detalla el diagrama:
DER
Figura 1.2 Diagrama Entidad Relación
28
2.5. Diagrama de flujo de procesos
2.5.1. Flujo de procesos:
En el diagrama de flujo de procesos mostramos la secuencia de
pasos, entradas y salidas de todos los procesos involucrados en
el sistema. Entre los múltiples procesos tenemos el ingreso,
registro, del usuario administrador y usuario cliente, consulta,
eliminación y modificación del documento, tal como se muestra
a continuación:
2.5.2. Procesos utilizados en la Intranet
2.5.2.1. Proceso del usuario Administrador:
Ingreso a la Intranet.
Consultar.
Sacar reportes.
Imprimir reportes.
Crear usuario.
Eliminar usuario.
Actualizar usuario.
Subir documentos.
Eliminar documentos.
Cambiar estatus del documento.
29
Usuario valido
Administrador
Ingreso a la
Intranet
Si
No Error de login
Menu de
Opciones
Administración
de usuarios
Opciones
de usuario
Crear usuario
Actualizar
usuario
Eliminar
usuario
Administración
de
documentos
Opciones de
documentos
Subir
documento
Cambiar
estatus
Eliminar
documento
Sacar
Reportes
Imprimir
Consultar
Fin
Fin
Fin
Fin
Figura 1.3 Proceso Usuario Administrador
30
2.5.2.2. Proceso de usuario Cliente:
Ingreso a la Intranet.
Consultar.
Sacar reportes.
Imprimir reportes.
Subir documentos.
Eliminar documentos.
Cambiar estatus del documento.
31
Usuario valido
Cliente
Ingreso a la
Intranet
Si
No Error de login
Menu de
Opciones
Administración
de
documentos
Opciones de
documentos
Subir
documento
Cambiar
estatus
Eliminar
documento
Sacar
Reportes
Imprimir
Consultar
Fin
Fin
Fin
Figura 1.4 Proceso Usuario no Administrador
32
2.6. Diagrama de casos de usos
El Diagrama de Casos de Uso es la representación gráfica del
comportamiento de nuestra Intranet y muestra como esta es vista y
utilizada por los usuarios.
2.6.1. Caso de uso 1:
Ingresar a la Intranet (Usuario Administrador)
Primer nivel:
Ingresar a la Intranet
Administrar Usuarios
Administrar
Documentos
Sacar Reportes
Consultar
Usuario Administrador
33
Segundo nivel:
Aceptar Usuario
Ingresar a la Intranet
Rechazar Usuario
Actualizar UsuarioAdministrar Usuario
Crear Usuario
Eliminar Usuario
Eliminar DocumentoAdministrar
Documentos
Subir Documento
Cambiar Estatus
Reportes Imprimir
34
Descripción de casos de uso 1
Primer nivel:
Nombre: Ingresar a la Intranet
Actores: Usuario del Sistema (Administrador)
Función: Permitir el ingreso a la Intranet
Descripción: El usuario Administrador ingresa al sistema
luego de haberse autenticado como tal, los
datos requeridos serán los siguientes:
1. Ingreso del nombre de usuario.
2. Ingreso de la clave.
Tabla 1.1 Ingresar a la Intranet
Nombre: Administrar Usuario
Actores: Usuario del Sistema (Administrador)
Función: Permitir el acceso al módulo de usuarios
Descripción: El usuario Administrador puede realizar las
siguientes tareas:
1. Creación de un nuevo usuario.
2. Actualizar los datos de un usuario existente.
3. Eliminar un usuario existente.
Tabla 1.2 Administrar Usuario
35
Nombre: Administrar Documentos
Actores: Usuario del Sistema (Administrador)
Función: Permitir el acceso al módulo de documentos.
Descripción: El usuario Administrador puede realizar las
siguientes tareas:
1. Subir un nuevo documento.
2. Eliminar un documento existente.
3. Cambiar el estatus de un documento
existente.
Tabla 1.3 Administrar Documentos
Nombre: Consultar
Actores: Usuario del Sistema (Administrador)
Función: Permitir el acceso al módulo de consultas.
Descripción: El usuario Administrador tiene acceso a la
búsqueda de documentos según los criterios
definidos:
1. Por fecha.
2. Por tipo.
3. Por tamaño.
4. Por nombre.
5. Por estatus.
6. Por quien lo publica.
Tabla 1.4 Consultar
36
Nombre: Reportes
Actores: Usuario del Sistema (Administrador)
Función: Permitir el acceso al módulo de reportes.
Descripción: El usuario Administrador tiene acceso a la
creación de reportes de documentos según
los criterios definidos:
1. Por cantidad diaria.
2. Por cantidad semanal.
3. Por quienes leyeron.
4. Por quienes lo publican.
5. Por estatus.
6. Personalizados utilizando filtros.
Tabla 1.5 Reportes
Segundo nivel:
Nombre: Rechazar usuario
Actores: Usuario del Sistema (Administrador)
Función: Autenticación del usuario
Descripción: Si el usuario Administrador ingresa
incorrectamente el nombre de usuario o la
clave, el sistema rechazará la petición de
acceso a la página.
Tabla 1.6 Rechazar Usuario
37
Nombre: Aceptar usuario
Actores: Usuario del Sistema (Administrador)
Función: Autenticación del usuario
Descripción: Si el usuario Administrador ingresa
correctamente el nombre de usuario y la
clave, el sistema aceptará la petición de
acceso a la página.
Tabla 1.7 Aceptar Usuario
Nombre: Crear usuario
Actores: Usuario del Sistema (Administrador)
Función: Crear nuevo usuario
Descripción: El usuario Administrador puede crear una
nueva cuenta de usuario.
Tabla 1.8 Crear Usuario
Nombre: Actualizar usuario
Actores: Usuario del Sistema (Administrador)
Función: Actualizar usuario
Descripción: El usuario Administrador puede actualizar los
datos de una cuenta de usuario existente.
Tabla 1.9 Actualizar Usuario
38
Nombre: Eliminar usuario
Actores: Usuario del Sistema (Administrador)
Función: Eliminar usuario
Descripción: El usuario Administrador puede eliminar una
cuenta de usuario existente.
Tabla 1.10 Eliminar Usuario
Nombre: Subir documento
Actores: Usuario del Sistema (Administrador)
Función: Subir documento
Descripción: El usuario Administrador puede publicar un
nuevo documento en la Intranet.
Tabla 1.11 Subir Documento
Nombre: Eliminar documento
Actores: Usuario del Sistema (Administrador)
Función: Eliminar documento
Descripción: El usuario Administrador puede eliminar un
documento que haya sido publicado en la
Intranet.
Tabla 1.12 Eliminar Documento
39
Nombre: Cambiar estatus
Actores: Usuario del Sistema (Administrador)
Función: Cambiar el estatus del documento
Descripción: El usuario Administrador puede cambiar el
estatus de un documento que haya sido
publicado en la Intranet.
El estatus del documento puede ser:
1. Activo, el documento está habilitado para la
lectura, descarga y consulta.
2. Inactivo, el documento no está habilitado
para la lectura, descarga o consulta.
Tabla 1.13 Cambiar Estatus
Nombre: Imprimir
Actores: Usuario del Sistema (Administrador)
Función: Imprimir reporte
Descripción: El usuario Administrador puede acceder al
módulo de impresión, al cual es llevado luego
de obtener los reportes.
Tabla 1.14 Imprimir
40
2.6.2. Caso de uso 2:
Ingresar a la Intranet (Usuario Cliente)
Primer nivel:
Ingresar a la Intranet
Administrar
Documentos
Sacar Reportes
ConsultarUsuario Cliente
41
Segundo nivel:
Rechazar Usuario
Ingresar a la Intranet
Rechazar Usuario
Eliminar DocumentoAdministrar
Documentos
Subir Documento
Cambiar Estatus
Eliminar DocumentoAdministrar
Documentos
Subir Documento
Cambiar Estatus
Reportes Imprimir
42
Descripción de casos de uso 2:
Primer nivel:
Nombre: Ingresar a la Intranet
Actores: Usuario del Sistema (Cliente)
Función: Permitir el ingreso a la Intranet
Descripción: El usuario Cliente ingresa al sistema luego de
haberse autenticado como tal, los datos
requeridos serán los siguientes:
1. Ingreso del nombre de usuario.
2. Ingreso de la clave.
Tabla 2.1 Ingresar a la Intranet
Nombre: Administrar Documentos
Actores: Usuario del Sistema (Cliente)
Función: Permitir el acceso al módulo de documentos.
Descripción: El usuario Cliente puede realizar las
siguientes tareas:
1. Subir un nuevo documento.
2. Eliminar un documento existente.
3. Cambiar el estatus de un documento
existente.
Tabla 2.2 Administrar Documentos
43
Nombre: Consultar
Actores: Usuario del Sistema (Cliente)
Función: Permitir el acceso al módulo de consultas.
Descripción: El usuario Cliente tiene acceso a la búsqueda
de documentos según los criterios definidos:
1. Por fecha.
2. Por tipo.
3. Por tamaño.
4. Por nombre.
5. Por estatus.
6. Por quien lo publica.
Tabla 2.3 Consultar
Nombre: Reportes
Actores: Usuario del Sistema (Cliente)
Función: Permitir el acceso al módulo de reportes.
Descripción: El usuario Cliente tiene acceso a la creación
de reportes de documentos según los criterios
definidos:
1. Por cantidad diaria.
2. Por cantidad semanal.
3. Por quienes leyeron.
4. Por quienes lo publican.
5. Por estatus.
6. Personalizados utilizando filtros.
Tabla 2.4 Reportes
44
Segundo nivel:
Nombre: Rechazar usuario
Actores: Usuario del Sistema (Cliente)
Función: Autenticación del usuario
Descripción: Si el Cliente ingresa incorrectamente el
nombre de usuario o la clave, el sistema
rechazará la petición de acceso a la página.
Tabla 2.5 Rechazar Usuario
Nombre: Aceptar usuario
Actores: Usuario del Sistema (Cliente)
Función: Autenticación del usuario
Descripción: Si el Cliente ingresa correctamente el nombre
de usuario y la clave, el sistema aceptará la
petición de acceso a la página.
Tabla 2.6 Aceptar Usuario
45
Nombre: Subir documento
Actores: Usuario del Sistema (Cliente)
Función: Subir documento
Descripción: El usuario Cliente puede publicar un nuevo
documento en la Intranet.
Tabla 2.7 Subir Documento
Nombre: Eliminar documento
Actores: Usuario del Sistema (Cliente)
Función: Eliminar documento
Descripción: El usuario Cliente puede eliminar un
documento que haya sido publicado en la
Intranet.
Tabla 2.8 Eliminar Documento
46
Nombre: Cambiar estatus
Actores: Usuario del Sistema (Cliente)
Función: Cambiar el estatus del documento
Descripción: El usuario Cliente puede cambiar el estatus
de un documento que haya sido publicado en
la Intranet.
El estatus del documento puede ser:
1. Activo, el documento está habilitado para la
lectura, descarga y consulta.
2. Inactivo, el documento no está habilitado
para la lectura, descarga o consulta.
Tabla 2.9 Cambiar Estatus
Nombre: Imprimir
Actores: Usuario del Sistema (Cliente)
Función: Imprimir reporte
Descripción: El usuario Cliente puede acceder al módulo
de impresión, al cual es llevado luego de
obtener los reportes.
Tabla 2.10 Imprimir
CAPÍTULO 3
3.DISEÑO
3.1 Definición y objetivos
El diseño del sistema define los procesos con
sus respectivos detalles para permitir su
interpretación, comprensión y desarrollo en
cualquier momento y por cualquier profesional.
48
Esta etapa busca la optimización del sistema tratando de hacerlo lo más
amigable y eficiente posible.
3.2 Diseño del sistema
El proceso de Diseño del Sistema es la definición de la arquitectura del
sistema y del entorno tecnológico que se va a utilizar, con la especificación
detallada de los componentes del sistema de información.
El sistema contará con tres módulos que permiten la administración y el uso
de la aplicación, estos son los siguientes:
Módulo de Administración.
Módulo de Manejo de Documentos.
Módulo de Reportes.
3.2.1 Módulo de administración.
Este módulo permite la administración de las cuentas de usuarios,
departamentos, roles o privilegios y cambio de claves de usuarios.
3.2.2 Módulo de manejo de documentos.
Este módulo permite la manipulación de los archivos, es decir, desde aquí
podrá enviar, recibir, visualizar, subir y descargar archivos de tipos
permitidos.
49
3.2.3 Módulo de reportes
Este módulo permite la creación de reportes bajo criterios predefinidos, estos
pueden ser exportados a formatos MSExcel y PDF para luego imprimirlos.
3.3 Estructura de la base de datos
Diagrama Entidad Relación (DER)
Figura 3.3.1 Diagrama Entidad Relación
50
Tabla useratto (USUARIO)
Figura 3.3.2 Tabla Useratto
51
Detalle de la tabla useratto
Nombre del campo Clave Tipo de dato Descripción
id pk serial Identificador de la tabla.
lastmodified x timestamp Fecha de creación o modificación
deleted x boolean Indica si el usuario ha sido eliminado o no.
enable x boolean Indica si el usuario está habilitado o no.
username x varchar Contiene el nombre de inicio de sesión.
password x varchar Contiene la clave que permite iniciar sesión en el sistema.
name x varchar Contiene el apellido del usuario.
firstname x varchar Contiene el nombre del usuario.
street x varchar Contiene la dirección del usuario.
postalcode x varchar Contiene el código postal del usuario.
city x varchar Contiene la ciudad del usuario.
country x varchar Contiene el país del usuario.
state x varchar Contiene el estado del usuario.
language x varchar Contiene el idioma del usuario.
email x varchar Contiene la dirección de correo del usuario.
telephone x varchar Contiene el teléfono del usuario.
telephone2 x varchar Contiene el teléfono del usuario.
type x integer Contiene el tipo de usuario.
passwordchanged x timestamp Contiene la fecha de expiración de la clave
passwordexpires x boolean Indica si la clave del usuario expira o no.
privilegeid fk integer Contiene el identificador de privilegio del usuario.
departmentid fk integer Contiene el identificador del departamento al que pertenece el usuario.
creatorid x numeric Contiene el identificador del usuario que lo creó.
rol x varchar Específica que tipo de privilegio tiene el usuario
Tabla 3.3.2 Detalle de la Tabla Useratto
52
Tabla department (DEPARTAMENTO)
Figura 3.3.3 Tabla Department
Detalle de la tabla department
Nombre del campo Clave Tipo de dato Descripción
id pk serial Identificador de la tabla.
lastmodified x timestamp Fecha de creación o modificación
name x varchar Contiene el nombre del departamento.
description x varchar Contiene la descripción del departamento.
userid x varchar Contiene el identificador del usuario que pertenece a ese departamento.
Tabla 3.3.3 Detalle de la Tabla Department
53
Tabla document (DOCUMENTO)
Figura 3.3.4 Tabla Document
Detalle de la tabla document
Nombre del campo Clave Tipo de dato Descripción
id pk serial Identificador de la tabla.
lastmodified x timestamp Fecha de creación o modificación
title x varchar Contiene el nombre del documento
creationdate x timestamp Contiene la fecha en la que es enviado.
creator x varchar Contiene el nombre del usuario que envía el documento.
creatorid fk integer Contiene identificador del usuario al que se le envió el documento.
status x integer Indica el estatus del documento, si este está activo o no.
54
lockuserid x numeric Indica si el usuario está permitido para descargar el documento.
filename x varchar Contiene el nombre del archivo.
filesize x varchar Contiene el tamaño del archivo
path x varchar Contiene la dirección del archivo.
users x varchar Contiene los usuarios que recibieron el documento.
rootid x numeric Contiene el estado del usuario.
contentype x varchar Indica el tipo de archivo (extensión).
interval x numeric Indica si ha expirado el tiempo de vida del archivo.
borrado x numeric Indica si el archivo ha sido eliminado o no.
Tabla 3.3.4 Detalle de la Tabla Document
55
Tabla privilege (PRIVILEGIO)
Figura 3.3.5 Tabla Privilege
Detalle de la tabla privilege
Nombre del campo Clave Tipo de dato Descripción
id Pk Serial Identificador de la tabla.
name X Varchar Nombre del privilegio.
reportdocu X Boolean Indica si tiene o no privilegios sobre los reportes.
configuration X Boolean Indica si tiene o no privilegios sobre la configuración.
document X Boolean Indica si tiene o no privilegios sobre los documentos.
description X Varchar Contiene la descripción del privilegio.
Tabla 3.3.5 Detalle de la Tabla Privilege
56
Tabla directory (DIRECTORIOS)
Figura 3.3.6 Tabla Directory
Detalle de la tabla directory
Nombre del campo Clave Tipo de dato Descripción
id pk serial Identificador de la tabla.
userid fk integer Contiene el id del usuario propietario.
rootfather x numeric Contiene la ruta de su nivel superior.
label x varchar Contiene el nombre o etiqueta del directorio.
docid x numeric Contiene el identificador del documento allí almacenado.
Tabla 3.3.6 Detalle de la Tabla Directory
57
Tabla audit (AUDITORIA)
Figura 3.3.7 Tabla Audit
Detalle de la tabla audit
Nombre del campo Clave Tipo de dato Descripción
id pk serial Identificador de la tabla.
date x date Contiene la fecha del evento.
userid x numeric Contiene el identificador del usuario.
docid x numeric Contiene el identificador del documento.
transaction x varchar Contiene el identificador del evento.
Tabla 3.3.7 Detalle de la Tabla Audit
58
3.4 Diseño a nivel de componentes
3.4.1 Proceso autenticación
Inicio
Base
Postgres?
Página de Inicio
Si
Fin
No
Ingresar Usuario
Y Contraseña
Datos
Correctos?
No
Si
Postgres AD
Figura 3.4.1 Proceso Autenticación
59
3.4.2 Proceso enviar documento
Inicio
Adjuntar
Documento
Validar
Documento
Docuemento
Válido?
Seleccionar
Usuarios
No
Si
Enviar
Documentos
Fin
Figura 3.4.2 Proceso de Envío de Documento
60
3.4.3 Proceso de consultas
Inicio
Fin
Ingresar Criterio de
Búsqueda
Postgres
Mostrar Datos
Figura 3.4.3 Proceso de Consultas
61
3.4.4 Proceso de cambio de clave
Inicio
Fin
Ingresar Clave Vieja
Ingresar Clave
Nueva
Confirmar Clave
Nueva
Base
Ppostgres?
Opción
Deshabilitada
Datos
Correctos?
Cambio
Exitoso
Si
No
Validar Clave
Figura 3.4.4 Proceso de Consultas
62
3.5 Diseño de interfaz
En esta sección observaremos las principales pantallas del sistema que
permiten el acceso a las diferentes opciones de la aplicación.
3.5.1 Inicio de sesión
Esta pantalla permite que un usuario inicie sesión en la aplicación. Es
requerido el ingreso del nombre de usuario y contraseña, estos datos son los
que le proporcionan el acceso al sistema, si este es erróneo aparecerán
mensajes indicándole el posible error. Si olvida su clave puede solicitarla
mediante la opción de recordatorio, su clave llegará a su buzón de correo.
Figura 3.5.1 Inicio de Sesión
63
3.5.2 Menú rol administrador
Los usuarios con roles de administrador tienen acceso a todas las
opciones del menú de administración, ellos pueden crear, modificar y
eliminar usuarios, roles y departamentos, también pueden resetear la
contraseña de algún usuario que así lo solicite, esto siempre y cuando
sea un ambiente de Grupo de Trabajo. Para los ambientes de Directorio
Activo el módulo de administración no estará disponible.
Pueden enviar, recibir archivos y realizar consultas a la base.
Figura 3.5.2a. Menú del Rol Administrador
64
Figura 3.5.2b. Menú del Rol Administrador
3.5.3 Menú rol estándar
Los usuarios con roles estándar tienen acceso a todas las opciones del
sistema excepto al menú de administración donde solo podrán cambiar su
clave, esto siempre y cuando sea un ambiente de Grupo de Trabajo. Para los
ambientes de Directorio Activo el módulo de administración no estará
disponible.
Pueden enviar, recibir archivos y realizar consultas a la base.
Figura 3.5.3. Menú del Rol Estándar
65
3.5.4 Menú del rol invitado
Los usuarios con roles de invitado pueden sólo recibir archivos,
visualizarlos más no descargarlos, también pueden realizar consultas y
están habilitados para cambiar su clave, esto siempre y cuando sea un
ambiente de Grupo de Trabajo. Para los ambientes de Directorio Activo
el módulo de administración no estará disponible.
Figura 3.5.4. Menú del Rol Invitado
CAPÍTULO 4
4.DESARROLLO DEL
SOFTWARE
4.1. Antecedente
Para el desarrollo de esta herramienta
dividimos la herramienta por módulos
según la importancia de cada uno y se
realizaron las pruebas pertinentes para
corregir errores y mejorar el
funcionamiento y hacerlo mas amigable.
67
4.2 Procesos Principales
Hemos utilizado herramientas que nos permitió el desarrollo de la aplicación,
algunas de estas son gratuitas y pueden ser descargadas desde la página
del fabricante, tales como: base de datos PostgresSQL
(www.postgresql.org/download/windows), herramienta de desarrollo MyEclipse 7.5
(http://www.myeclipseide.com/index.php?name=Downloads&req=viewsdownload&sid=31),
Java JDK 1.6 (http://java.sun.com/javase/downloads/netbeans.html), y servidor de
aplicación Tomcat 6 (tomcat.apache.org/)
Se utilizaron librerías necesarias para que se ejecuten los componentes de
los frameworks utilizados para la integración con la aplicación, dichas
librerías son provistas en la página del fabricante.
68
4.3 C L A S E S
4.3.1 Clase “SessionManagement”
Esta clase tiene la función de administrar las sesiones o conexiones,
verifica que una sesión sea válida.
4.3.2 Clase “EMail”
Esta clase administra el objeto que entrega el mensaje de correo al
destinatario.
4.3.3 Clase “EMailSender”
Esta clase contiene la configuración del usuario y equipo remitente del
mensaje, utiliza el protocolo SMTP (puerto 25) para el envío del
correo.
4.3.4 Clase “Message”
Esta es la clase padre del sistema de envío de mensajes.
4.3.5 Clase “Recipient”
Esta clase administra los objetos identificados como destinatarios del
mensaje de correo.
69
4.3.6 Clase “PDFExport”
Esta clase permite exportar los datos a un formato PDF.
4.3.7 Clase “Audit”
Esta clase mapea la tabla audit de la base de datos Postgres y la
convierte en código.
4.3.8 Clase “AuditDAO”
Esta clase realiza la conexión de la clase Audit con la base de datos.
4.3.9 Clase “Department”
Esta clase mapea la tabla department de la base de datos Postgres y
la convierte en código.
4.3.10 Clase “DepartmentDAO”
Esta clase realiza la conexión de la clase department con la base de
datos.
4.3.11 Clase “Directory”
Esta clase realiza la conexión con la base de datos y la convierte en
código.
70
4.3.12 Clase “DirectoryDAO”
Esta clase realiza la conexión de la clase directory con la base de
datos.
4.3.13 Clase “Document”
Esta clase realiza la conexión con la base de datos y la convierte en
código.
4.3.14 Clase “DocumentDAO”
Esta clase realiza la conexión de la clase document con la base de
datos.
4.3.15 Clase “EntitiyManagerHelper”
Esta clase es la de persistencia, se crea automáticamente cuando se
mapea con hibernate.
4.3.16 Clase “IAuditDAO”
Esta clase realiza o maneja un almacenamiento inicial de los objetos
de la tabla Auditoría que no han sido almacenados aún.
71
4.3.17 Clase “IDepartamentDAO”
Esta clase realiza o maneja un almacenamiento inicial de los objetos
de la tabla Departamento que no han sido almacenados aún.
4.3.18 Clase “IDirectoryDAO”
Esta clase realiza o maneja un almacenamiento inicial de los objetos
de la tabla Directory que no han sido almacenados aún.
4.3.19 Clase “IDocumentDAO”
Esta clase realiza o maneja un almacenamiento inicial de los objetos
de la tabla Documento que no han sido almacenados aún.
4.3.20 Clase “IPrivilegeDAO”
Esta clase realiza o maneja un almacenamiento inicial de los objetos
de la tabla Privilege que no han sido almacenados aún.
4.3.21 Clase “IUserattoDAO”
Esta clase realiza o maneja un almacenamiento inicial de los objetos
de la tabla Usuario que no han sido almacenados aún.
72
4.3.22 Clase “Privilege”
Esta clase realiza la conexión con la base de datos y la convierte en
código.
4.3.23 Clase “PrivilegeDAO”
Esta clase realiza la conexión de la clase privilege con la base de
datos.
4.3.24 Clase “IPrivilegeDAO”
Esta clase realiza o maneja un almacenamiento inicial de los objetos
de la tabla Privilege que no han sido almacenados aún.
4.3.25 Clase “UserAtto”
Esta clase realiza un mapeo a la base de datos y la convirte en código.
4.3.26 Clase “UserAttoDao”
Esta clase realiza la conexión de la clase useratto con la base de
datos.
4.3.27 Clase “DownLoadManager”
Esta clase realiza el control del proceso de descarga de los archivos.
73
4.3.28 Clase “LDAP”
Esta clase permite la conexión de la aplicación contra el Active
Directory de Microsoft.
4.3.29 Clase “LoginManager”
Esta clase controla el proceso de inicio de sesión contra el Active
Directory o contra la base Postgres.
4.3.30 Clase “DocumentManager”
Esta clase administra el estado de los documentos PDF, es la
encargada de cargar el documentos en la lista histórica.
4.3.31 Clase “DocumentState”
Esta clase controla el estado de los documentos, si esta activo o
inactivo.
4.3.32 Clase “InputFileSessionCleaner”
Esta clase limpia la sesión después de cargar un documento, para que
la información desplegada se real.
4.3.33 Clase “PdfRenderer”
Esta clase controla la visulización del archivo PDF.
74
4.3.34 Clase “BaseBean”
Esta es la clase principal de conexión con la base de datos.
4.3.35 Clase “DataPage”
Esta clase realiza el pagineo del grid una vez que no puede mostrar
más páginas por consola.
4.3.36 Clase “DepartamentBean”
Esta es una clase tipo bean reutilizable para los objetos de tipo
departamento.
4.3.37 Clase “DepartamentManager”
Esta clase controla la administración de los departamentos.
4.3.38 Clase “DocumentBean”
Esta es una clase tipo bean reutilizable para los objetos de tipo
documento.
4.3.39 Clase “DocumentList”
Esta clase es la utilizada para la consulta de todos los objetos tipo
archivos o documentos.
75
4.3.40 Clase “DocumentManager”
Esta clase realiza la administración de los objetos tipo documento.
4.3.41 Clase “DocumentReceive”
Esta clase es la que realiza la operación de recepción de archivos.
4.3.42 Clase “NavigationManager”
Esta clase es la que administra la navegación, hace el redirect a las
páginas jspx, las cuales crean la interface para el usuario.
4.3.43 Clase “PrivilegeManager”
Esta clase administa los objetos tipo privilegio.
4.3.44 Clase “PrivilegeList”
Esta clase devuelve la lista de los objetos tipo privilegio.
4.3.45 Clase “PrivilegeBean”
Esta es una clase tipo bean reutilizable para los objetos de tipo
privilegio.
4.3.46 Clase “InputFileController”
Esta clase es la que controla la operaciones de carga de archivos.
76
4.3.47 Clase “InputFileData”
Esta clase es la encargada de subir los archivos .
4.3.48 Clase “InputFileSessionCleaner”
Esta clase es la que se encarga de limpiar o matar las sesiones
después de cargar un documento .
4.3.49 Clase “UserBean”
Esta es una clase tipo bean reutilizable para los objetos de tipo
usuarios.
4.3.50 Clase “UserManager”
Esta clase es la encargada de la administracion de los objetos
usuarios.
4.3.51 Clase “FacesUtils”
Esta clase es utilizada para cargar algunos objetos del componente
IFaces.
4.3.52 Clase “PasswordHash”
Esta clase es utilizada para encriptar la clave del usuario.
CAPÍTULO 5
CONCLUSIONES Y
RECOMENDACIONES
5.1 Conclusiones
La Herramienta tiene el fin de realizar el seguimiento a
los documentos de los diferentes usuarios en una
organización que posean base de datos Postgres, un
navegador de internet y un servidor con my eclipse
donde este levantada la aplicación
78
5.2 Recomendación Es recomendable trabajar con Internet Explorer versión 8.0 o con Mozilla
Firefox versión 2.0 o superior, para que no presente ningún inconveniente en
la actualización de los datos.
La herramienta debe ser instalada en un File Server con suficiente espacio
para almacenar los archivos.
Utilizar las últimas versiones de las herramientas de desarrollo como lo son
My Eclipse 7.5, PostgreSQL 8.3 y Tomcat 6, ya que en el proyecto se
utilizan diferentes Frameworks de terceros que no se ejecutarían
correctamente con versiones anteriores a las ya mencionadas.
BIBLIOGRAFÍA Para la elaboración de nuestro proyecto nos basamos en información tomada
desde la Internet de la cual se adjuntan los enlaces.
Websites:
http://www.logicaldoc.com/cmsPublic/-/websitelogicaldoc/en.html
http://www.icefaces.org/main/home/
http://primefaces.prime.com.tr/en/
http://jwebmail.sourceforge.net/
http://www.archivospc.com/c/1340/p1/Administradores+de+Documentos.php
GLOSARIO Aplicación (Informática): Es un tipo de programa informático diseñado como
herramienta para permitir a un usuario realizar un o diversos tipos de trabajos
Codificación: Acción de codificar, es decir, de transformar un contenido a un
código.
Correo electrónico: O en inglés e-mail (electronic mail), es un servicio de red que
permite a los usuarios enviar y recibir mensajes rápidamente (también
denominados mensajes electrónicos o cartas electrónicas) mediante sistemas de
comunicación electrónicos.
DHCP: (sigla en inglés de Dynamic Host Configuration Protocol - Protocolo
Configuración Dinámica de Servidor) es un protocolo de red que permite a los
nodos de una red IP obtener sus parámetros de configuración automáticamente.
Digital (documento): Referente almacenamiento en una computadora de un tipo
de archivo.
DNS: El sistema global de DNS fue creado se encarga de traducir los nombres
desde una dirección IP como por ejemplo 200.36.127.40 a un nombre de dominio
como por ejemplo web.uservers.net.
Dominio: Es un conjunto de ordenadores conectados en una red que confían a
uno de los equipos de dicha red la administración de los usuarios y los privilegios
que cada uno de los usuarios tiene en dicha red.
GUI: La interfaz gráfica de usuario (en Idioma inglés Graphical User Interface,
GUI) es un tipo de interfaz de usuario que utiliza un conjunto de imágenes y
objetos gráficos para representar la información y acciones disponibles en la
interfaz. Habitualmente las acciones se realizan mediante manipulación directa
para facilitar la interacción del usuario con la computadora.
Hardware: Corresponde a todas las partes físicas y tangibles de una
computadora: sus componentes eléctricos, electrónicos, electromecánicos y
mecánicos; sus cables, gabinetes o cajas, periféricos de todo tipo y cualquier otro
elemento físico involucrado;
Html: Siglas de HyperText Markup Language (Lenguaje de Marcas de Hipertexto),
es el lenguaje de marcado predominante para la construcción de páginas web. Es
usado para describir la estructura y el contenido en forma de texto, así como para
complementar el texto con objetos tales como imágenes.
Informática: Conjunto de conocimientos científicos y técnicas que hacen posible
el tratamiento automático de la información por medio de ordenadores.
Interfaz: La interfaz de usuario es el medio con que el usuario puede comunicarse
con una máquina, un equipo o una computadora, y comprende todos los puntos de
contacto entre el usuario y el equipo, normalmente suelen ser fáciles de entender
y fáciles de accionar.
Internet: Es un conjunto descentralizado de redes de comunicación
interconectadas, que utilizan la familia de protocolos TCP/IP, garantizando que las
redes físicas heterogéneas que la componen funcionen como una red lógica única,
de alcance mundial.
Intranet: Una Intranet es una red de ordenadores privados que utiliza tecnología
Internet para compartir de forma segura cualquier información o programa del
sistema operativo para evitar que cualquier usuario de Internet pueda ingresar.
IP: Un protocolo usado para la comunicación de datos a través de una red.
Jsp: JavaServer Pages (JSP) es una tecnología Java que permite generar
contenido dinámico para web, en forma de documentos HTML, XML o de otro tipo.
LDAP: (Lightweight Directory Access Protocol, Protocolo Ligero de Acceso a
Directorios) es un protocolo a nivel de aplicación que permite el acceso a un
servicio de directorio ordenado y distribuido para buscar diversa información en un
entorno de red. LDAP también es considerado una base de datos (aunque su
sistema de almacenamiento puede ser diferente) a la que pueden realizarse
consultas.
Objeto: Un objeto en POO representa alguna entidad de la vida real, es decir,
alguno de los objetos que pertenecen al negocio con que estamos trabajando o al
problema con el que nos estamos enfrentando, y con los que podemos interactuar.
Plataformas: En informática, una plataforma es precisamente el principio, en el
cual se constituye un hardware, sobre el cual un software puede
ejecutarse/desarrollarse.
Procedimiento: En computación, una subrutina o subprograma (también llamada
procedimiento, función o rutina), como idea general, se presenta como un
subalgoritmo que forma parte del algoritmo principal, el cual permite resolver una
tarea específica.
Programa: Secuencia de instrucciones que una computadora puede interpretar y
ejecutar.
Redes: Una red de computadoras, también llamada red de ordenadores o red
informática, es un conjunto de equipos (computadoras y/o dispositivos)
conectados por medio de cables, señales, ondas o cualquier otro método de
transporte de datos, que comparten información (archivos), recursos (CD-ROM,
impresoras, etc.) y servicios (acceso a internet, e-mail, chat, juegos), etc.
Registros: Un ítem único con datos estructurados en una tabla de base de datos.
Servidor: En informática, un servidor es una computadora que, formando parte de
una red, provee servicios a otras computadoras denominadas clientes.
Sistema: Un sistema informático como todo sistema, es el conjunto de partes
interrelacionadas, hardware, software y de Recurso Humano (humanware). Un
sistema informático típico emplea una computadora que usa dispositivos
programables para capturar, almacenar y procesar datos.
SMTP: Simple Mail Transfer Protocol (SMTP) Protocolo Simple de Transferencia
de Correo, es un protocolo de la capa de aplicación. Protocolo de red basado en
texto utilizado para el intercambio de mensajes de correo electrónico entre
computadoras u otros dispositivos (PDA's, teléfonos móviles, etc.). Está definido
en el RFC 2821 y es un estándar oficial de Internet.
Usuario: El usuario final de un producto informático (bien sea hardware o
software), es la persona a la que va destinada dicho producto una vez que ha
superado las fases de desarrollo correspondientes.
Web: Una página web: documento o fuente de información, generalmente en
formato HTML y que puede contener hiperenlaces a otras páginas web. Dicha
página web, podrá ser accesible desde un dispositivo físico, una intranet, o
Internet.
ANEXOS
Anexo 1 1. Cronograma de actividades.
IDTa
sk Na
meDu
ration
Start
Finish
1Ela
boraci
on de
docum
ento d
e Alca
nces
8 days
?Fri
10/3/0
8Sun
10/12
/08
2Pre
sentac
ion de
l prime
rava
nce1 d
ay?Mo
n 10/1
3/08
Mon 1
0/13/0
8
3Rev
ision d
e posi
bles
cambio
s del p
rimer
9 days
?Tue
10/14
/08Thu
10/23
/08
4Ela
boraci
on del
Capitu
lo1 y
Capitu
lo 212
days?
Sat 10
/25/08
Sun 11
/9/08
5Pre
sentac
ion de
lcap
itulo 1
5 days
?Mo
n 11/1
0/08
Fri 11/
14/08
6Pre
sentac
ion de
lCap
itulo 2
12 day
s?Sat
11/15
/08Sun
11/30
/08
7Ela
boraci
on y
Presen
tacion
del
8 days
Mon 1
2/1/08
Wed 1
2/10/0
8
8Prim
era su
stenci
on6 d
ays?
Sun 12
/14/08
Fri 12/
19/08
9Ana
lisis, c
reacio
n de
base d
e dato
s yCod
ificacio
n del
proyec
to
47 day
s?Mo
n 12/2
2/08
Tue 2/2
4/09
10Seg
unda s
ustenc
ion4 d
ays?
Wed 2
/25/09
Sat 2/2
8/09
11Cod
ificacio
n del P
royect
o44
days?
Tue 3/3
/09Fri
5/1/09
12Ter
cera s
ustent
acion
6 days
?Mo
n 5/4/
09Sat
5/9/09
Thu S
ep 11
Fri O
ct 3Sa
t Oct
25Su
n Nov
16Mo
n Dec
8Tu
e Dec
30We
d Jan
21Th
u Feb
12Fri
Mar
6Sa
t Mar
28Su
n Apr
19Mo
n May
11
Anexo 2 2. Cronograma de actividades corregido.
Anexo 3
Entrevistas
Para la elaboración del proyecto nos apoyamos con las ideas de profesionales con
experiencia en el campo de la programacion y de las Intranets
Ing. Manuel Vega, Gerente de Desarrollado de Manexware.
Ing. Víctor Naranjo, Coordinador del Departamento de Consultoría
Informática de Synergy.
Ing. Danny Landi, Especialista en Sistemas Operativos de Ecuavisa.
John Vásquez, técnico consultor de Synergy.
INDICE MANUAL DE USUARIO
Pág.
1. Interfaz de la herramienta................................................................ 2
2. Pantalla de inicio……………………………………………………….. 3
3. Pantalla principal………………………………………………………. 5
4. Inicio…………..………………………………………………………….. 6
4.1 Cambiar password…………………………………………………….. 7
5. Módulo de administración……………………………….…………… 8
5.1 Departamentos…………………………………………………………. 9
5.2 Usuarios…………..…………………………………………………....... 21
5.3 Rol……………………………………………………………………........ 26
6. Módulo de documentos……………………………………………...... 29
6.1 Enviados…………………………………………………………………. 29
6.2 Recibidos………………………………………………..………………. 31
6.3 Archivados…..……………………………………….…………..……… 34
6.4 Subir…………..………………………………………………………….. 35
7. Módulo de reportes…………………………….….………………....... 41
8. Ayuda………….……………..………………………………….……….. 42
INDICE DE FIGURAS
Pág.
Figura 2.1 Acceso al Sistema………………………………….………… 3
Figura 2.1.2 Acceso al Sistema Mensaje……………..……………….. 4
Figura 2.1.3 Contraseña Inválida……………………..………………… 4
Figura 3.1 Pantalla Principal……….…………….…………..…….... …. 5
Figura 4.1 Inicio…………..…………………..……………..……….......... 6
Figura 4.1.1 Acceso a Cambiar Password……..…….………………. 7
Figura 4.1.2 Pantalla Principal Cambiar Password.…………..…….. 8
Figura 5.1 Ingreso Administración…….………………..………….. … 9
Figura 5.1.1 Departamentos……………..……..…………..…………… 10
Figura 5.1.2 Seleccionar Departamento…………..………………....... 11
Figura 5.1.3 Crear Departamento………….…………..…………..…… 12
Figura 5.1.4 Seleccionar un Departamento......................................... 12
Figura 5.1.5 Editar Departamento Existente………..….………..…… 13
Figura 5.1.6 Buscar Departamento……..…………..………………….. 14
Figura 5.1.7 Resultado de Búsqueda Departamento……………….. 15
Figura 5.1.8 Exportar Archivo a PDF…….………….……..………….. 16
Figura 5.1.9 Ruta donde se Almacena el Archivo PDF…………..…. 17
Figura 5.1.10 Descarga Completa……………..…………..…………… 17
Figura 5.1.11 Archivo Exportado a PDF……………….……………… 18
Figura 5.1.12 Exportar Archivo a Excel……….…………….………… 19
Figura 5.1.13 Ruta donde se Almacena el Archivo XLS….………… 20
Figura 5.1.14 Descarga Completa …….…………..……..…………. …. 20
Figura 5.1.15 Archivo Exportado a XLS…………..……..………… …. 21
Figura 5.2.1 Usuarios….…………..…………..……..…………..…… …. 22
Figura 5.2.2 Pantalla Principal de Usuarios…………….………… …. 23
Figura 5.2.3 Crear Usuario……………….…………………..………. …. 24
Figura 5.2.4 Cambiar Contraseña de Usuario………..…………........ 25
Figura 5.3.1 Acceso a Rol….…………..…………..……..……………... 26
Figura 5.3.2 Pantalla Principal de Roles ……………..………………. 27
Figura 5.3.3 Búsqueda por Rol…………..…………..……..………….. 28
Figura 5.3.4 Resultado de Búsqueda Rol….…………..……..………. 28
Figura 6.1 Acceso a Documentos…….…………….……..…………… 29
Figura 6.1.1 Acceso a Enviados……………….……..………………… 30
Figura 6.1.2 Pantalla Principal Enviados……….…………………….. 30
Figura 6.2.1 Acceso a Recibidos….…………..…………..………… …. 31
Figura 6.2.2 Pantalla Principal de Recibidos ……..…………………. 32
Figura 6.2.3 Visor de PDF…………..…………..………….……………. 33
Figura 6.3.1 Acceso a Archivados….…………..………..…………. ..... 34
Figura 6.3.2 Pantalla Principal de Archivados……..………….…….. 35
Figura 6.4.1 Acceso a Subir……….…………….…………..………….. 36
Figura 6.4.2 Pantalla Principal Subir….…………..………..………. …. 36
Figura 6.4.3 Examinar……..…………..…………..………..………… …. 37
Figura 6.4.4 Carga Exitosa…………..…………..……..……………….. 38
Figura 6.4.5 Búsqueda de usuario a Enviar….…………..……........... 40
Figura 7.1 Acceso a Reportes……..…………..…………..………… …. 41
Figura 7.1.1 Usuarios que Leyeron……..…………..………..…….. …. 42
Figura 8.1 Acceso a Ayuda……..…………..…………………..………. 43
Figura 8.2 Pantalla Principal de Ayuda……..………..……………….. 43
CAPÍTULO 1
MANUAL DE USUARIO
Herramienta de recepción y seguimiento
de documentos.
Esta herramienta tiene el propósito de dar
un seguimiento total y controlado de los
documentos de una empresa.
Este manual esta detallado de manera
concisa y clara para que pueda ser
entendido de manera muy fácil por el
usuario final.
2
La herramienta puede ser accedida por diferentes tipos de usuarios asignados
según su rol o permiso, los mismos que deben iniciar sesión para poder
visualizar o enviar un documento, una de las características importantes del
proyecto es que los usuarios pueden ser extraídos de la base de datos utilizada
(postgres) o pueden traerse directamente del Active Directory de Microsoft.
Los tipos de usuarios son los siguientes:
Administrador
Estándar
Invitado
El usuario Administrador tendrá acceso total a todas las opciones de la
herramienta. El usuario Estándar tendrá habilitada las opciones básicas como
recibir y enviar documentos, generar reportes y cambiar su clave. El usuario
Invitado sólo podrá recibir documentos mas no enviar, generar reportes y
cambiar su clave.
1. Interfaz de la herramienta
La interfaz de las aplicaciones para el administrador y los otros tipos de
usuarios, mantienen un formato de presentación estándar, y están orientados a
sus diversas tareas.
3
Por eso es importante seguir este manual paso a paso para poder interactuar
correctamente con la herramienta.
2. Pantalla de inicio
Para tener acceso a la pantalla de inicio de sesión debe abrir desde algún
navegador de internet como Internet Explorer o FireFox y conectarse a la
dirección http://nombreServidor:8080/atto. Todos los usuarios deben iniciar
sesión para poder acceder a la aplicación. Estos datos deben estar guardados
en la base de datos o en el Active Directory para que sean válidos por el
sistema.
Fig. 2.1 Acceso al Sistema
Al dejar en blanco el campo correspondiente al nombre de usuario se presenta
el siguiente mensaje.
4
Fig. 2.1.2 Acceso al Sistema Mensaje
Al intentar ingresar al sistema con un usuario o contraseña no válida se
presentará el siguiente mensaje:
Fig. 2.1.3 Contraseña Inválida
5
Si el usuario no recuerda su contraseña puede solicitar el recordatorio de la
clave desde la opción ¿Ha olvidado su contraseña? Y automáticamente se le
enviará un mensaje de correo a su cuenta con su respectiva clave.
3. Pantalla principal
Cuando el inicio de sesión es exitoso se presentará la pantalla principal del
sistema, esta muestra el menú de opciones que está compuesto por las
siguientes opciones: Inicio, Administración, Documentos, Reportes y Ayuda.
Fig. 3.1 Pantalla Principal
6
El sistema mostrará en la parte superior derecha el nombre del usuario que ha
iniciado sesión, debajo está el botón Log Out que permite la salida de sesión,
es decir, retorna a la pantalla de inicio de sesión. Además se presenta un icono
de progreso que indica que se está ejecutando algún proceso como: llamar
a otra pantalla, grabar datos, cargar documentos etc.
4. Inicio
El menú Inicio tiene un submenú llamado Cambiar Password.
Fig. 4.1 Inicio
7
4.1 Cambiar password
Esta opción estará disponible para todo tipo de usuario y es la que permite al
usuario cambiar su clave, para acceder a esta opción nos ubicamos en
InicioCambiar Password.
Fig. 4.1.1 Acceso a Cambiar Password
8
A continuación nos llevará a la pantalla principal de Cambiar Password.
Fig. 4.1.2 Pantalla Principal Cambiar Password
Nos pide que ingresemos la contraseña anterior, después la nueva contraseña y
finalmente confirmarla. Si deseamos que se guarden los datos presionamos el
botón Cambiar caso contrario presionamos Cancelar.
5. Módulo de administración
El menú Administración estará habilitado sólo para los usuarios de tipo
administradores. En este menú podemos desplegar los siguientes submenús:
Departamento, Usuario, Rol; tal como se indica en la figura.
9
Fig. 5.1 Ingreso Administración
5.1 Departamentos
En el administrador de departamentos se presenta un listado con todos los
objetos de este tipo creados en el sistema; siempre presentará cinco registros
por página, a partir del sexto aparecerán en la siguiente página, la misma que
podrá ser accedida con los botones de avance de página que están en la parte
inferior derecha.
10
Fig. 5.1.1 Departamentos
Los usuarios administradores podrán crear un nuevo departamento , editar
uno existente , o borrarlo , también podrán seleccionar todos los
departamentos existentes a la vez y así mismo
desmarcarlos. Por defecto todos los registros se
presentarán desmarcados, los botones de editar y borrar estarán deshabilitados
tal como se muestra en la figura anterior. Al presionar el botón seleccionar todo,
se marcarán todos los registros existentes y automáticamente se activa la
opción para borrar, el botón editar se activará cuando se seleccione únicamente
un registro.
11
Fig. 5.1.2 Seleccionar Departamentos
Para crear un departamento presionamos el icono respectivo y este nos
lleva a la pantalla de creación; aquí ingresamos los datos requeridos y
presionamos el botón OK, esto hará que se almacene en la base de datos y se
pueda presentar en el listado. Si deseamos deshacer la operación presionamos
el botón cancelar y el nos enviará a la pantalla anterior sin guardar ningún
cambio en la base de datos.
12
Fig. 5.1.3 Crear Departamento
Para editar, es decir, modificar los datos de un departamento existente; primero
se debe seleccionar el departamento luego presionar el botón editar .
Fig. 5.1.4 Seleccionar un Departamento
13
En la pantalla de modificación se editarán los datos necesarios.
Fig. 5.1.5 Editar Departamento Existente
Una vez realizada la modificación presionamos ok, estos cambios se guardarán
en la base de datos; para desistir de la operación deberá presionar el botón
cancelar. Para eliminar un departamento debe seleccionarlo y presionar el
icono eliminar, este se eliminará de la base de datos.
Para buscar un departamento se utiliza la lista despegable la cual permite
escoger dos tipos de búsqueda: por Nombre y por Creador, es decir, el usuario
que creó el departamento.
14
Fig. 5.1.6 Buscar Departamento
Se escoge una de las dos búsquedas y en el cuadro de texto escriba el nombre
a buscar, si no recuerda el nombre completo puede ingresar alguna letra
contenida en este y presione el botón Buscar Departamentos, para este ejemplo
el proceso listará todos los departamentos cuyo usuario creador contengan
dicha letra.
15
Fig. 5.1.7 Resultado de Búsqueda Departamento
Al presionar el botón Listar Todos vuelve a la pantalla principal del submenú
departamento y muestra nuevamente todos los registros creados.
En todas las pantallas en donde se pueda realizar una búsqueda a excepción
del submenú Rol, y submenú Subir, se podrá acceder a la opción Exportar XLS
y Exportar PDF.
16
Para exportar el archivo a formato pdf de clic en la opción Exportar PDF, a
continuación aparecerá la siguiente pantalla:
Fig. 5.1.8 Exportar Archivo a PDF
En donde se presentan tres botones: Buscar, Guardar, Cancelar.
El botón Buscar se usará cuando no tiene instalado la herramienta para
visualizar el contenido del archivo y es necesario buscar un programa en línea
para abrirlo, en caso de contar con la herramienta este botón buscar será
reemplazado por el botón Abrir el cual permitirá ver el archivo sin tener que
descargarlo al PC. El botón Cancelar termina la operación, es decir, no permite
continuar con el proceso. Al presionar el botón Guardar aparecerá el visor de
Windows para que ubique la ruta en donde desea guardar el nuevo archivo en
formato PDF.
17
Fig. 5.1.9 Ruta donde se Almacena el Archivo PDF
Una vez ubicado donde queremos que se guarde el documento damos clic en
Guardar y nos aparecerá la siguiente pantalla
Fig. 5.1.10 Descarga completa
18
Finalmente para visualizar el archivo de clic en el botón Abrir, se presentará
toda la información exportada en un archivo PDF. Para visualizar la información
es necesario tener instalada alguna versión de Acrobat Reader.
Fig. 5.1.11 Archivo Exportado a PDF
Para exportar el archivo a formato xls de clic en la opción Exportar Excel, a
continuación aparecerá la siguiente pantalla:
19
Fig. 5.1.12 Exportar Archivo a Excel
La misma presenta tres botones: Open (abrir), Save (guardar), Cancel
(cancelar).
El botón Open permite abrir el archivo directamente sin necesidad de
descargarlo, es decir, el usuario puede ver el contenido; pero si lo cierra tendrá
que volver a exportarlo ya que no está guardado en ningún sitio. El botón
Cancelar termina la operación, es decir, no permite continuar con el proceso. El
botón Guardar permite buscar una ruta para almacenar el archivo, y así poderlo
leer varias veces desde esa ubicación.
20
Fig. 5.1.13 Ruta donde se Almacena el Archivo XLS
Una vez ubicado donde queremos que se guarde el documento damos clic en
Guardar y nos aparecerá la siguiente pantalla, la cual dice que la descarga ha
sido completa.
Fig. 5.1.14 Descarga completa
21
Finalmente para visualizar el archivo dar clic en el botón Abrir, y se presentará la
información en un archivo de Excel; es necesario tener instalado Microsoft Excel
para ver el contenido del archivo.
Fig. 5.1.15 Archivo Exportado a XLS
5.2 Usuarios
Para acceder al módulo de administración de usuarios damos clic en el menú
AdministraciónUsuarios, este nos llevará a la pantalla principal
22
Fig. 5.2.1 Usuarios
Esta pantalla nos muestra deshabilitado los iconos de editar , eliminar
y cambiar contraseña ; el icono de nuevo usuario siempre estará
habilitado.
23
Fig. 5.2.2 Pantalla Principal de Usuarios
Para crear un nuevo usuario dar clic en el icono nuevo usuario y aparecerá la
pantalla de ingreso de datos para el nuevo usuario, si desea guardar el nuevo
registro dar clic en el botón OK, si no está seguro de clic en Cancelar.
24
Fig. 5.2.3 Crear Usuario
Así mismo para editar un usuario primero selecciónelo, de clic en el botón editar,
esto lo llevará a la pantalla para modificar los datos del usuario si desea guardar
presionar el botón OK, si no está seguro presione el botón Cancelar.
Para eliminar uno o más usuarios márquelos y presione el botón eliminar, estos
serán eliminados de la base de datos, también presenta los botones Seleccionar
Todo que permite seleccionar todos los usuarios existentes en la base de datos,
y Deseleccionar Todo que los desmarca.
25
La búsqueda del usuario según la lista despegable será por: nombre, apellido,
departamento y privilegio. Una vez escogido el criterio de búsqueda se pone en
la caja de texto el nombre completo o una letra contenida en el nombre, se
presiona el botón buscar y aparecerá la información solicitada.
El botón cambiar contraseña es la opción que le permite al usuario
administrador cambiar la contraseña de un usuario específico, el procedimiento
es igual que el de la opción Cambiar Password del menú Inicio, primero se
selecciona el usuario después se da un clic en el botón cambiar contraseña
y aparecerá la siguiente pantalla.
Fig. 5.2.4 Cambiar Contraseña de Usuario
26
Aquí deberá ingresar la contraseña anterior, luego la nueva y a continuación la
confirmación, para que el cambio tenga efecto dar clic en el botón Cambiar
caso contrario dar clic en Cancelar.
5.3 Rol
Para acceder a roles nos ubicamos en el menú AdministraciónRol y
escogemos este ítem.
Fig. 5.3.1 Acceso a Rol
A continuación nos llevará a la pantalla principal de Roles
27
Como se mantiene un estándar aquí también podemos crear un nuevo rol,
editarlo o eliminarlo.
Fig. 5.3.2 Pantalla Principal de Roles
Para realizar una búsqueda de roles tenemos los siguientes criterios: por
Nombre y por Descripción.
28
Fig. 5.3.3 Búsqueda por Rol
Una vez escogido el criterio de búsqueda e ingresado los datos en el cuadro de
texto se da clic en el botón Buscar Roles y se presentará la información
requerida.
Fig. 5.3.4 Resultado de Búsqueda Rol
29
6. Módulo de documentos
El menú Documentos estará habilitado para todos los usuarios. El usuario
invitado no tendrá habilitadas las opciones Enviados ni Subir, puesto que este
tipo de usuarios sólo tiene permiso de recibir documentos.
Fig. 6.1 Acceso a Documentos
6.1 Enviados
A este módulo sólo tienen acceso los usuarios de tipo estándar y administrador,
en el cual pueden revisar todos los archivos que han sido subidos y enviados
por el usuario.
30
Fig. 6.1.1 Acceso a Enviados
Al dar clic en la opción Enviados aparece la siguiente pantalla:
Fig. 6.1.2 Pantalla Principal Enviados
31
Si el usuario no ha subido y enviado ningún archivo aparecerá la bandeja de
entrada en blanco, caso contrario se muestra toda la información relacionada
como es: nombre del archivo, tamaño, remitente, fecha, etc. Además podrá
realizar operaciones de búsqueda de documentos enviados por los criterios
definidos, podrá eliminar o exportar los datos.
6.2 Recibidos
A este módulo tienen acceso todos los tipos de usuarios.
Fig. 6.2.1 Acceso a Recibidos
32
Al dar clic en Recibidos nos aparece la siguiente pantalla:
Fig. 6.2.2 Pantalla Principal de Recibidos
En este módulo se presentan todos los documentos que han sido enviados para
el usuario que está en la sesión actual. Como en los otros módulos aquí también
podrá buscar un documento por los criterios que están predefinidos, eliminar el
archivo con solo seleccionarlo y presionar el botón correspondiente y exportar a
Excel o Pdf.
Desde aquí también se puede visualizar un archivo siempre y cuando sea de
formato pdf, para lo cual debe presionar el botón Ver que lo llevará al visor
de PDF.
33
Fig. 6.2.3 Visor de PDF
Si el archivo tiene tabla de contenido esta se mostrará en el lado izquierdo del
panel; para cambiar de página puede utilizar los botones de avance,
puede escribir en el cuadro de texto el número de la
página a la cual desea cambiarse o puede utilizar la tabla de contenido; además
cuenta con las opciones de maximizar el documento , rotar a la
izquierda o a la derecha
34
Para revisar los archivos diferentes a los de formato PDF será necesario
descargarlos primero a la PC utilizando el botón descargar. LlLl Los archivos
deben ser descargados uno a uno.
6.3 Archivados
Para acceder a este módulo nos ubicamos en el menú
AdministraciónArchivados.
Fig. 6.3.1 Acceso a Archivados
35
Al dar clic en archivados se presenta la pantalla principal de este ítem, aquí se
almacenan todos los documentos cuyo tiempo de vida ha expirado.
Fig. 6.3.2 Pantalla Principal de Archivados
6.4 Subir
A este módulo sólo tendrán acceso los usuarios de tipo estándar y
administrador, los usuarios invitados no están permitidos subir archivos.
36
Fig. 6.4.1 Acceso a Subir
Fig. 6.4.2 Pantalla Principal Subir
37
Esta pantalla nos permitirá subir el documento y enviarlo al o los usuarios
requeridos. El procedimiento empieza por buscar donde está ubicado el
documento que se desea enviar, para esto se debe dar clic en el botón
Examinar, el cual llamará el explorador de Windows para ubicar el archivo que
se desea subir.
Fig. 6.4.3 Examinar
38
Una vez ubicado el archivo presione el botón Subir, se presentará el mensaje
“Carga exitosa del documento” aparecerán los datos principales del documento
como: nombre, tamaño, tipo.
Fig. 6.4.4 Carga Exitosa
Si no está seguro de enviar este archivo presione borrar y el archivo ya no
estará disponible para el envío. Como opciones de envío tenemos Tiempo de
Vida de un archivo, lo que significa que el usuario puede enviar un documento
que estará habilitado desde 1 a 5 días, en ese tiempo el receptor podrá revisar
el archivo, pasado este tiempo el archivo pasará a formar parte de los archivos
39
archivados del submenú documentos, por defecto el archivo está marcado por la
opción 0 días lo que indica que el tiempo de vida es ilimitado. Otra opción de
envío es Bloquear que significa que el usuario puede restringir los archivos de
formato PDF para que puedan ser visualizados mas no descargados.
La aplicación solamente le permitirá cargar por tipo de documentos permitidos
los cuales son: jpeg, jpg, tif, doc, docx, xls, xlsx, ppt, pptx, txt, rtf, pdf, zip y rar,
los mismos que no deben exceder los 10 Mb de tamaño.
Una vez que está seguro que ha cargado el o los documentos correctos debe
escoger a que usuario se los enviará, para esto se presenta en una lista
desplegable los criterios de búsqueda que son: por Nombre, cuando se envía a
una solo persona, por Departamento cuando se desea enviarle a todos o a
varios usuarios de un mismo departamento. A continuación presionamos el
botón Buscar Usuarios y presentará una lista con los usuarios requeridos.
40
Fig. 6.4.5 Búsqueda de usuario a enviar
En este listado se debe seleccionar a los usuarios a quienes se les enviará el
documento y luego presionar el botón de envío el mismo que no se
habilitará hasta que no se haya seleccionado al menos un usuario, este proceso
termina con un mensaje de confirmación indicando que la notificación fue
enviada exitosamente o no, la cual se refiere a un aviso al buzón de correo de
usuario receptor.
41
7. Módulo de reportes
Para ingresar a los reportes dar clic en el menú Reportes
Fig. 7.1 Acceso a Reportes
Desde esta pantalla podrá elaborar los reportes según el criterio de búsqueda
predefinido, tendrá la opción de exportar los reportes a formatos Excel y Pdf.
Los tipos de reportes que están presentes son: Usuarios que leyeron, Usuarios
que descargaron, Archivos enviados, Archivos descargados, los que como su
nombre lo indica muestran la información requerida.
42
Fig. 7.1 Usuarios que Leyeron
8. Ayuda
Al dar clic en el menú Ayuda nos proporcionará el acceso a una guía rápida del
manejo adecuado del sistema.
43
Fig. 8.1 Acceso a Ayuda
A continuación se muestra la pantalla principal del módulo de Ayuda.
Fig. 8.2 Pantalla Principal de Ayuda
44
Esta guía nos muestra los diferentes procesos que realiza esta herramienta de
recepción y seguimiento de documentos, de una manera fácil y sencilla para el
usuario final.
Introducción nos muestra la pantalla de bienvenida.
Nociones Básicas presenta conceptos básicos de: inicio de sesión, menú
principal, notificación del sistema y búsqueda simple.
Enviados/ Recibidos nos indica el manejo de los módulos donde se
muestran los documentos.
Subir documento nos indica el procedimiento de cargar y enviar
documentos.
Archivar documentos nos presenta el módulo donde aparecen los
archivos archivados cuando han alcanzado su tiempo de vida útil.
Visualizar PDF muestra como se puede revisar un archivo en formato pdf
sin la necesidad de descargarlo a la PC.
Búsquedas muestra el tipo de búsquedas existentes en la herramienta.
Gestionar Usuarios muestra los pasos para crear, modificar, eliminar un
usuario.
Gestionar Departamentos muestra los pasos para crear, modificar,
eliminar un departamento.
45
Gestionar Privilegios muestra los pasos para crear, modificar, eliminar un
rol.
Cambiar Clave muestra el proceso para realizar el cambio de clave.
47
CAPÍTULO 2
MANUAL TÉCNICO
En este manual se pretender explicar con una
breve reseña la parte principal del programa
en cuanto a codificación se refiere.
Se ha utilizado la programación orientada a
objetos en tres capas para el desarrollo del
proyecto de una forma clara, con el fin de
separar componentes y reutilizar código.
47
Pseudocódigo
El código que se muestra a continuación es la parte medular que ha sido
necesaria para el desarrollo de la herramienta, esta codificación puede sufrir
modificaciones con el fin de mejorar y optimizar cualquier cambio en el
programa. Se ha omitido parte del código que es complementario o que
pertenece al diseño html de los archivos de interface.
Entre los objetos de la aplicación mencionaremos las principales clases con sus
respectivos métodos.
48
Nombre de la clase: LoginManager
Nombre del Metodo: sendPassword
Ruta: org.atto.docman.security/LoginManager/sendPassword
Esta clase se encarga de enviar un e-mail revelando la contraseña al usuario en
caso de que él mismo no la recuerde.
public void sendPassword(ActionEvent e) throws java.io.IOException {
FacesContext facesContext = FacesContext.getCurrentInstance();
this.getParameters(facesContext);
if (!(this.userId.equals(""))) {
getUseratto();
if (isValid()) {
EMail email = new EMail();
email.setAccountId(-1);
email.setAuthor(messageBundle
.getString("atto.login.message.author"));
email.setAuthorAddress(messageBundle
.getString("atto.login.message.authorAddress"));
email.parseRecipients(user.getEmail());
email.setFolder("outbox");
email.setMessageText(messageBundle
.getString("atto.login.message.changePassword")
+ user.getPassword());
email.setRead(1);
email.setSentDate(new Date());
email.setSubject(messageBundle
.getString("atto.login.message.subject"));
email.setUserName(user.getFirstname() + " " +
user.getName());
try {
EMailSender sender = new EMailSender();
sender.send(email);
facesContext.addMessage("loginForm:message",
new FacesMessage(FacesMessage.SEVERITY_ERROR,
messageBundle
.getString("atto.login.changePasswordSuccess"),
null));
} catch (Exception ex) {
49
log.error(ex.getMessage(),ex);
facesContext.addMessage("loginForm:message",
new FacesMessage(
FacesMessage.SEVERITY_ERROR,messageBundle
.getString("atto.login.invalidLogin"),
null));
}
} else {
facesContext.addMessage("loginForm:message",
new FacesMessage(FacesMessage.SEVERITY_ERROR,
messageBundle.getString("atto.login.userInvalid"),
null));
}
} else {
facesContext.addMessage("loginForm:message",
new FacesMessage(FacesMessage.SEVERITY_ERROR, messageBundle
.getString("atto.login.userNull"), null));
}
}
Nombre de la clase: LoginManager
Nombre del Metodo: login
Ruta: org.atto.docman.security/LoginManager/ login
Este método realiza la consulta de los datos de los usuarios y validan si están
dentro de un domino o un grupo de trabajo.
Si fuese el caso de que los usuarios pertenezcan a un dominio, la consulta se la
direcciona a la base de datos del LDAP de Servidor Windows 2003 Server, caso
contrario la consulta se la realizará a la base de datos Postgres.
50
public void login(ActionEvent e) throws java.io.IOException {
FacesContext facesContext = FacesContext.getCurrentInstance();
HttpSession httpSession = (HttpSession) facesContext
.getExternalContext().getSession(false);
this.getParameters(facesContext);
String ldapStr = messageBundle.getString("atto.login.ldap");
String domain= messageBundle.getString("atto.login.ldap.domain");
String host = messageBundle.getString("atto.login.ldap.host");
String dn = messageBundle.getString("atto.login.ldap.dn");
boolean ldap = Boolean.parseBoolean(ldapStr);
if (!(this.userId.equals(""))) {
if (ldap) {
try {
Attributes att = LDAP.authenticateUser(userId,
password, domain,host,dn);
if (att != null){
String resultadoldap=
att.get("cn").toString()+
att.get("sn").toString() +
att.get("mail").toString() +
att.get("description").toString();
setUserName(resultadoldap);
httpSession.setAttribute("LoggedIn",
true);
FacesContext.getCurrentInstance()
.getExternalContext()
.redirect("./atto.iface");
} else {
facesContext.addMessage
("loginForm:message", new FacesMessage
(FacesMessage.SEVERITY_ERROR,
messageBundle.getString
("atto.login.invalidLogin"),null));
}
} catch (DataAccessException eldap) {
System.out.println("Error occured " +
eldap.getCause());
facesContext.addMessage
("loginForm:message", new FacesMessage
(FacesMessage.SEVERITY_ERROR, messageBundle
.getString("atto.login.ldap.error"),null));
}
} else {
getUseratto();
if (isValid()) {
if (user.getPassword().equals(password))
{
51
setUserName(user.getFirstname() + " " +
user.getName());
setUser(user);
httpSession.setAttribute("LoggedIn",
true);
FacesContext.getCurrentInstance()
.getExternalContext()
.redirect("./atto.iface");
} else {
facesContext.addMessage
("loginForm:message", new FacesMessage
(FacesMessage.SEVERITY_ERROR,
messageBundle.getString
("atto.login.invalidLogin"), null));
}
} else {
facesContext.addMessage("loginForm:message",
new FacesMessage(FacesMessage.SEVERITY_ERROR,
messageBundle.getString
("atto.login.invalidLogin"), null));
}
}
} else {
facesContext.addMessage("loginForm:message",
new FacesMessage(FacesMessage.SEVERITY_ERROR,
messageBundle.getString("atto.login.userNull"), null));
}
}
Nombre de la clase: NavigationManager
Nombre del Metodo: listener
Ruta: org.atto.docman.ui.navigation/ NavigationManager/ listener
Este método recibe los parámetro que son enviados desde la página
controls.jspx, estos pueden ser direccionados ya sea a departamentos, usuarios,
52
cambio de password, rol, documentos recibidos, documentos enviados, subir
documentos, reportes y ayuda.
public void listener(ActionEvent e)
{
FacesContext facesContext = FacesContext.getCurrentInstance();
Map params = facesContext.getExternalContext()
.getRequestParameterMap();
String myParam = (String) params.get("myParam");
if (myParam != null && myParam.length() > 0) {
setParam(myParam);
} else {
setParam("not defined");
}
if (myParam.equals("start")) {
this.menuContentTitle = "Inicio";
setSelectedPage("/include/blank.jspx");
}
if (myParam.equals("department")) {
this.menuContentTitle = "Mantenimiento de Departamento";
setSelectedPage("/include/content/department.jspx");
}
if (myParam.equals("user")) {
this.menuContentTitle = "Mantenimiento de Usuarios";
setSelectedPage("/include/content/user.jspx");
}
if (myParam.equals("changePass")) {
this.menuContentTitle = "Cambio de Clave";
setSelectedPage("/include/content/changepass.jspx");
}
if (myParam.equals("rol")) {
this.menuContentTitle = "Mantenimiento de Roles";
setSelectedPage("/include/content/privilege.jspx");
}
if (myParam.equals("receiveDoc")) {
this.menuContentTitle = "Documentos Recibidos";
setSelectedPage("/include/content/documentr.jspx");
}
if (myParam.equals("sendDoc")) {
this.menuContentTitle = "Documentos Enviados";
setSelectedPage("/include/content/document.jspx");
}
if (myParam.equals("upload")) {
this.menuContentTitle = "Subir Documentos";
53
setSelectedPage("/include/content/upload.jspx");
}
if (myParam.equals("viewDoc")) {
this.menuContentTitle = "Visualizar Documentos";
setSelectedPage("/include/content/viewdoc.jspx");
}
if (myParam.equals("reports1")) {
this.menuContentTitle = "Reportes Usuarios que Leyeron";
setSelectedPage("/include/reports/reports1.jspx");
}
if (myParam.equals("reports2")) {
this.menuContentTitle= "Reportes Usuarios que Descargaron";
setSelectedPage("/include/reports/reports2.jspx");
}
if (myParam.equals("reports3")) {
this.menuContentTitle = "Reportes Archivos Enviados";
setSelectedPage("/include/reports/reports3.jspx");
}
if (myParam.equals("reports4")) {
this.menuContentTitle = "Reportes Archivos Descargados";
setSelectedPage("/include/reports/reports4.jspx");
}
if (myParam.equals("help")) {
try {
FacesContext.getCurrentInstance().getExternalContext()
.redirect("/atto/help/menu.html");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
Nombre de la clase: DepartmentManager
Nombre del Metodo: addDepartment
Ruta: org.atto.docman.ui.department/ DepartmentManager/ addDepartment
Mediante este método nos permite realizar la gestión para añadir nuevos
departamentos. Este método nos direcciona a departmentEdit.jspx
54
public void addDepartment(ActionEvent event)
{
if (departmentBean != null)
departmentBean = null;
Department department = new Department();
department.setLastmodified(new Date());
department.setUserid(loginManager.getUserId());
departmentBean = new DepartmentBean(department);
}
Nombre de la clase: DepartmentManager
Nombre del Metodo: saveDepartment
Ruta: org.atto.docman.ui.department/ DepartmentManager/
saveDepartment
No permite realizar la respectivas validaciones antes de grabar un departamento
a la base de datos.
public void saveDepartment(ActionEvent event)
{
if (departmentBean != null)
{
EntityManagerHelper.beginTransaction();
Department departmentTemp = departmentBean.getDepartment();
departmentTemp.setLastmodified(new Date());
departmentTemp.setUserid(loginManager.getUserId());
departmentDAO.save(departmentTemp);
EntityManagerHelper.commit();
departmentBean = null;
this.checkCount = 0;
refreshDepartmentList();
getNavigationManagerBean();
navigationManager.setSelectedPage
55
("/include/content/department.jspx");
}
else {
refreshDepartmentList();
getNavigationManagerBean();
navigationManager.setSelectedPage
("/include/content/department.jspx");
}
}
Nombre de la clase: DepartmentManager
Nombre del Metodo: editDepartment
Ruta: org.atto.docman.ui.department/ DepartmentManager/ editDepartment
Nos permite realizar cambios en los campos de la tabla departamentos
public void editDepartment(ActionEvent event)
{
if (departmentBean != null)
departmentBean = null;
departmentBean = new DepartmentBean(new Department());
// busca el id seleccionado
int selectedId = getSelectedId();
// recupera el registro desde la base de datos
departmentBean = new
DepartmentBean(departmentDAO.findById(selectedId));
}
56
Nombre de la clase: DepartmentManager
Nombre del Metodo: deleteDepartment
Ruta: org.atto.docman.ui.department/ DepartmentManager/
deleteDepartment
Nos permite eliminar departamentos de la base de datos.
public void deleteDepartment(ActionEvent event)
{
List<Department> selectedList = getSelectedObjects();
EntityManagerHelper.beginTransaction();
for (int i = 0; i < selectedList.size(); i++)
{
departmentDAO.delete(selectedList.get(i));
}
EntityManagerHelper.commit();
this.checkCount = 0;
this.refreshDepartmentList();
}
Nombre de la clase: DepartmentManager
Nombre del Metodo: selectAll
Ruta: org.atto.docman.ui.department/ DepartmentManager/ selectAll
Nos permite seleccionar en cascada todos los departamentos al mismo tiempo,
con esto podemos eliminar todos los registros de la base.
public void selectAll(ActionEvent event) {
for (int i = 0; i < departmentList.size(); i++){
if (!departmentList.get(i).isSelected()){
departmentList.get(i).setSelected(true);
checkCount++;
}
}
}
57
Nombre de la clase: DepartmentManager
Nombre del Metodo: deselectAll
Ruta: org.atto.docman.ui.department/ DepartmentManager/ deselectAll
Nos permite desmarcar en cascada todos los departamento al mismo tiempo,
public void deselectAll(ActionEvent event)
{
for (int i = 0; i < departmentList.size(); i++)
{
if (departmentList.get(i).isSelected())
{
departmentList.get(i).setSelected(false);
checkCount = 0;
}
}
}
Nombre de la clase: UserManager
Nombre del Metodo: addUser
Ruta: org.atto.docman.ui.user / UserManager/ addUser
No permite añadir uno o varios usuarios a la base de datos.
public void addUser(ActionEvent event)
{
if (userBean != null)
userBean = null;
Useratto user = new Useratto();
userBean = new UserBean(user);
}
58
Nombre de la clase: UserManager
Nombre del Metodo: deleteUser
Ruta: org.atto.docman.ui.user / UserManager/ deleteUser
No permite eliminar uno o varios usuarios de la base de datos.
public void deleteUser(ActionEvent event)
{
List<Useratto> selectedList = getSelectedObjects();
EntityManagerHelper.beginTransaction();
for (int i = 0; i < selectedList.size(); i++)
{
userDAO.delete(selectedList.get(i));
}
EntityManagerHelper.commit();
this.checkCount = 0;
this.refreshUserList();
}
Nombre de la clase: UserManager
Nombre del Metodo: findUser
Ruta: org.atto.docman.ui.user / UserManager/ findUser
Nos permite gestionar búsquedas personalizadas de los objetos usurios a la
base de datos.
public void findUser(ActionEvent event) {
this.setSearchMode(true);
List<Privilege> privilegios = null;
List<Department> departamentos = null;
// conjunto de tipo de búsquedas
if (searchType.equals("Usuario"))
59
searchType = "username";
else if (searchType.equals("Nombres"))
searchType = "firstname";
else if (searchType.equals("Apellidos"))
searchType = "name";
else if (searchType.equals("Privilegio")) {
searchType = "privilege";
PrivilegeDAO pdao = new PrivilegeDAO();
privilegios = pdao.findByPropertyLike(PrivilegeDAO.NAME,
searchString);
} else {
searchType = "department";
DepartmentDAO ddao = new DepartmentDAO();
departamentos = ddao.findByPropertyLike(DepartmentDAO.NAME,
searchString);
}
List<Useratto> searchResult = new ArrayList<Useratto>();
// busca en la base de datos el registro exacto
if (!searchType.equals("privilege") &&
!searchType.equals("department")) {
searchResult = userDAO.findByPropertyLike(searchType,
searchString,0);
} else if (searchType.equals("privilege")) {
for (Privilege p : privilegios) {
Set<Useratto> d = p.getUserattos();
for (Useratto u : d) {
searchResult.add(u);
}
}
} else if (searchType.equals("department")) {
for (Department p : departamentos) {
Set<Useratto> d = p.getUserattos();
for (Useratto u : d) {
searchResult.add(u);
}
}
}
if (searchResult != null) {
// si solamente un registro es retornado setea una bandera
// y no setea ningun resultado para el caso falso
if (searchResult.size() == 1) {
this.setUniqueSearchResult(false);
this.setNoResult(false);
}
// no setea ningun resultado para el caso verdadero
else if (searchResult.size() == 0) {
this.setNoResult(true);
this.setUniqueSearchResult(false);
}
60
// mas de un registro retornado
else {
this.setUniqueSearchResult(false);
this.setNoResult(false);
}
// si mas de un registro es retornado, los retorna como uno
if (!this.isNoResult() && !this.isUniqueSearchResult()) {
userList.clear();
for (int i = 0; i < searchResult.size(); i++) {
userList.add(new UserBean(searchResult.get(i)));
}
this.setCheckCount(0);
}
// si solo un registro es retornado, ve su detalle
//directamente
if (this.isUniqueSearchResult()) {
if (this.userBean != null)
this.userBean = null;
this.setUserBean((new UserBean(searchResult.get(0))));
userList.clear();
userList.add(this.userBean);
}
}
}
Nombre de la clase: PrivilegeManager
Nombre del Metodo: savePrivilege
Ruta: org.atto.docman.ui.privilege / PrivilegeManager / savePrivilege
Nos permite guardar los diferentes tipos de privilegios que van ligados a los
usuarios.
public void savePrivilege(ActionEvent event)
{
if (privilegeBean != null)
{
EntityManagerHelper.beginTransaction();
61
Privilege privilegeTemp =privilegeBean.getPrivilege();
privilegeDAO.save(privilegeTemp);
EntityManagerHelper.commit();
privilegeBean = null;
this.checkCount = 0;
refreshPrivilegeList();
getNavigationManagerBean();
navigationManager.setSelectedPage
("/include/content/privilege.jspx");
}
else
{
refreshPrivilegeList();
getNavigationManagerBean();
navigationManager.setSelectedPage
("/include/content/privilege.jspx");
}
}
Nombre de la clase: PrivilegeManager
Nombre del Metodo: editPrivilege
Ruta: org.atto.docman.ui.privilege / PrivilegeManager / editPrivilege
Nos permite editar los datos de los diferentes tipos de privilegios.
public void editPrivilege(ActionEvent event)
{
if (privilegeBean != null)
privilegeBean = null;
privilegeBean = new PrivilegeBean(new Privilege());
// find the selected id
int selectedId = getSelectedId();
// retrieve the record from database
62
privilegeBean = new
PrivilegeBean(privilegeDAO.findById(selectedId));
}
Nombre de la clase: PrivilegeManager
Nombre del Metodo: findPrivilege
Ruta: org.atto.docman.ui.privilege / PrivilegeManager / findPrivilege
Nos permite realizar búsquedas personalizadas con criterios previamente
establecidos de los privilegios.
public void findPrivilege(ActionEvent event) {
// establece la busqueda para el caso verdadero
this.setSearchMode(true);
// establece el tipo de busqueda
if (searchType.equals("Nombre"))
searchType = "name";
else
searchType = "description";
// busca en la base para encontrar el registro exacto
List<Privilege> searchResult = privilegeDAO.findByPropertyLike
(searchType, searchString, 0);
// si un unico registro es returned establece una bandera y no
//establece resultado para el caso falso
if (searchResult.size() == 1) {
this.setUniqueSearchResult(false);
this.setNoResult(false);
}
// no establece ningun resultado para el caso verdadero
else if (searchResult.size() == 0) {
this.setNoResult(true);
this.setUniqueSearchResult(false);
}
63
// mas de un registro es retornado
else {
this.setUniqueSearchResult(false);
this.setNoResult(false);
}
// si mas de un registro es retornado, los trae como una lista
if (!this.isNoResult() && !this.isUniqueSearchResult()) {
privilegeList.clear();
for (int i = 0; i < searchResult.size(); i++) {
privilegeList.add(new PrivilegeBean
(searchResult.get(i)));
}
this.setCheckCount(0);
}
// si solo un registro es retornado, ve su detalle directamente
if (this.isUniqueSearchResult()) {
if (this.privilegeBean != null)
this.privilegeBean = null;
this.setPrivilegeBean((new PrivilegeBean
(searchResult.get(0))));
privilegeList.clear();
privilegeList.add(this.privilegeBean);
}
}
Nombre de la clase: DocumentManager
Nombre del Metodo: saveDocument
Ruta: org.atto.docman.ui.document / DocumentManager / saveDocument
Nos permite grabar de un nuevo documento, lógicamente a la base de datos.
public void saveDocument(ActionEvent event) {
if (documentBean != null) {
EntityManagerHelper.beginTransaction();
Document documentTemp = documentBean.getDocument();
documentTemp.setLastmodified(new Date());
64
documentTemp.setCreator("mvega");
documentDAO.save(documentTemp);
EntityManagerHelper.commit();
documentBean = null;
this.checkCount = 0;
refreshDocumentList();
getNavigationManagerBean();
navigationManager.setSelectedPage
("/include/content/document.jspx");
}
else
{
refreshDocumentList();
getNavigationManagerBean();
navigationManager.setSelectedPage
("/include/content/document.jspx");
}
}
Nombre de la clase: DocumentManager
Nombre del Metodo: deleteDocument
Ruta: org.atto.docman.ui.document / DocumentManager / deleteDocument
Nos permite realizar eliminaciones de documentos.
public void deleteDocument(ActionEvent event)
{
List<Document> selectedList = getSelectedObjects();
EntityManagerHelper.beginTransaction();
for (int i = 0; i < selectedList.size(); i++)
{
documentDAO.delete(selectedList.get(i));
}
EntityManagerHelper.commit();
this.checkCount = 0;
this.refreshDocumentList();
}
65
Nombre de la clase: DocumentManager
Nombre del Metodo: findDocument
Ruta: org.atto.docman.ui.document / DocumentManager / findDocument
Nos permite realizar búsquedas de documentos
public void findDocument(ActionEvent event)
{
// establece la busqueda para el caso de verdadero
this.setSearchMode(true);
// establece el tipo de busqueda
if (searchType.equals("Nombre"))
searchType = "name";
else
searchType = "description";
// busca en la base para encontrar el registro exacto
List<Document> searchResult = documentDAO.findByProperty
(searchType,searchString, 0);
// si un unico registro es retornado establece una bandera y no
//setea ningún resultado para el caso de falso
if (searchResult.size() == 1)
{
this.setUniqueSearchResult(true);
this.setNoResult(false);
}
// no establece resultado para el caso verdadero
else if (searchResult.size() == 0)
{
this.setNoResult(true);
this.setUniqueSearchResult(false);
}
// mas de un registro es retornado
else
{
this.setUniqueSearchResult(false);
this.setNoResult(false);
}
// si mas de un registro es retornado, los trae como una lista
if (!this.isNoResult() && !this.isUniqueSearchResult())
{
66
documentList.clear();
for (int i = 0; i < searchResult.size(); i++)
{
documentList.add(new DocumentBean
(searchResult.get(i)));
}
this.setCheckCount(0);
}
// si solo un registro es retornado, ve su detalle directamente
if (this.isUniqueSearchResult()) {
if (this.documentBean != null)
this.documentBean = null;
this.setDocumentBean((new DocumentBean
(searchResult.get(0))));
documentList.clear();
documentList.add(this.documentBean);
}
}
Nombre de la clase: DocumentList
org.atto.docman.ui.document
Lista todos los documentos.
public class DocumentList
{
protected static ArrayList<Document> documentList;
public static ArrayList<Document> getDocumentList()
{
return documentList;
}
public static void setDocumentList(ArrayList<Document>
documentList)
{
DocumentList.documentList = documentList;
}
}
67
Nombre de la clase: DocumentManager
Ruta: org.atto.docman.ui.document
Esta clase permite el filtrado de tipos de archivos a subir. Los tipos de archivos
que no estén definidas no se le permitirá la subida.
public DocumentManager()
{
synchronized (lock) {
if (!initialized) {
String creator = SessionManagement
.getUserLogin().getUsername();
DocumentList.documentList = new ArrayList<Document>
(documentDAO.findByCreatorNoBorrado(creator));
// initialized = true;
}
}
documentList = new ArrayList<DocumentBean>();
if (DocumentList.documentList.size() > 0) {
for (int i = 0; i < DocumentList.documentList.size(); i++)
{
DocumentBean doc = new DocumentBean
(DocumentList.documentList.get(i));
String fileName = DocumentList.documentList.get(i)
.getFilename();
String type = "";
if (fileName.endsWith(".rar") ||
fileName.endsWith(".RAR"))
type = "RAR";
if (fileName.endsWith(".pdf"))
type = "PDF";
if (fileName.endsWith(".doc") ||
fileName.endsWith(".docx"))
type = "DOC";
if (fileName.endsWith(".xls") ||
fileName.endsWith(".xlsx"))
type = "XLS";
if (fileName.endsWith(".ppt") ||
fileName.endsWith(".pptx"))
type = "PPT";
if (fileName.endsWith(".zip"))
type = "ZIP";
68
if (fileName.endsWith(".jpg") ||
fileName.endsWith(".JPG")
|| fileName.endsWith(".jpeg")
|| fileName.endsWith(".tif"))
type = "JPG";
if (fileName.endsWith(".txt"))
type = "TXT";
if (fileName.endsWith(".rtf"))
type = "RTF";
doc.setType(type);
if (doc.getDocument().getStatus() == 1)
doc.setStatusString("ACTIVO");
else
doc.setStatusString("INACTIVO");
documentList.add(doc);
}
}
sort("lastmodified", true);
}
Nombre de la clase: DocumentManagerArchive
Nombre del Metodo: downloadDocument
Ruta: org.atto.docman.ui.document
Gestiona las descarga del documento y envía una notificación via e-mail al
usuario indicándole que se la ha enviado un documento.
public void downloadDocument(ActionEvent event)
{
if (documentBean != null)
documentBean = null;
documentBean = new DocumentBean(new Document());
// busca el id seleccionado
int selectedId = getSelectedId();
69
// recupera el registro desde la base de datos
documentBean = new DocumentBean
(documentDAO.findById(selectedId));
if (documentBean.getDocument().getLockuserid() == 1
&& !documentBean.getDocument().getContenttype().contains("pdf"))
{
descargar();
}
else if (documentBean.getDocument().getLockuserid() == 0
&& documentBean.getDocument().getContenttype().contains("pdf"))
{
descargar();
}
else
{
FacesContext facesContext = FacesContext
.getCurrentInstance();
facesContext.addMessage("uploadForm:message",
new FacesMessage(FacesMessage.SEVERITY_INFO,
"Notificación enviada", null));
}
}
Nombre de la clase: DocumentManagerArchive
Nombre del Metodo: viewDocument
Ruta: org.atto.docman.ui.document
Permite realizar la gestión para visualizar el contenido de los documentos con
formato pdf.
public void viewDocument(ActionEvent event)
{
if (documentBean != null)
documentBean = null;
70
documentBean = new DocumentBean(new Document());
// busca el id del registro seleccionado
int selectedId = getSelectedId();
Document doc = documentDAO.findById(selectedId);
// recupera el registro desde la base de datos
documentBean = new DocumentBean(doc);
if (doc.getStatus() == 1)
documentBean.setStatusString("ACTIVO");
else
documentBean.setStatusString("ACTIVO");
}
Nombre de la clase: DocumentManagerArchive
Nombre del Metodo: refreshDocumentList()
Ruta: org.atto.docman.ui.document
Realiza la actualización de la vista de la tabla de documentos después de cada
cambio .
public void refreshDocumentList() {
DocumentList.documentList = new ArrayList<Document>(documentDAO
.findAll());
documentList = new ArrayList<DocumentBean>();
if (DocumentList.documentList.size() > 0)
{
for (int i = 0; i < DocumentList.documentList.size(); i++)
{
DocumentBean doc = new DocumentBean
(DocumentList.documentList.get(i));
String fileName = DocumentList.documentList.get(i)
.getFilename();
String type = "";
if (fileName.endsWith(".rar") ||
fileName.endsWith(".RAR"))
type = "RAR";
if (fileName.endsWith(".pdf"))
71
type = "PDF";
if (fileName.endsWith(".doc") ||
fileName.endsWith(".docx"))
type = "DOC";
if (fileName.endsWith(".xls") ||
fileName.endsWith(".xlsx"))
type = "XLS";
if (fileName.endsWith(".ppt") ||
fileName.endsWith(".pptx"))
type = "PPT";
if (fileName.endsWith(".zip"))
type = "ZIP";
if (fileName.endsWith(".jpg") ||
fileName.endsWith(".JPG")
|| fileName.endsWith(".jpeg")
|| fileName.endsWith(".tif"))
type = "JPG";
if (fileName.endsWith(".txt"))
type = "TXT";
if (fileName.endsWith(".rtf"))
type = "RTF";
doc.setType(type);
documentList.add(doc);
}
}
}
Nombre de la clase: DocumentManagerReceive
Nombre del Metodo: DocumentManagerReceive
Ruta: org.atto.docman.ui.document
Gestiona los parametros necesarios para mostrar los documentos recibidos por
cada usuario.
72
public DocumentManagerReceive()
{
synchronized (lock)
{
if (!initialized)
{
String receive =
SessionManagement.getUserLogin().getUsername();
DocumentList.documentList = new ArrayList<Document>
(documentDAO.findByReceive(receive));
}
}
documentList = new ArrayList<DocumentBean>();
if(DocumentList.documentList.size()>0)
{
for (int i = 0; i < DocumentList.documentList.size(); i++)
{
DocumentBean doc = new DocumentBean
(DocumentList.documentList.get(i));
String fileName = DocumentList.documentList
.get(i).getFilename();
String type = "";
if (fileName.endsWith(".rar") ||
fileName.endsWith(".RAR"))
type = "RAR";
if (fileName.endsWith(".pdf"))
type = "PDF";
if (fileName.endsWith(".doc") ||
fileName.endsWith(".docx"))
type = "DOC";
if (fileName.endsWith(".xls") ||
fileName.endsWith(".xlsx"))
type = "XLS";
if (fileName.endsWith(".ppt") ||
fileName.endsWith(".pptx"))
type = "PPT";
if (fileName.endsWith(".zip"))
type = "ZIP";
if (fileName.endsWith(".jpg") ||
fileName.endsWith(".JPG")
|| fileName.endsWith(".jpeg") ||
fileName.endsWith(".tif"))
type = "JPG";
if (fileName.endsWith(".txt"))
type = "TXT";
if (fileName.endsWith(".rtf"))
type = "RTF";
doc.setType(type);
documentList.add(doc);
73
}
}
sort("lastmodified", true);
}
Nombre de la clase: InputFileController
Nombre del Metodo: uploadFileMonitor
Ruta: org.atto.docman.ui.upload
Gestiona el procedimiento de la subida de los documento, en el se encuentra
validado el tamaño y tipo de archivo permitido.
public void uploadFileMonitor(ActionEvent event) {
facesContext = FacesContext.getCurrentInstance();
try {
InputFile inputFile = (InputFile) event.getSource();
FileInfo fileInfo = inputFile.getFileInfo();
if (inputFile.getStatus() == inputFile.SAVED)
{
log.info("File UPload Path " +
fileInfo.getFileName());
String fileName = fileInfo.getFileName()
.toLowerCase();
if (fileName.endsWith(".rar") ||
fileName.endsWith(".pdf")
|| fileName.endsWith(".doc")
|| fileName.endsWith(".docx")
|| fileName.endsWith(".xls")
|| fileName.endsWith(".xlsx")
|| fileName.endsWith(".ppt")
|| fileName.endsWith(".pptx")
|| fileName.endsWith(".zip")
|| fileName.endsWith(".jpg")
|| fileName.endsWith(".jpeg")
|| fileName.endsWith(".tif")
|| fileName.endsWith(".txt")
|| fileName.endsWith(".rtf"))
74
{
currentFile = new InputFileData(inputFile);
synchronized (fileList) {
fileList.add(currentFile);
}
facesContext.addMessage
("uploadForm:message", new FacesMessage
(FacesMessage.SEVERITY_INFO,
"Carga exitoso del Documento",null));
}
fileUploadProgress = 0;
} else if (inputFile.getStatus() == inputFile.INVALID) {
facesContext.addMessage("uploadForm:message",
new FacesMessage(FacesMessage.SEVERITY_INFO,
"Tipo de archivo no permitido",null));
log.info("Invalid Document.");
} else if (inputFile.getStatus() == inputFile.
SIZE_LIMIT_EXCEEDED) {
facesContext.addMessage("uploadForm:message",
new FacesMessage(FacesMessage.SEVERITY_INFO,
"Tamaño del archivo supera el límite permitido",
null));
log.info(message);
} else if(inputFile.getStatus() == inputFile.UNKNOWN_SIZE){
facesContext.addMessage("uploadForm:message",
new FacesMessage(FacesMessage.SEVERITY_INFO,
"Tamaño desconocido",null));
log.info("Unknown Size");
} else if (inputFile.getStatus() == inputFile
.INVALID_NAME_PATTERN){
facesContext.addMessage("uploadForm:message",
new FacesMessage(FacesMessage.SEVERITY_INFO,
"Archivo no soportado", null));
log.info("Archivo no soportado");
} else {
facesContext.addMessage("uploadForm:message",
new FacesMessage(FacesMessage.SEVERITY_INFO,
"Error no determinado", null));
log.info("Error no determinado");
}
} catch (Throwable e) {
facesContext.addMessage("uploadForm:message",
new FacesMessage( FacesMessage.SEVERITY_INFO,
"Error en la carga del documento ", null));
log.error("Error en la carga del documento " +
e.getMessage(), e);
}
}
75
Nombre de la clase: DownloadManager
Nombre del Metodo: DownloadManager
Ruta: org.atto.docman.down
Gestiona la descarga del documento.
public class DownloadManager
{
private DocumentBean documentbean;
private String documentPath;
private String documentName;
public DownloadManager()
{
super();
FacesContext context = FacesContext.getCurrentInstance();
documentbean = (DocumentBean) context.getELContext()
.getELResolver().getValue(context.getELContext(), null,
"documentBean");
this.documentPath = documentbean.getDocument()
.getFilename();
this.documentName = documentPath.substring(documentPath
.lastIndexOf(File.separatorChar) + 1);
}
public String getDocumentPath()
{
return documentPath;
}
public void setDocumentPath(String documentPath)
{
this.documentPath = documentPath;
}
public String getDocumentName()
{
return documentName;
}
public void setDocumentName(String documentName)
76
{
this.documentName = documentName;
}
public DocumentBean getDocumentbean()
{
return documentbean;
}
public void setDocumentbean(DocumentBean documentbean)
{
this.documentbean = documentbean;
}
}
Nombre de la clase: PDFExporter
Nombre del Metodo: PDFExporter
Ruta: org.atto.docman.component.export
public class PDFExporter
{
private final static Logger logger = LoggerFactory
.getLogger(PDFExporter.class);
public ByteArrayOutputStream export(String tableId,
String filename, int[] excludeColumns) throws IOException {
FacesContext facesContext = FacesContext
.getCurrentInstance();
UIData table = (UIData)
this.findComponentById(facesContext,
facesContext.getViewRoot(), tableId);
77
List<UIColumn> columns = getColumnsToExport(table,
excludeColumns);
int numberOfColumns = columns.size();
int tableSize = table.getRowCount();
int index = table.getRowIndex();
PdfPTable pdfTable = new PdfPTable(numberOfColumns);
Font font = FontFactory.getFont("HELVETICA", "CP1254");
Font headerFont = FontFactory.getFont("HELVETICA","CP1254",
Font.DEFAULTSIZE, Font.BOLD);
addColumnHeaders(pdfTable, columns, headerFont);
for (int i = 0; i < tableSize; i++) {
table.setRowIndex(i);
for (int j = 0; j < numberOfColumns; j++) {
UIColumn column = columns.get(j);
addColumnValue(pdfTable,
column.getChildren().get(0), j, font);
}
}
table.setRowIndex(index);
try {
Document document= new Document(PageSize.A4.rotate());
document.setPageSize(PageSize.A4);
ByteArrayOutputStream baos = new
ByteArrayOutputStream();
PdfWriter.getInstance(document, baos);
document.open();
document.add(pdfTable);
document.close();
return baos;
} catch (DocumentException e) {
logger.error("Error in exporting data of '{}' as
PDF", table.getClientId(facesContext));
throw new FacesException(e);
}
}
78
Nombre de la clase: LDAP
Ruta: org.atto.docman.ldap/ LDAP
Realiza la consulta al Directorio Activo para recuperar los usuarios de la base
LDAP y permitir el inicio de sesión en la aplicación.
public class LDAP
{
static String ATTRIBUTE_FOR_USER = "sAMAccountName";
@SuppressWarnings("unchecked")
public static Attributes authenticateUser(String username, String
password, String _domain, String host, String dn)
{
String returnedAtts[] ={ "cn","sn", "mail","description" };
String searchFilter = "(&(objectClass=user)
(" + ATTRIBUTE_FOR_USER + "=" + username + "))";
//Crea los controlesde busqueda
SearchControls searchCtls = new SearchControls();
searchCtls.setReturningAttributes(returnedAtts);
//Specify the search scope
searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
String searchBase = dn;
Hashtable environment = new Hashtable();
environment.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
//Utiliza el Puerto estandar
environment.put(Context.PROVIDER_URL, "ldap://" + host +
":389");
environment.put(Context.SECURITY_AUTHENTICATION, "simple");
environment.put(Context.SECURITY_PRINCIPAL, username + "@"
+ _domain);
environment.put(Context.SECURITY_CREDENTIALS, password);
LdapContext ctxGC = null;
try{
ctxGC = new InitialLdapContext(environment, null);
//Busca objetos en el catalogo global utilizando el
filtro
NamingEnumeration answer = ctxGC.search(searchBase,
searchFilter, searchCtls);
79
while (answer.hasMoreElements())
{
SearchResult sr = (SearchResult)answer.next();
Attributes attrs = sr.getAttributes();
if (attrs != null)
{
return attrs;
}
}
}catch (NamingException e){
System.out.println("Just reporting error");
e.printStackTrace();
}
return null;
}
}
top related