Download 1 pontificia universidad catolica del ecuador facultad de ingenieria

Document related concepts
no text concepts found
Transcript
PONTIFICIA UNIVERSIDAD CATOLICA DEL ECUADOR
FACULTAD DE INGENIERIA
ESCUELA DE SISTEMAS
DISERTACIÓN DE GRADO PREVIA LA OBTENCIÓN DEL TÍTULO DE INGENIERO
EN SISTEMAS Y COMPUTACIÓN
TEMA:
PROPUESTA E IMPLEMENTACIÓN DE UN MODELO PARA CONTROL DE
DOCUMENTOS BASADO EN LA NORMA ISO 9001: 2008, PARA LA EMPRESA
“SOLUCIONES INTEGRALES DE COMPRAS Y ADQUISICIONES (LOGICA)”
AUTORES:
GUSTAVO JUSTICIA
LUCIA DEL PINO
QUITO – ECUADOR
1
DEDICATORIA
A nuestra familia que de una u otra forma nos han apoyado en cada momento de nuestras vidas para
culminar nuestros estudios universitarios y a nuestros profesores que siempre estuvieron ampliando
nuestro conocimiento, respondiendo las inquietudes encontradas en el camino, gracias a ellos
seremos unos profesionales exitosos en la vida
2
AGRADECIMIENTOS
Queremos expresar nuestros más sinceros reconocimientos a todas aquellas personas que nos
ayudaron
en
la elaboración de la tesis tanto técnica como funcional, puesto que con las
observaciones e información obtenida se ha desarrollado un trabajo de alta calidad.
3
TABLA DE CONTENIDO
Contenido
DEDICATORIA ................................................................................................................................. 2
AGRADECIMIENTOS ...................................................................................................................... 3
TABLA DE CONTENIDO ................................................................................................................. 4
INTRODUCCION .............................................................................................................................. 9
ANTECEDENTES ............................................................................................................................ 10
RESUMEN EJECUTIVO ................................................................................................................. 11
JUSTIFICACION ............................................................................................................................. 12
OBJETIVOS ..................................................................................................................................... 13
GENERAL .................................................................................................................................... 13
ESPECIFICOS .............................................................................................................................. 13
ALCANCE ........................................................................................................................................ 14
CAPÍTULO I..................................................................................................................................... 15
1.1.
Introducción ...................................................................................................................... 15
1.1.2
Enfoque basado en procesos ..................................................................................... 16
1.1.3
Relación con la Norma ISO 9004.............................................................................. 18
1.1.4
Compatibilidad con otros sistemas de gestión .......................................................... 19
1.2.
Objetivo y campo de aplicación ........................................................................................ 19
1.3.
Referencias normativas ..................................................................................................... 20
1.4.
Términos y definiciones .................................................................................................... 20
1.5.
Sistema de gestión de la calidad ........................................................................................ 20
1.5.1.
Generalidades ............................................................................................................ 21
1.5.2.
Manual de la calidad ................................................................................................. 22
1.5.3.
Control de documentos.............................................................................................. 22
4
1.6.
Responsabilidad de alta Dirección .................................................................................... 23
1.7.
Gestión de los recursos ...................................................................................................... 26
1.8.
Realización del producto ................................................................................................... 26
1.9.
Medición, análisis y mejora .............................................................................................. 28
CAPÍTULO II ................................................................................................................................... 32
Situación actual ......................................................................................................................... 32
2.
2.1.
Descripción de la empresa................................................................................................. 32
2.2.
Datos de la empresa........................................................................................................... 33
2.3.
Visión ................................................................................................................................ 33
2.4.
Misión ............................................................................................................................... 33
2.5.
Servicios Prestados por LOGICA .................................................................................... 33
2.6.
Clientes Principales de la empresa .................................................................................... 34
2.7.
Situación actual ................................................................................................................. 34
CAPÍTULO III .................................................................................................................................. 36
Análisis del proceso actual y propuesta del modelo de control de documentos.................... 36
3.
3.1.
Control de documentos actual en la empresa .................................................................... 36
3.1.1.
Flujo de proceso actual de Control de Documentos .................................................. 39
3.1.2.
Definiciones y abreviaturas del sistema de gestión de calidad .................................. 39
3.2.
Proceso propuesto para la mejora del control de documentos .......................................... 40
3.2.1
3.3.
Metas y objetivos de la optimización y automatización del proceso ........................ 40
Modelo estándar de control de documentos ..................................................................... 41
3.3.1.
Flujo de control de documentos mejorado ................................................................ 44
CAPÍTULO IV .................................................................................................................................. 47
4.1.
Metodología Rapid Application Development (RAD)...................................................... 47
4.2.
4.2.1.
UML .............................................................................................................................. 49
Diagramas de Casos de uso ....................................................................................... 49
5
4.3.
Análisis de requerimientos de software............................................................................. 56
4.3.1.
Roles .......................................................................................................................... 57
4.3.2.
Especificación de Funcionalidades ........................................................................... 58
4.3.2.1.
Funcionalidades Generales .................................................................................... 58
4.3.2.2.
Funcionalidades Específicas ................................................................................. 58
4.3.2.3.
Funcionalidades para el Representante de la Dirección: ....................................... 58
4.3.2.4.
Funcionalidades para el Coordinador: ................................................................... 60
4.3.2.5.
Funcionalidades para el Responsable: ................................................................... 61
4.3.2.6.
Funcionalidades para el Administrador de Seguridad: .......................................... 61
4.3.3.
4.3.3.1.
4.3.3.2.
Diagramas de caso de uso ......................................................................................... 62
Diagrama de Casos de Uso General ...................................................................... 63
Diagramas de caso de uso a detalle ........................................................................... 64
Los diagramas de caso de uso a detalle se encuentran documentados en el anexo. ...................... 64
4.4.
Especificaciones de Funcionalidades. ............................................................................... 64
4.5.
Especificaciones de Arquitectura. ..................................................................................... 64
4.5.1.
Arquitectura de software ........................................................................................... 64
4.5.2.
Componentes de Interacción ..................................................................................... 67
CAPÍTULO V ................................................................................................................................... 69
DESARROLLO DE LA APLICACIÓN ........................................................................................... 69
5.1.
Lenguaje de programación ................................................................................................ 69
5.2.
Herramientas utilizadas ..................................................................................................... 70
5.2.1.
Power Designer 15.2. ................................................................................................ 70
5.2.2.
Herramienta de desarrollo ......................................................................................... 71
5.2.3.
Motor de base de datos .............................................................................................. 72
5.2.4.
Hibernate ................................................................................................................... 77
5.3.
Fase de Diseño .................................................................................................................. 78
6
5.3.1.
Diagrama BD............................................................................................................. 78
5.3.3.
Diagrama de clases .................................................................................................... 80
5.4.
Desarrollo de prototipo...................................................................................................... 86
5.1.1.
5.2.
Riesgos .................................................................................................................... 101
Fase de construcción ....................................................................................................... 102
5.2.1.
Implementación ....................................................................................................... 102
5.2.2.
Pruebas .................................................................................................................... 103
5.2.3.
Fase de transición .................................................................................................... 105
5.2.3.1.
Seguridades ......................................................................................................... 105
5.2.3.2.
Despliegue ........................................................................................................... 105
5.2.3.3.
Mantenimiento .................................................................................................... 106
CAPÍTULO VI ................................................................................................................................ 107
7.
6.1.
Conclusiones ................................................................................................................... 107
6.2.
Recomendaciones ............................................................................................................ 108
Bibliografía ............................................................................................................................. 109
7.1.
Libros .............................................................................................................................. 110
7.2.
Internet ............................................................................................................................ 110
7
TABLA DE FIGURAS
Figura 1. Modelo de gestión de calidad ....................................................................................... 8
Figura 2. Organigrama estructural de LOGICA ......................................................................... 32
Figura 3. Acceso directo servidor LOGICA .............................................................................. 36
Figura 4. Seguridad de las carpetas en el servidor ..................................................................... 37
Figura 5. Flujo del proceso de control de documentos actual ...................................................... 39
Figura 6. Flujo del proceso de control de documentos mejorado ................................................ 45
Figura 7. Ejemplo de caso de uso ............................................................................................. 53
Figura 8. Ejemplo de modelo entidad relación ........................................................................... 53
Figura 9. Modelo Ejemplo de diagrama de clases ...................................................................... 54
Figura 10. Diagrama general de caso de uso .............................................................................. 63
Figura 11. Capas del sistema .................................................................................................... 65
Figura 12. Diagrama de despliegue ........................................................................................... 67
Figura 13. Modelo entidad relación de la base de datos ........................................................... 79
Figura 14. Diagrama general de paquete ................................................................................... 80
Figura 15. Diagrama de clases del paquete com.integraitec.docbpm.business ............................. 81
Figura 16. Diagrama de clases del paquete com.integraitec.docbpm.models ................................ 82
Figura 17. Diagrama del paquete com.integraitec.docbpm.entity ............................................... 84
Figura 18. Diagrama del paquete com.integraitec.docbpm.visual ................................................ 85
8
INTRODUCCION
En los últimos años las empresas se han enfocado de una manera mucho más responsable a la
calidad de sus productos o servicios, debido a las exigencias cada vez más fuertes de sus clientes, la
gran cantidad de oferta en todos los ámbitos del mercado hacen que el cliente tenga más opciones
de escoger al momento de satisfacer sus necesidades.
Una de las formas más frecuentes de comprobar o avalar la calidad de un bien o servicio son las
certificaciones, las cuales exigen que las empresas cuenten con una serie de requisitos que permiten
un producto final de alta calidad.
Las certificaciones hasta hace poco en el Ecuador eran consideradas como una ventaja competitiva,
sin embargo, en la actualidad las empresas las obtiene para estar a la par de sus competidores.
El mantener una certificación, implica gran manejo de evidencias y documentación las cuales deben
ser gestionadas de manera ordenada y responsable, por lo que la automatización del flujo de
información se vuelve fundamental.
9
ANTECEDENTES
Para cumplir una de las principales exigencias de la norma ISO 9001:2008, la empresa LOGICA se
ha enfocado en realizar un control de documentos estricta y óptimamente,
que le permitirá
continuar el camino hacia la certificación de calidad.
En la actualidad LOGICA trabaja mediante carpetas físicas y manualmente, por lo que no tienen un
control estricto de los documentos. Los cuales corren el riesgo de llegar a extraviarse. El procesar
esta información tarda algunas horas, y no existe el control estricto mediante jerarquía, por lo que se
puede identificar que esta manera de llevar la información no es la más optima ni la más eficiente
en la actualidad.
10
RESUMEN EJECUTIVO
El presente proyecto se basa en la ejecución de una propuesta modelo para control de documentos
de empresa Soluciones Integrales de Compras y Adquisiciones (Lógica), con base en la norma ISO
9001: 2008 y una aplicación automatizada en plataforma de escritorio del modelo propuesto.
El proyecto está enfocado a optimizar el tiempo de la empresa y a reducir el manejo de
documentación física evitando así los errores y manipulación de los documentos, a través de la
eficiencia, agilidad y transparencia del proceso.
Para la ejecución del proyecto se ha realizado un análisis tanto de la Norma ISO 9001 2008 como
de la situación actual de la empresa, logrando así enfocar el proyecto a dar una solución a las
debilidades existentes en control de documentos.
Hemos utilizado el desarrollo rápido de aplicaciones (RAD) que es una metodología de desarrollo
de software, que implica el desarrollo interactivo y la construcción de prototipos, la cual es de
mayor rapidez para el desarrollo.
Para comprobar la viabilidad de este proyecto, se han realizado pruebas en la empresa antes
mencionada las cuales han resultado exitosas de acuerdo a lo planificado, logrando así:
-
Reducción los costos de personal.
-
Reducción en la carga operativa.
-
Asegurar transparencia en el proceso de control de documentos.
11
JUSTIFICACION
La empresa LOGICA con la finalidad de mejorar su gestión y ser más competitiva, actualmente está
en proceso de certificarse en la norma ISO 9001:20081, en tal virtud se ve en la necesidad de
optimizar la forma en la que se realiza el control de documentos. Como parte de su planificación
consta realizar un modelo de control de documentos basado en la norma ISO 9001:2008 para poder
optimizar el tiempo que toma llevar a cabo este proceso.
Este trabajo acortaría el tiempo del proceso en un 80% ya que se podrán realizar los controles
necesarios dentro de la empresa mediante un sistema automatizado realizado en plataforma de
escritorio, con el debido conocimiento de la norma, además de brindar facilidades de uso para los
miembros de LOGICA.
Por otra parte, se ha analizado que existen retrasos en la entrega de informes ya que no poseen la
autorización inmediata. Por consiguiente, mediante el modelo que se propone, se tendrá la
posibilidad de aprobar informes al instante dándole una gran ventaja a la empresa LOGICA en su
acercamiento a la obtención de la certificación en la norma ISO 9001:2008.
1
La ISO 9001 es una norma internacional que se aplica a los sistemas de gestión de calidad (SGC)
y que se centra en todos los elementos de administración de calidad.
12
OBJETIVOS
GENERAL
Desarrollar una propuesta de un modelo para control de documentos basado en la norma
ISO 9001: 2008 e implementar el modelo propuesto en plataforma de escritorio, para la
empresa Soluciones Integrales de Compras y Adquisiciones (Lógica), utilizando software
libre.
ESPECIFICOS
1. Investigar y conocer las exigencias de la Norma ISO 9001: 2008, principalmente
sobre el control de documentos.
2. Analizar la situación actual de la empresa.
3. Analizar el proceso de control de documentos como funciona actualmente en la
empresa LOGICA.
4. Proponer el modelo de control de documentos basados en la Norma ISO 9001: 2008
5. Realizar el diseño conceptual, lógico y físico del proceso de control de
documentación a automatizar.
6. Desarrollar la aplicación.
7. Documentar la aplicación desarrollada.
8. Definir las conclusiones y recomendaciones del proyecto de disertación de tesis.
13
ALCANCE
El presente proyecto de disertación de grado, culminará con la entrega de un documento
que contenga la propuesta del modelo para control de documentos basado en la norma ISO
9001: 2008 y una aplicación automatizada en plataforma de escritorio del modelo
propuesto, aplicado a la empresa Soluciones Integrales de Compras y Adquisiciones
(Lógica).
14
CAPÍTULO I
NORMA ISO 9001:2008
En este capítulo se analizará la norma ISO 9001 2008 por cada uno de sus puntos, los cuales
ayudara al análisis e investigación de cómo proceder a realizar una propuesta de control de
documentos la cual se rija a las exigencias de esta norma, puesto que es indispensable tener
claro el conocimiento de lo que se realizará en el transcurso del desarrollo.
1.1. Introducción
-
Generalidades
La adopción de un sistema de gestión de la calidad debería ser una decisión estratégica de
la organización. El diseño y la implementación del sistema de gestión de la calidad de una
organización están influenciados por:
a) el entorno de la organización, los cambios en ese entorno y los riesgos asociados
con ese entorno,
b) sus necesidades cambiantes,
c) sus objetivos particulares,
d) los productos que proporciona,
e) los procesos que emplea,
f) su tamaño y la estructura de la organización.
No es el propósito de esta Norma Internacional proporcionar uniformidad en la estructura
de los sistemas de gestión de la calidad o en la documentación por lo que cada empresa es
responsable de establecer sus propios formatos para la documentación que maneja. La
norma ISO 9001 2008 establece únicamente los lineamientos generales que se deben
cumplir, y cada organización determina como hacerlo. Los requisitos del sistema de
gestión de la calidad especificados en esta Norma Internacional son complementarios a los
15
requisitos para los productos. La información identificada como "Nota" se presenta a modo
de orientación para la comprensión o clarificación del requisito correspondiente.
Esta Norma Internacional pueden utilizarla partes internas y externas, incluyendo
organismos de certificación, para evaluar la capacidad de la organización para cumplir los
requisitos del cliente, los legales y los reglamentarios aplicables al producto y los propios
de la organización.
En el desarrollo de esta Norma Internacional se han tenido en cuenta los principios de
gestión de la calidad enunciados en las Normas ISO 9000 e ISO 9004.
1.1.2 Enfoque basado en procesos
Esta Norma Internacional promueve la adopción de un enfoque basado en procesos cuando
se desarrolla, implementa y mejora la eficacia de un sistema de gestión de la calidad, para
aumentar la satisfacción del cliente mediante el cumplimiento de sus requisitos.
Para que una organización funcione de manera eficaz, tiene que determinar y gestionar
numerosas actividades relacionadas entre sí. Una actividad o un conjunto de actividades
que utiliza recursos, y que se gestiona con el fin de permitir que los elementos de entrada
se transformen en resultados, se puede considerar como un proceso. Frecuentemente el
resultado de un proceso constituye directamente el elemento de entrada del siguiente
proceso.
La aplicación de un sistema de procesos dentro de la organización, junto con la
identificación e interacciones de estos procesos, así como su gestión para producir el
resultado deseado, puede denominarse como "enfoque basado en procesos".
Una ventaja del enfoque basado en procesos es el control continuo que proporciona sobre
los vínculos entre los procesos individuales dentro del sistema de procesos, así como sobre
su combinación e interacción.
16
Un enfoque de este tipo, cuando se utiliza dentro de un sistema de gestión de la calidad,
enfatiza la importancia de:
a) la comprensión y el cumplimiento de los requisitos,
b) la necesidad de considerar los procesos en términos que aporten valor,
c) la obtención de resultados del desempeño y eficacia del proceso, y
d) la mejora continúa de los procesos con base en mediciones objetivas,
El modelo de un sistema de gestión de la calidad basado en procesos que se muestra en la
Figura 1 ilustra los vínculos entre los procesos presentados en los Capítulos 4 a 8. Esta
figura muestra que los clientes juegan un papel significativo para definir los requisitos
como elementos de entrada. El seguimiento de la satisfacción del cliente requiere la
evaluación de la información relativa a la percepción del cliente acerca de si la
organización ha cumplido sus requisitos. El modelo mostrado en la Figura 1 cubre todos
los requisitos de esta Norma Internacional, pero no refleja los procesos de una forma
detallada.
NOTA De manera adicional, puede aplicarse a todos los procesos la metodología conocida
como "Planificar-Hacer- Verificar-Actuar" (PHVA). PHVA puede describirse brevemente
como:
 Planificar: establecer los objetivos y procesos necesarios para conseguir resultados
de acuerdo con los requisitos del cliente y las políticas de la organización.
 Hacer: implementar los procesos.
 Verificar: realizar el seguimiento y la medición de los procesos y los productos
respecto a las políticas, los objetivos y los requisitos para el producto, e informar
sobre los resultados.
 Actuar: tomar acciones para mejorar continuamente el desempeño de los procesos.
17
Figura 1. Modelo de gestión de calidad
Modelo de un sistema de gestión de la calidad
Descripción basado en procesos
2008
Fecha
ISO 9001:2008 (traducción oficial)
© ISO 2008 – Todos los derechos reservados
Autor/Fuente VII
Titulo
1.1.3 Relación con la Norma ISO 9004
Las Normas ISO 9001 e ISO 9004 son normas de sistema de gestión de la calidad que se
han diseñado para complementarse entre sí, pero también pueden utilizarse de manera
independiente.
La Norma ISO 9001 especifica los requisitos para un sistema de gestión de la calidad que
pueden utilizarse para su aplicación interna por las organizaciones, para certificación o con
fines contractuales. Se centra en la eficacia del sistema de gestión de la calidad para
satisfacer los requisitos del cliente.
18
La edición revisada de la Norma ISO 9004 proporcionará orientación a la dirección, para
que cualquier organización logre el éxito sostenido en un entorno complejo, exigente y en
constante cambio. La Norma ISO 9004 proporciona un enfoque más amplio sobre la
gestión de la calidad que la Norma ISO 9001; trata las necesidades y las expectativas de
todas las partes interesadas y su satisfacción, mediante la mejora sistemática y continua del
desempeño de la organización. Sin embargo, no está prevista para su uso contractual,
reglamentario o en certificación.
1.1.4 Compatibilidad con otros sistemas de gestión
Durante el desarrollo de esta Norma Internacional, se han considerado las disposiciones de
la Norma ISO 14001:2004 para aumentar la compatibilidad de las dos normas en beneficio
de la comunidad de usuarios.
Esta norma internacional no se ve afectada por ningún requisito especifico de otros
sistemas de gestión tales como particulares para la gestiona ambiental, gestión de la
seguridad y salud ocupacional, gestión financiera o gestión de riesgos.
Por consiguiente esta norma permite integrar su propio sistema de gestión de calidad. Es
posible para una organización adaptar su(s) sistema(s) de gestión existente(s) con la
finalidad de establecer un sistema de gestión de la calidad que cumpla con los requisitos de
esta norma.
1.2. Objetivo y campo de aplicación
-
Generalidades
La norma ISO 9001:2008 Es una norma Internacional la cual nos especifica los
requisitos para el sistema de gestión de la calidad tenemos que tener en cuenta que la
empresa tiene que demostrar que puede proporcionar regularmente productos que
19
satisfagan los requisitos del cliente, los legales y reglamentarios aplicables, aspira a
aumentar la satisfacción del cliente a través de la aplicación eficaz del sistema.
-
Aplicación
Los requisitos de la norma son genéricos y se pretende que sea aplicable para todo
tipo de organizaciones. En caso que haya alguna dificultad de cumplir para una
empresa habrá
exclusiones, no se podrá alegar conformidad con esta Norma
Internacional a menos que dichas exclusiones queden restringidas y que estas no
afecten a la capacidad o responsabilidad
de la organización para proporcionar
productos de alta calidad.
1.3. Referencias normativas
Los documentos de referencia son extremadamente importantes, para la aplicación de este
documento es necesaria la fecha actual ya que solo se aplica la edición citada, y para las
que tengan varias fechas se aplicará la última modificación del documento de referencia.
1.4. Términos y definiciones
Para el propósito del documento, serán aplicables los términos dados en la Norma ISO
9000, a lo largo del proceso podemos simplificar la palabra “servicio” por “producto”
1.5. Sistema de gestión de la calidad
-
Requisitos generales
La organización tendrá que establecer, documentar, implementar y mantener un
sistema de gestión de la calidad y aplicar la mejora continua en su organización de
acuerdo con los requisitos de esta norma internacional.
Requerimientos a cumplir por parte de las organizaciones para certificarse:
20

Se deben definir los procesos necesarios que se desempeñan en la empresa
para el sistema de gestión de la calidad y su aplicación la cual estará
documentada.

Es indispensable determinar la secuencia y la interacción entre sí de todos
los procesos.

Asegurar que todos los procesos sean eficaces por medio de criterios y
métodos necesarios para que éstos se cumplan con la finalidad de tener una
buena organización

Tener en cuenta siempre la disponibilidad de los recursos e información
necesaria para apoyar a la operación

Dar seguimiento continuo, a través de evaluación y medición, para
mantener una mejora continua

Implementar acciones en la organización para poder alcanzar la mejora
continua.
En el supuesto que la organización desee contratar externamente la ejecución de
cualquier proceso que afecte a la gestión de calidad, la organización debe asegurar
controlar esos procesos y esos controles deberán estar definidos dentro del sistema de
gestión de la calidad y no exime a la organización de la responsabilidad de cumplir
con todos los requisitos del cliente, legales y reglamentarios.
-
Requisitos de la documentación
1.5.1.
Generalidades
Requisitos de la documentación exigidos:

Declaraciones documentales de una política de la calidad.
21

Manual de la calidad.

Los procedimientos de la organización debidamente documentados.

Registros requeridos por la Norma.
Que quiere decir con el término “procedimiento documentado” dentro de la
Norma Internacional significará que el procedimiento debe estar establecido,
documentado, implementado y mantenido. Un solo documento podrá incluir los
registros para uno o más procedimientos.
La documentación es muy importante y deberá existir en la organización a
disposición de todos en cualquier formato o tipo de medio ya que es esencial
para poder ser certificados.
1.5.2.
Manual de la calidad
En el manual de la calidad se debe incluir el alcance del sistema de gestión de
la calidad detallado y justificado, los procedimientos o en su vez una referencia
donde está el documento del procedimiento y una descripción de la interacción
entre los procesos.
1.5.3.
Control de documentos
Los documentos requeridos por el sistema de control de calidad deben
controlarse cuidadosamente ya que estos documentos deben estar de acuerdo
con los requisitos establecidos para proporcionar la evidencia de la
conformidad. La organización debe tener su procedimiento documentado en
cualquier formato para poder definir los controles necesarios como
almacenamiento, protección, la recuperación y la retención de los registros,
22
luego de esto deberá la organización tener en cuenta cómo va a manejar la
disposición de los registros la cual deberá estar documentada.
Los documentos de origen externos que la organización decida que son
necesarios e indispensables para la planificación y la operación del sistema de
gestión de la calidad, se identificarán y controlarán su distribución. Por ejemplo,
la documentación que envía cada cliente a la empresa. Por último, se debe
prevenir el uso no intencionado de documentos obsoletos y aplicarles una
identificación según las versiones del mismo, estos documentos podrán estar
guardados en cualquier formato o físicamente.
1.6. Responsabilidad de alta Dirección
-
Compromiso de alta Dirección
Está por demás decir que el compromiso y la responsabilidad de la Alta dirección son
vitales en el desarrollo e implementación del sistema de gestión de calidad, debe
promover la mejora continua en la organización.
La Alta dirección se encargara de los siguientes puntos:

Comunicar a los integrantes de la organización lo importante de satisfacer
tanto los requisitos del cliente como los legales y reglamentarios.

Establecer la política de calidad y hacer conocer a todos los integrantes de la
organización.

Crear los objetivos de la calidad correctamente para la organización llevando
a cabo las revisiones por la dirección, y asegurando la disponibilidad de
recursos.
23
-
Enfoque al cliente
La Alta dirección tendrá que satisfacer las necesidades del cliente brindándole una
mejora continua en los productos con el propósito de aumentar la satisfacción el
cliente.
-
Política de la calidad
La Alta dirección se encargará de la política de calidad, revisando que sea adecuada a
la organización e incluirán un compromiso para cumplir con los requisitos y cada día
ir mejorando continuamente la eficacia del sistema de gestión de la calidad, también
la alta dirección tendrá que revisar los procedimientos de la política de la calidad
establecidos.
-
Planificación
Todos los objetivos de la calidad deben ser revisados por la alta dirección, se
establecen cargos y funciones a los respectivos miembros de la organización y estos
deben ser medibles y coherentes con la política de calidad.
La Alta dirección también debe encargarse de la planificación del sistema de gestión
de la calidad para lo cual debe asegurarse de que cumpla con los requisitos y los
objetivos de la calidad, y deben mantener la integridad del sistema de gestión de
calidad cuando se planifique e implemente cambios.
-
Responsabilidad autoridad y comunicación
La Alta dirección debe asegurarse de que todas las responsabilidades y autoridades
estén definidas y toda la organización esté informada.
24
Los representantes de la dirección serán designados por la Alta dirección la cual
deberá seleccionar a un representante que tenga autoridad y responsabilidades
principales éstas serán:
a) Asegurarse de que se establecen, implementan y mantienen los procesos necesarios
para el sistema de gestión de la calidad.
b) Informar a la Alta dirección como está progresando el sistema de gestión de calidad
y hacer saber si se necesita de alguna mejora.
c) Asegurarse de que se tomen en cuenta los requisitos en todos los niveles de la
organización.
La Alta dirección debe tomar en cuenta que se deben establecer procesos de
comunicación apropiados dentro de la organización. La comunicación se considera la
eficacia del sistema de gestión de calidad.
-
Revisión por la Alta Dirección
El sistema de gestión de la calidad de la organización debe ser revisado por la Alta
dirección, esta revisión debe incluir una evaluación de oportunidades de mejora y la
necesidad de efectuar cambios en el sistema de gestión de calidad.
La información de entrada para la revisión debe incluir, los resultados de auditorías la
retroalimentación del cliente, el desempeño de los procesos, el estado de las acciones
correctivas, las acciones de seguimiento, los cambios que podrían afectar al sistema y
las recomendaciones para la mejora.
Los resultados de la revisión están relacionados con la mejora de la eficacia del
sistema de gestión de la calidad y sus procesos, la mejora del producto en relación con
los requisitos del cliente y las necesidades de recursos.
25
1.7. Gestión de los recursos
-
Provisión de recursos
La organización debe determinar y proporcionar todos los recursos necesarios para la
implementación, mantenimiento del sistema de gestión de la calidad y para aumentar
la satisfacción del cliente mediante el cumplimiento de sus requisitos.
-
Recursos humanos
El personal que esté involucrado en la conformidad con los requisitos del producto
debe ser competente con base a la educación, formaciones, habilidades y experiencias
apropiadas.
La organización debe determinar cuando sea aplicable, proporcionar formación o
tomar otras acciones para lograr la competencia necesaria, evaluar la eficacia de las
acciones tomadas y asegurar que su personal sea consciente de la pertinencia.
-
Infraestructura
La empresa debe determinar proporcionar y mantener en buen estado la
infraestructura, en la infraestructura estamos hablando de lugar de trabajo y accesorios
necesarios para poder realizar el servicio o producto adecuadamente.
-
Ambiente de trabajo
El ambiente de trabajo es uno de los factores que la empresa debe tomar en cuenta ya
que esto podría afectar al desenvolvimiento del personal ya que incluye desde la
temperatura en la cual se trabaja hasta el ruido, por lo que la Alta gerencia debe tomar
en cuenta.
1.8. Realización del producto
-
Planificación de la realización del producto
26
La organización debe planificar como el producto o servicio se va a llevar a cabo para
lo cual es indispensable desarrollar los procesos necesarios para la realización del
producto durante la planificación se debe: tomar en cuenta los objetivos de la calidad,
requisitos del producto, las actividades requeridas como verificación validación
seguimiento, inspección, ensayo, pruebas al final se ve que el producto cumpla con
todos los requisitos predeterminados y que haya seguido el respectivo proceso. El
resultado de esta planificación debe presentarse de forma adecuada para la
metodología de operación de la organización.
-
Procesos relacionados con el cliente
Cuando los procesos son relacionados con el cliente lo que la organización tiene que
hacer es revisar los requisitos relacionados con el producto, mantener una integra
comunicación con el cliente, tener en cuenta los requisitos legales y reglamentarios
aplicables al producto.
La revisión de los requisitos relacionados con el producto deberán ser revisados por la
Alta gerencia antes de que la organización se comprometa a proporcionar el producto
al cliente. Si por alguna circunstancia los requisitos no están del todo claros la
organización deberá comunicarse con el cliente y asegurarse que todos los datos
necesarios para la elaboración del producto estén en orden.
-
Diseño y desarrollo
La organización deberá planificar el diseño y desarrollo del producto la cual tendrá
algunas etapas entre ellas las más importantes revisión, validación, y control de los
cambios necesarios ya que estos deben ser revisados minuciosamente antes de que se
cambie.
27
-
Compras
La organización deberá asegurarse que el producto cumple con las expectativas del
cliente para lo cual se debe tener en cuenta la información de las compras, y la
verificación de los productos comprados.
-
Producción y prestación del servicio
La organización en este punto tiene que tener bien planificado y llevar a cabo la
producción del servicio bajo las condiciones controladas, con el uso del equipo
apropiado. La validación de los procesos de la producción y de la prestación del
servicio estará controlada por la organización si los resultantes no se pueden verificar
mediante seguimiento o mediciones posteriores, la validación deberá demostrar la
capacidad de estos procesos para alcanzar los resultados planificados.
-
Control de los equipos de seguimiento y medición
El control de los equipos de seguimiento y de medición deberá proporcionar la
evidencia necesaria de la conformidad del producto con los requisitos determinados.
La organización debe establecer procesos los cuales puedan realizarse de una manera
coherente, éstos deberán ajustarse, revisarse, protegerse constantemente, y si existe
algún cambio deberá enterarse la Alta gerencia antes de cualquier cambio o problema
del mismo.
La confirmación de la capacidad del software para satisfacer su aplicación prevista
incluiría habitualmente su verificación y gestión de la configuración para mantener la
idoneidad para su uso.
1.9. Medición, análisis y mejora
-
Generalidades
28
Es deber de la organización implementar los procesos de medición, análisis y mejora
de los procesos, para que así se demuestre la conformidad de los requisitos del
producto, asegurarse de la conformidad del sistema y mejorar continuamente la
eficacia del sistema de control de calidad.
-
Seguimiento y medición
En el seguimiento y medición, la organización se debe enfocar en la satisfacción del
cliente, lo cual debe haber comunicación directa para tomar en cuenta como se está
llevando a cabo el sistema de gestión de calidad por lo cual deben determinarse los
métodos para obtener y utilizar dicha información.
La auditoría interna también está involucrada, mediante ésta, se deberá determina si el
sistema de gestión de calidad es conforme con las disposiciones planificadas y si se ha
implementado de manera eficaz.
Para esto, la organización debe planificar un programa de auditorías tomando en
cuenta el estado, la importancia de los procesos y se debe establecer un procedimiento
documentado para definir las responsabilidades y los requisitos para planificar las
auditorías, establecer los registros e informar de los resultados.
La Alta gerencia deberá aplicar los métodos apropiados para el seguimiento y
medición de los procesos y productos, determinando cuando no se alcancen los
resultados planificados, deben llevarse a cabo correcciones y acciones correctivas,
según sea conveniente.
-
Control del producto no conforme.
29
Si el producto fue considerado como no conforme, la organización debe asegurarse
que la información entregada esté correctamente y se deberá establecer un
procedimiento documentado para definir los controles, las responsabilidades y
autoridades relacionadas para tratar el producto no conforme. Además, la
organización debe tomar medidas tales como: tomar acciones para eliminar la no
conformidad encontrada en el producto, impedir su uso y posteriormente cuando se
corrige un producto no conforme, debe someterse a una nueva verificación para
demostrar su conformidad con los requisitos.
-
Análisis de datos
El análisis de datos está basado en determinar, recopilar y analizar los datos
apropiados para poder demostrar la idoneidad y la eficacia del sistema de gestión de
calidad y así poder identificar donde se pueden hacer los cambios para la mejora
continua del sistema. El análisis de datos se enfoca en la satisfacción del cliente, la
conformidad de los requisitos de los productos, las características de los procesos e
incluir las oportunidades para llevar a cabo las acciones preventivas.
-
Mejora
La organización debe tomar acciones para eliminar las no conformidades con el
propósito de que no vuelvan a ocurrir por lo que las acciones correctivas deben ser las
apropiadas. Para lo cual se debe revisar las no conformidades, determinar las causas
de las no conformidades y evaluar la necesidad de adoptar acciones para asegurarse
de que no vuelvan a ocurrir. Finalmente deberán revisar la eficacia de las acciones
correctivas tomadas.
30
La organización debe tomar acciones preventivas para poder eliminar las principales
causas de no conformidades por lo cual se elaborará un procedimiento el cual
determinarán las principales no conformidades y causas, evaluar la necesidad de
actuar para prevenir la ocurrencia, determinar las acciones necesarias, registrar los
resultados de las acciones tomadas y revisar la eficacia de las acciones preventivas.
31
CAPÍTULO II
INFORMACIÓN DE LA EMPRESA SOLUCIONES INTEGRALES DE COMPRAS Y
ADQUISICIONES (LÓGICA)
2. Situación actual
En el presente capítulo se analizará a fondo el estado actual de la empresa, para así adaptar un
sistema el cual permita el fácil acceso y manejo de control de documentos. Se analizara el
ámbito laboral de la empresa y como actualmente están llevando a cabo el tema de control de
documentos de esta manera se tendrá una visualización clara de cómo se procederá a realizar la
propuesta del modelo de control de documentos adaptados a la ISO 9001:2008.
2.1. Descripción de la empresa
Lógica es una empresa formada por profesionales en las áreas de compras, planificación,
tributación e inventarios, que responde a la necesidad de las empresas de mejorar sus
procedimientos de negociación y costes de adquisición.
La estructura organizacional de la empresa, se muestra a continuación:
Gerente General
Gerente de
Ventas
Gerente de
Operaciones
Supervisor de
Calificación
Asistente 1
Asistente 2
Asistente 3
32
Titulo
Descripción
Fecha
Autor/Fuente
Figura 2
Organigrama estructural de LOGICA
18/10/2012
Plan estratégico de la empresa
2.2. Datos de la empresa
2.2.1. Datos generales de la empresa
Nombre: Soluciones Integrales de Compras y Adquisiciones PROCUREGMG Cia.
Ltda. (LOGICA)
Actividad: La empresa proporciona soluciones integrales en la gestión de compras,
calificación de proveedores y toma física de inventarios, optimizando los recursos
en cada una de las áreas de sus clientes y volviéndolas más ágiles.
Ubicación: Avenida Orellana E9-195 y Av. 6 de Diciembre Edificio ALISAL de
Orellana, piso 6, oficina 603. Quito, Pichincha-Ecuador
Características: Expertos en las áreas de COMPRAS, PLANIFICACIÓN,
TRIBUTACIÓN e INVENTARIOS.
2.3. Visión
Ser reconocidos en el Ecuador y los países andinos como una organización líder
que aporta a los procesos operativos y de soporte de sus clientes.
2.4. Misión
Somos una organización multinacional, innovadora y flexible, orientada a mejorar
la eficiencia de los procesos operativos y de soporte de nuestros clientes a través de
un servicio de calidad sustentado en un equipo multidisciplinario que les permita
mantener el enfoque en la actividad principal de su negocio.
2.5. Servicios Prestados por LOGICA
A continuación detallamos los servicios que son brindados por la empresa:
33

Calificación de Proveedores

Levantamiento de Bases de Proveedores

Administración de procesos de licitación

Negociación de Contratos

Administración parcial o completa de procesos de compra
2.6. Clientes Principales de la empresa
LOGICA, actualmente trabaja con los siguientes clientes principales:
-
CITIBANK
-
Nokia Siemens
-
Lafarge
-
Mutualista Pichincha
-
Fybeca
-
Cooperativa Cooprogreso
-
Quiport
2.7. Situación actual
La empresa LOGICA actualmente se encuentra tratando de implementar el
Sistema de Gestión de la Calidad ISO 9001:2008, el personal de la empresa ha
sido capacitado para realizar la implementación y el cumplimiento de las
exigencias y los estándares necesarios para obtener la certificación en Gestión de
la Calidad.
Como parte de esta implementación, se ha realizado cambios en el último año en
políticas y en documentación de la empresa, así como también la formalización de
los procesos que gobiernan la operatividad de la organización. Este cambio ha
llevado a la empresa a realizar y llevar un control sobre los documentos y registros
de acuerdo a lo estipulado por la ISO.
34
La gestión de documentos actualmente se realiza de manera “ad-hoc” y manual,
además cabe mencionar que si bien la empresa ha tratado de hacer uso de recursos
tecnológicos para efectuar este control mediante el uso de carpetas compartidas
sobre un servidor en red Windows, ésto podría conllevar a riesgos de seguridad o
integridad en los datos manejados.
35
CAPÍTULO III
PROPUESTA DEL MODELO DE CONTROL DE DOCUMENTOS
3.
Análisis del proceso actual y propuesta del modelo de control de documentos
Este capítulo trata del análisis a fondo del proceso actual de control de documentos que está
llevando a cabo la empresa, sus fortalezas y debilidades, las cuales se tomaron en cuenta para
realizar la propuesta que se encuentra a continuación con las respectivas observaciones para el
adecuado manejo de los documentos en la empresa. Presenta también los flujos respectivos del
proceso actual de la empresa y el flujo del proceso propuesto.
3.1. Control de documentos actual en la empresa
La empresa actualmente está implementando la norma ISO: 9001:2008, por lo cual
necesita cumplir una serie de requerimientos, entre los cuales está el control de
documentos cláusula 1.5.3.
En la actualidad la gestión documental en la empresa es manual, a continuación se detalla
la manera en la que se efectúa dicho control:
-
La institución dispone de un servidor con capacidad de 1 TB en disco duro, que está
ubicado en las instalaciones de la empresa.
Las computadoras están conectadas
mediante una red LAN.
-
Los usuarios tienen en su equipo una conexión a la red del servidor tal y como se
muestra en la figura 3.
Titulo
Figura 3
36
Acceso directo servidor
Descripción LOGICA
18/10/2012
Fecha
Autor/Fuente Servidor compartido Lógica
-
Los documentos actualmente se encuentran alojados en carpetas en el servidor, las
cuales están compartidas para los diferentes miembros del equipo de trabajo. Cada
carpeta de trabajo en el servidor se encuentra con permisos abiertos para todo el
personal.
Titulo
Descripción
Fecha
Autor/Fuente
-
Figura 4
Seguridad de las carpetas en el servidor
18/10/2012
Servidor compartido Lógica
Si existe un nuevo miembro del equipo y necesita acceso a los documentos se
comunica directamente con el Gerente General el cual procederá a dar los permisos de
ser prudente.
37
El objetivo del control de documentos es asegurar que los documentos utilizados en el SGC
se encuentren vigentes y controlados, tendrán que ser aprobados por el responsable que en
este caso es el Gerente General. El alcance al cual la empresa tendrá llegar es que todos los
documentos actuales estén involucrados en el sistema de gestión de la calidad.
Por lo que después de un análisis minucioso hemos llegado a la conclusión que LOGICA no
dispone de un control de documentos seguro puesto que cualquier persona puede realizar
cambios sin pedir permiso, o borrar dicho documento esto es una falencia la cual podría
perjudicar en la obtención de la norma ISO 9001:2008, el único control que tiene lógica es
que al documento final lo revisa el Gerente General de la empresa.
LOGICA consta de los siguientes procedimientos los cuales no están debidamente
controlados:
-
Almacenamiento de procedimientos: Los procedimientos de LOGICA son
actualmente almacenados en una carpeta en el servidor, la cual no tiene ninguna
seguridad extra para mantener esa información intacta.
-
Relación entre documentos y procedimientos: Actualmente LOGICA no consta de
una relación directa entre procedimiento y documento.
-
Control de cambios: LOGICA no mantiene un control de cambios de los documentos
de la empresa, ya que las personas encargadas pueden acceder a la red y cambiar el
documento que requieran. No existe seguridad alguna para este tipo de cambios
simplemente la confianza en el personal de trabajo. Debido a esto los certificadores de
la norma ISO 9001:2008 podrían levantar una no conformidad mayor, lo cual
impediría que la empresa sea certificada.
38
-
Aprobación de documentos: LOGICA consta solamente con una aprobación final
por parte de la Gerente General la cual revisa cuando el documento está listo para ser
firmado.
3.1.1.
Flujo de proceso actual de Control de Documentos
A continuación, mostramos un diagrama del proceso actual de la empresa con
relación al control de documentos:
Titulo
Descripción
Fecha
Autor/Fuente
Figura 5
Flujo del proceso de control de documentos actual
18/10/2012
Gustavo Justicia, Lucia Del Pino
3.1.2.
Definiciones y abreviaturas del sistema de gestión de calidad
SGC:
Sistema de Gestión de Calidad.
NA:
No aplica.
39
Documento:
Detalle de información referente a un tema en particular puede ser Manual,
Procedimiento, Proceso, Instructivo, Política de la Calidad, Objetivos de la Calidad,
Organigrama, Presentación de la empresa y Matriz de Objetivos.
LMD: Lista Maestra de Documentos.
LMR: Lista Maestra de Registros.
3.2. Proceso propuesto para la mejora del control de documentos
Después de analizar la situación actual de la empresa LOGICA y del proceso de control de
documentos, proponemos una mejora de proceso previo la implementación de un sistema
de control de documentos personalizado que permita suministrar la información, oportuna,
confiable, actualizada, y relevante a los procesos que realiza tanto como ventas, informes,
contratos, inventarios, servicios, etc., teniendo la posibilidad de toma de decisiones en
todos los noveles organizacionales siendo la información compatible con los procesos y
controles establecidos por la institución.
3.2.1 Metas y objetivos de la optimización y automatización del proceso
Objetivo general
 Realizar la automatización del modelo propuesto del sistema de control de
documentos.
Objetivos específicos
 Mejorar la calidad del control de documentos.
 Aumentar la rapidez, minimizar el esfuerzo de producción
 Aumentar la productividad reduciendo tiempo en elaboración
 Reducir la intervención humana
 Aumentar la seguridad de la información en la empresa
40
3.3.
Modelo estándar de control de documentos
Se necesita de una solución que permita la automatización, de forma segura y
eficiente, de todos los procesos actuales que se practican en las transacciones diarias
del negocio.
La siguiente documentación consistirá en el procedimiento,
el cual ha sido
elaborado en base a los lineamentos de la Norma ISO 9001:2008 y los
conocimientos adquiridos con la empresa consultora (KONEGGUI).
KONEGGUI es una empresa consultora la cual se encarga de implementación y
seguimientos de sistemas de gestión de calidad.
RESPONSABLE
ACTIVIDAD
DESCRIPCION DE LA ACTIVIDAD
DE LA ACTIVIDAD
 Aprobación de
 Persona
DE LOS DOCUMENTOS
los Documentos
responsable del
Un documento se considera como aprobado
documento.
cuando el encargado de calidad ha aprobado
un dado click en la aprobación, el sistema
automáticamente actualiza la lista maestra de
documentos (LMD). Estos documentos solo
pueden ser abiertos
únicamente por las
personas que les han designado permisos.
DE LOS FORMATOS Y LISTAS: Cada vez
que
se
requiera
realizar
un
cambio
significativo a este tipo de documentos los
responsables se comunican por medio de la
41
herramienta de control del cambios
El Representante de la Dirección realiza los
cambios
solicitados,
cambiará
automáticamente la fecha de la revisión, y
actualizará en los lugares pertinentes.
 Revisión y
 Cada vez que se requiera realizar un  Persona
Actualización de
cambio significativo a un documento, los
responsable del
los Documentos.
responsables mandan una notificación
documento.
mediante el módulo de gestión de
cambios al Representante de la Dirección
y se procede a ejecutar lo indicado para la
aprobación del cambio
 Identificación de
 Una vez que se ha realizado el cambio en  Persona
cambios y
el documento, éstos quedan identificados
responsable del
estado de
utilizando la manera secuencial y de
documento.
versión actual de
forma ascendente el nivel de versión que
los Documentos
corresponda, además se debe llenar el
detalle
del
historial
de
control
de
revisiones. Quedará registrado solo el
cambio de las últimas tres versiones
realizadas.
42
 El control de cambios solo aplica para
procesos, procedimientos, manuales e
instructivos. Para los demás documentos
se incrementa la revisión.
 Versiones
 Una vez realizado los cambios se subirá el  Persona
pertinentes de
documento la herramienta de control de
responsable del
los Documentos
documentos para ser aprobado, estos
documento.
documentos estarán disponibles para las
personas autorizadas en los puntos de
uso el cual será en la LMD.
 Documentos
 Todos los documentos son legibles e  Persona
permanecen
identificables por su nombre, fecha de
responsable del
legibles y
creación, revisión y aprobación.
documento.
fácilmente
identificables
 Protección de
los documentos
 Se contará con una base de datos que será  Representante de
administrada por el Representante de la
la Dirección
Dirección, el cual será encargado de dar
los respectivos permisos. Dicha base de
datos se encuentra centralizada en un
servidor con acceso protegido por usuario
y contraseña.
43
 Documentos de
 El Representante de la Dirección es el  Persona
origen externo
responsable de definir los documentos
responsable del
externos y subirlos al programa que
documento.
requieren ser incluidos en la LMD, y que
son
utilizados
en
sus
actividades
cotidianas y de asegurar que se mantiene
la versión actualizada del documento.
 Documentos
 No se mantienen documentos obsoletos.  Persona
Obsoletos
Titulo
Descripción
Fecha
Autor/Fuente
Solo se consideran documentos vigentes
responsable del
aquellos identificados en la LMD.
documento.
Tabla 1.1 Descripción del procedimiento
propuesto
Tabla del procedimiento propuesto.
18/10/2012
Gustavo Justicia, Lucia Del Pino
3.3.1. Flujo de control de documentos mejorado
44
Titulo
Descripción
Fecha
Autor/Fuente
Figura 6
Flujo del proceso de control de documentos mejorado
18/10/2012
Gustavo Justicia, Lucia Del Pino
A continuación se detalla un cuadro en el cual se explica la situación actual de la empresa y
como se propone realizar el modelo de control de documentos de acuerdo al flujo de
proceso mejorado mencionado anteriormente:
Control de
documentos basado
en la ISO 9001:2008
Revisión y
1 actualización de
documentos
Situación actual
Proceso mejorado
El encargado de delegar la creación puede seleccionar la
Solo el gerente de la empresa revisa y
persona que revisara o actualizara dicho documento para
actualiza el documento
posteriormente ser aprobado por el gerente de la empresa
45
2
Aprobación de
documentos
Identificación de
cambios y estado de
3
versión actual de
documentos
4
Confidencialidad de
los datos
Solo el documento final es aprobado
por el gerente de la empresa
El programa exige que exista una revisión antes de la
aprobación del documento
Las versiones se manejan por la
ultima fecha de modificación
El programa limita las versiones de un documento, se graba
automáticamente en la base con el numero de versión
correspondiente, los documentos no pueden ser modificados
luego de su aprobación, en caso de ser modificados se crea
automáticamente otra versión detallando el cambio en la
descripción del documento, por seguridad se almacena las 3
ultimas versiones del documento, en la base.
Todos los integrantes de la empresa
tienen acceso a modificar y leer la
información
El programa permite la creación de grupos y perfiles con
usuario y contraseña tanto para la lectura como la
modificación de documentos
Seguridad de la
5
información
Los documentos se almacenan en una base de datos, los
Los datos se encuentran en un
usuarios solo podrán acceder a ciertos documentos de
servidor en una carpeta compartida, y
acuerdo a su perfil por medio de usuario y contraseña, mas
no existe seguridad de la información
no externamente
6 Procesos del negocio
Los procesos de la empresa se
encuentra en documentos en la
carpeta general
Los procesos se almacenan en una tabla de procesos lo
cuales podrán ligarse a los documentos que se realicen en el
transcurso del tiempo
Los documentos obsoletos se graban
en la red o son borrados a discreción
de usuario
El programa guarda únicamente las 3 últimas versiones las
de mas se borran automáticamente muestras se vaya
creando una versión más.
Documentos obsoleto
7
Tabla 1.2 Situación actual VS proceso mejorado
Propuesta de control de documentos mejorado vs la
Descripción situación actual de la empresa.
18/10/2012
Fecha
Autor/Fuente Gustavo Justicia, Lucia Del Pino
Titulo
46
CAPÍTULO IV
DISEÑO LÓGICO CONCEPTUAL DEL PROCESO A AUTOMATIZAR
Se presenta el diseño de la aplicación y sus respectivos diagramas comenzado con una breve
explicación de la metodología utilizada, el análisis de requerimientos de software la cual es
muy importante puesto que mediante esta información se realizara los respectivos controles de
la seguridad de la información teniendo en cuenta los roles que nombra en la ISO 9001:2008,
para un mejor entendimiento se realizó los diagramas de caso de uso los que ayudaran a un
mejor entendimiento de las relaciones del desarrollo con el usuario, terminando con las
especificaciones de la arquitectura y los componentes de interacción.
4.1. Metodología Rapid Application Development (RAD)
El desarrollo rápido de aplicaciones (RAD) es una metodología de desarrollo de
software, que implica el desarrollo iterativo y la construcción de prototipos. El
desarrollo rápido de aplicaciones es un término originalmente utilizado para describir
un proceso de desarrollo de software introducido por James Martin en 1991.
Entre sus Principios básicos:
-
Rápido desarrollo y entrega de una alta calidad en un sistema de relativamente bajo
costo de inversión.
-
Reducción de riesgos inherentes del proyecto debido a segmentación del proyecto
-
Se enfoca en los requerimientos del cliente y la manera de plasmarlos en el sistema,
mas que en la ingeniería tecnológica
47
-
En general incluye Joint application development (JAD), donde los usuarios están
intensamente participando en el diseño del sistema, ya sea a través de la creación de
consenso estructurado en talleres, o por vía electrónica.
-
La participación activa de los usuarios es imprescindible.
-
Produce la documentación necesaria para facilitar el futuro desarrollo y
mantenimiento.
Esta metodología tiene un ciclo de vida corto y está basado mayormente en el
desarrollo de prototipos mediante reuniones constantes con el cliente final. Esta
metodología está divida en cuatro fases:

Fase de planificación de requerimientos – Combina los elementos de análisis
y planificación de sistemas del ciclo de vida del desarrollo de software general;
Aquí los usuarios finales, gerentes y los miembros del equipo de desarrollo
discuten y acuerdan las necesidades del negocio, el alcance del proyecto, las
limitantes y los requerimientos del sistema. Esta fase acaba cuando el equipo
se pone de acuerdo en los problemas clave y obtiene la autorización de
continuar con el siguiente paso.

Fase de diseño de usuario – En esta fase los usuarios interactúan con los
analistas del sistema y desarrollan los modelos y prototipos que representarán
todos los procesos del sistema sus entradas y salidas. La fase de diseño de
usuario es un proceso continuo interactivo que permite a los usuarios modificar
e incluso eventualmente aprobar un modelo funcional del sistema que cumpla
sus necesidades.

Fase de construcción – Se enfoca en el desarrollo de la aplicación de forma
similar que en el ciclo de vida del software, sin embargo en esta metodología el
usuario continúa participando y aún puede sugerir cambios o mejoras “sobre la
marcha”.
48

Fase de transición – En esta se junta las tareas finales en una implementación
del ciclo de vida del software incluyendo la conversión de datos cambios al
nuevo sistema y la capacitación a los usuarios. De esta forma el sistema esta
puesto en producción de una manera mucho más rápida.
4.2. UML
UML o Lenguaje de Modelado Unificado, es el lenguaje de modelado mas
utilizado a nivel mundial para al definición de diagramas y modelos enfocados al
desarrollo de software, es un lenguaje sumamente útil para la representación de
procesos y los diferentes componentes que existen y conviven dentro de un
sistema de información.
Los diagramas UML pueden ser considerados de importancia vital al momento de
apoyarse en una metodología de desarrollo de software, debido a su organización,
trazabilidad de procesos y actividades que realiza un sistema desarrollado lo cual
permite un alto grado de calidad y mantenibilidad del software.
4.2.1. Diagramas de Casos de uso
Los diagramas de casos de uso describen las relaciones y las dependencias entre un
grupo de casos de uso y los actores participantes en el proceso.
Es importante resaltar que los diagramas de casos de uso no están pensados para
representar el diseño y no puede describir los elementos internos de un sistema. Los
diagramas de casos de uso sirven para facilitar la comunicación con los futuros
usuarios del sistema, y con el cliente, y resultan especialmente útiles para determinar
las características necesarias que tendrá el sistema. En otras palabras, los diagramas de
casos de uso describen qué es lo que debe hacer el sistema, pero no cómo.
49
F.1 Ingreso al Sistema
Coordinador/Representante
de la Dirección
Titulo
Descripción
Fecha
Autor/Fuente
Responsable
Figura 7
Ejemplo de caso de uso
18/10/2012
Gustavo Justicia, Lucia Del Pino
Los casos de uso son descriptores de las interacciones típicas entre los usuarios de
un sistema y ese mismo sistema. Representan el interfaz externo del sistema y
especifican qué requisitos de funcionamiento debe tener este cuando se trabaja con
casos de uso, es importante tener presentes algunas sencillas reglas:
-
Cada caso de uso está relacionado como mínimo con un actor
-
Cada caso de uso lleva a un resultado relevante (un resultado
con «valor intrínseco»)
Los casos de uso pueden tener relaciones con otros casos de uso. Los tres tipos de
relaciones más comunes entre casos de uso son:
-
<<include>> que especifica una situación en la que un caso de
uso tiene lugar dentro de otro caso de uso
-
<<extends>> que especifica que en ciertas situaciones, o en
algún punto (llamado punto de extensión) un caso de uso será
extendido por otro.
-
Generalización que especifica que un caso de uso hereda las
características del «super» caso de uso, y puede volver a
especificar algunas o todas ellas de una forma muy similar a las
herencias entre clases.
50
Actor
Un actor es una entidad externa (de fuera del sistema) que interacciona con el
sistema participando (y normalmente iniciando) en un caso de uso. Los actores
pueden ser gente real (por ejemplo, usuarios del sistema), otros ordenadores o
eventos externos.
Los actores no representan a personas físicas o a sistemas, sino su rol. Esto significa
que cuando una persona interactúa con el sistema de diferentes maneras (asumiendo
diferentes papeles), estará representado por varios actores. Por ejemplo, una persona
que proporciona servicios de atención telefónica a clientes y realiza pedidos para
los clientes estaría representada por un actor «equipo de soporte» y por otro actor
«representante de ventas».
Descripción de casos de uso
Las descripciones de casos de uso son reseñas textuales del caso de uso.
Normalmente tienen el formato de una nota o un documento relacionado de alguna
manera con el caso de uso, y explica los procesos o actividades que tienen lugar en
el caso de uso. 2
4.2.2. Modelo E-R
Diagrama Entidad Relación: Denominado por sus siglas como: E-R. Este modelo
representa a la realidad a través de un Esquema gráfico empleando los terminología
de Entidades, que son objetos que existen y son los elementos principales que se
identifican en el problema a resolver con el diagramado y se distinguen de otros por
sus características particulares denominadas Atributos, el enlace que rige la unión
de las entidades está representada por la relación del modelo.
2
http://docs.kde.org/stable/es/kdesdk/umbrello/uml-elements.html
51
Titulo
Descripción
Fecha
Autor/Fuente
Figura 8
Ejemplo de modelo entidad relación
18/10/2012
Gustavo Justicia, Lucia Del Pino
En un diagrama entidad relación, cada entidad se representa mediante un rectángulo, cada
relación mediante un rombo y cada dominio (conjunto donde toma valores el atributo)
mediante un círculo. Mediante líneas se conectan las entidades con las relaciones, igual que
las entidades con los dominios, representando a los atributos. Los Atributos Llaves se
representan subrayando el correspondiente conjunto de valores.
En ocasiones, una entidad no puede ser identificada únicamente por el valor de sus propios
atributos. En estos casos, se utilizan conjuntamente las relaciones con los atributos para
lograr la requerida identificación unívoca. Estas entidades reciben el nombre de entidades
débiles y se representan en el DER con un doble rectángulo. El MER restringe las
relaciones a usar para identificar las entidades débiles a relaciones binarias del tipo 1: N.
Así, por ejemplo, una ocurrencia de "trabajador" puede tener N ocurrencias "persona52
dependiente" asociadas, donde además, la existencia de las ocurrencias en la segunda
entidad depende de la existencia de una ocurrencia que le corresponda en la primera
entidad. Por ejemplo, en el modelo habrá personas dependientes de un trabajador sólo si ese
trabajador existe. La llave de una entidad débil se forma combinando la llave de la entidad
regular que la determina con algún otro atributo que defina unívocamente cada entidad
débil asociada a una entidad regular dada. (Una entidad se denomina regular si no es débil).
En una relación, la llave es la combinación de las llaves de todas las entidades asociadas.
Para cada relación se determina su tipo (simple o complejo) y en el DER se escribe el tipo
de correspondencia. Por ejemplo, una empresa puede tener varios (n) trabajadores
asociados y un trabajador pertenece a una sola empresa (1). En la relación TrabajadorMáquina-Pieza, un trabajador puede trabajar en n máquinas, produciendo p piezas, o una
pieza puede ser producida por m trabajadores en n máquinas. Aquí, m, n y p no identifican
un número específico, sino solamente el tipo de correspondencia que se establece en la
relación.
El Modelo Entidad-Relación.
-
Se elabora el diagrama (o diagramas) entidad-relación.
-
Se completa el modelo con listas de atributos y una descripción de otras
restricciones que no se pueden reflejar en el diagrama.
Dado lo rudimentario de esta técnica se necesita cierto entrenamiento y experiencia para
lograr buenos modelos de datos.
El modelado de datos no acaba con el uso de esta técnica. Son necesarias otras técnicas para
lograr un modelo directamente implementable en una base de datos. Brevemente:
-
Transformación de relaciones múltiples en binarias.
-
Normalización de una base de datos de relaciones (algunas relaciones pueden
transformarse en atributos y viceversa).
53
-
Conversión en tablas (en caso de utilizar una base de datos relacional).3
4.2.3. Diagrama de Clases
Un diagrama de clases es un tipo de diagrama estático que describe la estructura de un
sistema mostrando sus clases, atributos y las relaciones entre ellos. Los diagramas de clases
son utilizados durante el proceso de análisis y diseño de los sistemas, donde se crea el
diseño conceptual de la información que se manejará en el sistema, y los componentes que
se encargarán del funcionamiento y la relación entre uno y otro.4
Titulo
Descripción
Fecha
Autor/Fuente
Figura 9
Ejemplo de diagrama de clases
18/10/2012
Gustavo Justicia, Lucia Del Pino
4.2.4. Diagrama de Componentes
Un diagrama de componentes muestra las dependencias lógicas entre componentes
de software, sean éstos componentes fuentes, binarios o ejecutables, ilustran las
3
http://www.ecured.cu/index.php/Diagrama_Entidad_Relaci%C3%B3n
4
http://es.wikipedia.org/wiki/Diagrama_de_clases
54
piezas del software, controladores embebidos, etc. Los diagramas de Componentes
prevalecen en el campo de la arquitectura de software pero pueden ser usados para
modelar y documentar cualquier arquitectura de sistema, es decir para describir la
vista de implementación estática de un sistema. Los diagramas de componentes se
relacionan con los diagramas de clases, ya que un componente normalmente se
corresponde con una o más clases, interfaces o colaboraciones pero un diagrama de
Componentes tiene un nivel más alto de abstracción que un diagrama de clase,
usualmente un componente se implementa por una o más clases (u objetos) en
tiempo de ejecución. Estos son bloques de construcción, como eventualmente un
componente puede comprender una gran porción de un sistema
Para todo sistema OO se han de construir una serie de diagramas que modelan tanto
la parte estática, como de la parte dinámica, pero llegado el momento todo esto se
debe materializar en un sistema implementado.
Los componentes software tienen tipo, que indica si son útiles en tiempo de
compilación, enlace o ejecución. Se consideran en este tipo de diagramas solo tipos
de componentes. Instancias específicas se encuentran en el diagrama de ejecución.
Los componentes son similares en práctica a los diagramas de paquete como los
límites definidos y se usan para agrupar elementos en estructuras lógicas. La
diferencia entre Diagramas de Paquete y Diagramas de Componente es que los
diagramas de componente ofrecen un mecanismo de agrupamiento más rico
semánticamente. Con los Diagramas de Componente todos los elementos del
modelo son privados mientras que los diagramas de Paquete solo muestran ítems
públicos.
Utilización de los diagramas de componentes:
55
Los diagramas de componentes pueden ser utilizados para modelar sistema de
software de cualquier tamaño y complejidad. La herramienta no permite especificar
un componente como unidad modular con interfaces bien definidos, reemplazable
dentro de su ambiente.
El concepto de componente encaja dentro de las ideas de desarrollo basado en
componentes y estructuración de sistemas basada en componentes, en las cuales un
componente se va modelando a través de todo el ciclo de desarrollo y
sucesivamente se va refinando hasta llegar a su implantación y creación de su “run
time” módulo ejecutable. Un componente puede ser considerado como una unidad
autónoma, dentro de un sistema o subsistema, tiene uno o mas interfaces
proporcionados o requeridos y sus interioridades permanecen ocultas e inaccesibles,
con expresión de la forma que esta previa e sus interfaces.
Si los componentes se diseñan de tal forma que puedan ser tratados tan
independientemente como sea posible, esos componentes y los subsistemas que
ellos conforman, podrán ser reutilizados y sustituidos en forma flexible,
conectándolos a través de sus interfaces. Así mismo, una vez desinstalados, esos
componentes pueden ser re implementados independientemente, cuando sea
necesario actualizar las funciones de un sistema en producción5
4.3. Análisis de requerimientos de software.
Para el análisis de requerimientos de software nos basamos en la planificación de
requerimientos de acuerdo a la metodología RAD, realizamos la validación de los actores
5
virtual.usalesiana.edu.bo/web/practica/archiv/compon.doc
56
principales del sistema con el personal clave de la compañía, roles y permisos, así como
las funcionalidades y navegabilidad por cada uno de los actores validados.
4.3.1. Roles
Identificamos los roles principales de usuarios del sistema y definimos 2 usuarios
con los siguientes privilegios:
-
Representante de la Dirección: El Representante de la Dirección es el encargado
de aprobar todos los documentos para garantizar la correcta aplicación de los
estándares de las normativas adoptadas por la empresa y de entes reguladores.
Como parte importante el representante de la dirección además, es el encargado de
otorgar permisos de revisión a los demás empleados de la compañía cuando así lo
amerite, por cada documento. El Representante de la Dirección además juega un
papel importante en la administración de toda la documentación, procedimientos y
gestión de permisos del personal que pueda acceder a visualizar dicha
documentación.
-
Coordinador: El Coordinador es el personal encargado de delegar la creación de
documentación a los diferentes responsables, generalmente el Coordinador es la
persona dueña de los procesos de negocio, debido a ésto el Coordinador es el
encargado principal de la Gestión de Procesos de Negocio, quien diseña y
determina los procesos de la compañía y la relación que tienen estos entre sí, y con
la diferente documentación de la compañía.
El Coordinador adicionalmente debe tomar parte activa en la revisión de
documentación realizada por los responsables, o definir que documentos pueden ser
visualizados por los diferentes empleados en la compañía. Toda la documentación
revisada por el Coordinador deberá ser finalmente aprobada por el Representante
de la Dirección para ser depositada de manera definitiva en la LMD.
57
-
Responsable: El Responsable es definido como el empleado encargado de realizar
la documentación delegada por parte del Coordinador o, en ciertos casos el
Representante de la Dirección. El responsable adicionalmente deberá realizar el
respectivo monitoreo a los documentos que ha realizado y de ser el caso y requerir
una actualización del documento solicitar al Coordinador o al Representante de la
Dirección la gestión de realización del mismo.
-
Administrador de Seguridad: El administrador de seguridad está definido como
un rol exclusivamente para la gestión de usuarios y las opciones que pueda tener en
el sistema, si bien en la compañía no se cuenta con personal específico para realizar
esta tarea, se asignará dentro de la compañía un responsable de la administración
de seguridad del sistema.
4.3.2. Especificación de Funcionalidades
4.3.2.1. Funcionalidades Generales
El sistema desarrollado será capaz de permitir al personal de LOGICA
mantener un correcto control de documentos en base a la Norma
ISO9001:2008.
4.3.2.2. Funcionalidades Específicas
Se definió con el personal clave de la empresa LOGICA las funcionalidades del sistema las
cuales fueron divididas por las responsabilidades y roles definido anteriormente:
4.3.2.3. Funcionalidades para el Representante de la Dirección:

Gestión de documentos
o
Aprobación de documentos
58


o
Revisión de documentos
o
Creación de documentos
o
Búsqueda de documentos
o
Visualización de documentos
o
Visualización de la LMD general
o
Delegación de creación de documentos
o
Delegación de modificación de versión de documentos
o
Asignación de permisos de lectura
o
Revocación de permisos de lectura
o
Vinculación de documentos con procesos del negocio
o
Desvinculación de documentos con procesos del negocio
Gestión de Procesos
o
Creación de procesos
o
Eliminación de Procesos
o
Modificación de Procesos
o
Visualización de Procesos
o
Vinculación con otros procesos del negocio
o
Desvinculación de procesos del negocio
o
Ingreso de diagramas de procesos
Revisión de Notificaciones
o

Visualizar Notificaciones
Gestión de Cambios
o
Solicitud de creación de usuarios
o
Solicitud de eliminación de usuarios
o
Solicitud de modificación de usuarios
59
4.3.2.4. Funcionalidades para el Coordinador:



Gestión de documentos
o
Revisión de documentos
o
Creación de documentos
o
Búsqueda de documentos
o
Visualización de documentos
o
Delegación de creación de documentos
o
Delegación de modificación de versión de documentos
o
Asignación de permisos de lectura
o
Revocación de permisos de lectura
o
Vinculación de documentos con procesos del negocio
o
Desvinculación de documentos con procesos del negocio
Gestión de Procesos
o
Creación de procesos
o
Eliminación de Procesos
o
Modificación de Procesos
o
Visualización de Procesos
o
Vinculación con otros procesos del negocio
o
Desvinculación de procesos del negocio
o
Ingreso de diagramas de procesos
Revisión de Notificaciones
o

Visualizar Notificaciones
Gestión de Cambios
o
Solicitud de cambio en documentos

Solicitud de revocación de permisos

Solicitud de asignación de permisos
60

Solicitud de creación de nuevo documento

Solicitud de dar de baja documento
o
Solicitud de creación de usuarios
o
Solicitud de eliminación de usuarios
o
Solicitud de modificación de usuarios
4.3.2.5. Funcionalidades para el Responsable:


Gestión de documentos
o
Creación de documentos
o
Búsqueda de documentos
o
Visualización de documentos
Gestión de Procesos
o

Revisión de Notificaciones
o

Visualización de Procesos
Visualizar Notificaciones
Gestión de Cambios
o
Solicitud de cambio en documentos

Solicitud de creación de nuevo documento

Solicitud de dar de baja documento
4.3.2.6. Funcionalidades para el Administrador de Seguridad:


Gestión de Usuarios
o
Modificar usuario
o
Modificar cuentas de usuario
o
Bloquear usuario
Gestión de Perfiles
61
o
Creación de perfiles
o
Modificación de opciones por perfil
4.3.3. Diagramas de caso de uso
Una vez terminada la definición de funcionalidades se detalla a continuación la
diagramación de las mismas. Realizamos diagramas UML de casos de uso para el
entendimiento general de las funcionalidades del sistema por parte del personal
clave de LOGICA.
62
4.3.3.1. Diagrama de Casos de Uso General
F.1 Ingreso al Sistema
F.2 Revisión de
Notificaciones
Responsable
F.3 Control de Documentos
F.4 Administración de
Procesos de Negocio
Coordinador/Representante
de la Dirección
F.5 Administración de
Usuarios
Administrador de
Seguridad
F.6 Administración de
Perfiles
F.7 Administración de
Grupos
F.8 Generar Solicitudes de
cambio
F.9 Administrar Cuenta de
Usuario Activo
F.10 Apariencia de
Escritorio
Titulo
Descripción
Fecha
Autor/Fuente
Figura 10
Diagrama general de caso
de uso
18/10/2012
Gustavo Justicia, Lucia
Del Pino
63
4.3.3.2. Diagramas de caso de uso a detalle
Los diagramas de caso de uso a detalle se encuentran documentados
en el anexo.
4.4. Especificaciones de Funcionalidades.

El sistema permitirá la administración de usuarios y grupos:

El sistema permitirá almacenar los documentos.

El sistema permitirá al usuario aprobar, revisar los documentos.

El sistema permitirá al usuario leer los documentos.

El sistema permitirá restringir las versiones de los documentos.

El sistema permitirá enviar notificaciones entre los miembros de la oficina.

El sistema tendrá un control de seguridad que será manejado por el Representante de
la dirección.

Los usuarios podrán solicitar por medio del sistema cambios a los documentos los
cuales serán aprobados por Representante de la dirección.

Los usuarios podrán solicitar cambios a usuarios al Representante de la dirección.

El representante de la dirección o usuario encargado podrá delegar permiso para ver
los documentos aprobados.

El sistema informará a los usuarios cuando se necesite cambiar el estado de un
documento
4.5. Especificaciones de Arquitectura.
4.5.1. Arquitectura de software
La arquitectura utilizada para la realización del proyecto, fue una arquitectura de software,
cliente/servidor multicapa debido a la posibilidad que tiene el sistema de incrementar en
64
funcionalidad y complejidad. Por motivo de interfaz de usuario y, debido a que la
aplicación se mantendrá en un ambiente tecnológico de nivel de complejidad bajo, es decir
los usuarios del sistema serán entre 3 a 10 personas.
Las capas utilizadas para el desarrollo de la aplicación se determinaron como las
siguientes:
 Capa de Negocio
 Capa de Utilidades
 Capa de Persistencia
 Capa de Interfaz Gráfica
Título
Descripción
Fecha
Autor/Fuente
Figura 11. Capas del sistema
Representación de los niveles y capas de la
arquitectura del sistema desarrollado
18/10/2012
Gustavo Justicia, Lucia Del Pino
4.5.1.1. Capa de Negocio
En esta capa se encuentran distribuidos todos los lineamientos y la lógica del
negocio utilizada para realizar la interacción entre la interfaz de usuario y la
persistencia de datos, adicionalmente esta capa se encuentra vinculada de manera
importante con la capa de utilidades.
65
4.5.1.2. Capa de Utilidades
La capa de utilidades es extensamente vinculada con la capa de negocio, esto se
debe a que se utilizan y re-utilizan varias utilidades y clases para la generación de
información de la capa de negocio. En la capa de utilidades se encuentran
distribuidos todos los componentes que asisten de manera directa o indirecta a la
lógica del negocio.
4.5.1.3. Capa de Persistencia
La capa de persistencia de datos es manejada directamente por Hibernate, esta capa
es accedida por la Capa de Utilidades y la Capa de Negocio para realizar la correcta
persistencia de datos. Las clases incluidas en la capa de persistencia de datos
ayudan a realizar un mapeo directo con las tablas distribuidas sobre el motor de
base de datos. Existe una sincronización entre estas tablas y los objetos de esta
capa.
4.5.1.4. Capa de Interfaz Gráfica de Usuario
La capa de interfaz de usuario está diseñada para albergar todo lo referente a
visualización y facilitación de la interacción del usuario final con el sistema, esta
capa nos ayuda a mostrar ambientes de interfaz gráfica generalmente más
complejos que los generados por medios WEB, con relativa facilidad para mostrar
la información necesaria a los usuarios finales
66
4.5.2. Componentes de Interacción
Título
Descripción
Fecha
Autor/Fuente
El sistema
Figura 12. Diagrama de despliegue
Diagrama de despliegue de la aplicación,
indicando sus componentes y cómo interactúan
18/10/2012
Gustavo Justicia, Lucia Del Pino
funciona sobre una máquina virtual java, este a su vez se mantiene
interconectado mediante un pool de conexiones creados por Hibernate a una instancia del
motor de base de datos, el sistema a su vez se mantiene activamente recibiendo y enviando
notificaciones mediante correo electrónico, motivo por el cual todos los usuarios del
sistema deberán tener una cuenta de correo electrónico para la correcta utilización del
sistema. Los protocolos de envío y recepción de correos electrónicos a utilizar, soportados
por la arquitectura actual del sistema son IMAP y SMTP. Ambos tendrán la posibilidad de
realizar las conexiones mediante protocolos adicionales de transporte seguros, en el caso de
esta aplicación por SSL o TLS, de tal manera que se podrá mantener una conexión segura
para la transmisión de datos. Sin embargo la anteriormente mencionada funcionalidad de la
aplicación no es una función crítica del sistema debido a que únicamente se utiliza como un
67
método de notificación entre los diferentes actores del sistema. No existe el transporte de
datos sensibles por medio de estas comunicaciones.
68
CAPÍTULO V
DESARROLLO DE LA APLICACIÓN
Se describe lo esencial del desarrollo de la aplicación siguiendo la metodología RAD, se
explica brevemente el detalle de las herramientas utilizadas, leguaje de programación, por que
fueron escogidos para la elaboración del desarrollo, los diagramas que constan en la fase de
diseño y el prototipo del aplicativo, para terminar se detalla la parte de la construcción la cual
consiste en seis pasos esenciales los cuales son : Implementación, pruebas, fase de transición,
seguridades, despliegue y mantenimiento los cuales serán explicados
5.1. Lenguaje de programación
Después de analizar varias opciones de lenguajes de programación hemos definido usar
Java, puesto que es un lenguaje robusto, simple ya que posee una curva de aprendizaje
muy rápida.
Java es un lenguaje orientado a objetos, posee características de encapsulación de
métodos y funciones y datos. Java maneja un sistema de ejecución de tiempo real basado
en una máquina virtual llamada JVM, está máquina virtual realiza una compilación en
tiempo real de su byte-code, el cual permite una rápida respuesta al utilizarse en sistemas
de cualquier plataforma. El lenguaje además posee de la capacidad de manejar diferentes
hilos de procesamiento lo cual permite un nivel de ejecución paralelo entre los diferentes
componentes del desarrollo de software realizado con este lenguaje.
Las ventajas primordiales que vimos en utilizar Java como lenguaje de programación para
el proyecto fue:
 Es un lenguaje de código abierto y como usuarios no tendremos que luchar contra
impuestos sobre patente anuales
69
 Es independiente de plataforma y estamos libres de usar cualquier IDE para
desarrollo
 El lenguaje de programación java es seguro puesto que encapsula sus datos y nos
permitirá manejar con confianza información confidencial.
 Este lenguaje al ser parte de la formación profesional impartida a lo largo de la
carrera, es un lenguaje conocido y dominado por el equipo de desarrollo.
5.2. Herramientas utilizadas
5.2.1. Power Designer 15.2.
En la elaboración de los UML escogimos realizar con power designer puesto que
fue la herramienta con la cual se ha trabajado en las materias de Ingeniería de
software II, dictada por el ingeniero Fabián De La Cruz y de la cual se tiene un
conocimiento solido del funcionamiento y metodología de trabajo.
Power Designer, es una herramienta de modelado poderosa, la cual ha formado
parte de las mejores aplicaciones para el modelamiento de procesos de negocio, y
principalmente para el caso de desarrollo de software en particular, en el modelado
de diagramas UML. Esta herramienta permite a las empresas, de manera más fácil,
visualizar, analizar y manipular metadatos, logrando un efectiva arquitectura
empresarial de información.
PowerDesigner en cuanto a Arquitectura Empresarial también brinda un enfoque
basado en modelos, el cual permite alinear al negocio con la tecnología de
información, facilitando la implementación de arquitecturas efectivas de
información empresarial. Brinda potentes técnicas de análisis, diseño y gestión de
metadatos a la empresa.
PowerDesigner
combina
varias
técnicas
estándar
de
modelamiento con
herramientas líder de desarrollo, como .NET, Sybase WorkSpace, Sybase
Powerbuilder, Java y Eclipse, para darle a las empresas soluciones de análisis de
70
negocio y de diseño formal de base de datos. Además trabaja con más de 60 bases
de datos relacionales.
Beneficios
-
Mejor calidad al momento de alinear el negocio con las tecnologías de la
información.
-
Su nivel de personalización es ampliamente alta, permitiendo acogerse a los
estándares y regulaciones internacionales, así como normativas específicas
de la empresa a la cual pertenezca el software a ser desarrollado.
-
Facilita la arquitectura empresarial, documentando los sistemas existentes.
5.2.2. Herramienta de desarrollo
Después de realizar la selección del lenguaje de programación analizamos
los distintos IDE que se encuentran en el mercado y nos inclinamos por la
opción de Netbeans por las siguientes ventajas que nos presenta este IDE:
NetBeans es un entorno de desarrollo integrado libre, hecho principalmente
para el lenguaje de programación Java. Existe además un número
importante de módulos para extenderlo. NetBeans IDE es un producto libre
y gratuito sin restricciones de uso.
NetBeans es un IDE con una comunidad en constante crecimiento, y con
cerca de 100 socios en todo el mundo.
La plataforma de NetBeans permite que las aplicaciones sean desarrolladas
a partir de un conjunto de componentes de software llamados módulos. Un
módulo es el conjunto de clases java especificadas para interactuar con las
diferentes APIs de NetBeans y un archivo especial (manifest file) que lo
71
identifica como módulo. Las aplicaciones construidas a partir de módulos
pueden ser extendidas agregándole nuevos módulos. Debido a que los
módulos pueden ser desarrollados independientemente.
Otra de las ventajas analizadas para el proyecto es la facilidad de
integración con el framework Hibernate, el cual es una parte esencial del
proyecto ya que con Hibernate, tenemos una total independencia con el
motor de base de datos , independizando de manera total la capa de datos
con la capa de lógica de negocio por lo cual únicamente con añadir un
archivo de conexión se puede tener acceso a cualquier motor de base de
datos . Gracias a esta integración tendremos los datos en un cache de
memoria, estos datos dependiendo de la manera de configuración de
Hibernate residirán en la memoria principal al momento de generar una
sesión de Hibernate, esto quiere decir que los sucesivos accesos a la base
de datos utilizarán recursos mínimos para la consulta de datos en memoria.
5.2.3. Motor de base de datos
Para seleccionar el motor de base de datos optamos por analizar las ventajas
que nos brindan los motores que teníamos conocimiento y llegamos a la
conclusión que MYSQL nos brinda una gran expectativa para el desarrollo
entre estas encontramos las siguientes:
1. Escalabilidad y flexibilidad
El servidor de bases de datos MySQL ofrece lo último en escalabilidad, siendo
capaz de manejar bases de datos empotradas ocupando sólo 1MB, y hacer
funcionar data warehouses que contengan terabytes de información. La
flexibilidad de plataforma es una característica clásica de MySQL, soportando
72
distintas versiones de Linux, UNIX y Windows Y, por supuesto, la naturaleza
open source de MySQL permite una personalización completa para aquellos
que deseen añadir características al servidor.
2.
Alto rendimiento
Una arquitectura única de motores de bases de datos permite a los profesionales
configurar el servidor MySQL para aplicaciones específicas, dando como
resultado un rendimiento espectacular MySQL puede cumplir con las
expectaciones de rendimiento de cualquier sistema, ya sea un sistema de
procesamiento transaccional de alta velocidad, o un sitio web de gran volúmen
sirviendo un billón de consultas diarias MySQL ofrece la munición adecuada
para sistemas críticos mediante herramientas de carga de alta velocidad, índices
full-text y otros mecanismos de mejora del rendimiento.
3. Alta disponibilidad
Solidez y disponibilidad constante son características distintivas de MySQL,
con clientes confiando en ellas para garantizar el uptime en todo momento
MySQL ofrece una amplia variedad de soluciones de alta disponibilidad, desde
replicación a servidores de cluster especializados, u ofertas de terceros.
4. Robusto soporte transaccional
MySQL ofrece uno de los motores de bases de datos transaccionales más
potentes del mercado. Las características incluyen un soporte completo de
ACID (atómica, consistente, aislada, duradera), bloqueo a nivel de filas,
posibilidad de transacciones distribuidas, y soporte de transacciones con
múltiples versiones donde los lectores no bloquean a los escritores y viceversa
73
También se asegura una integridad completa de los datos mediante integridad
referencial, niveles de aislamiento de transacciones especializados, y detección
de deadlocks.
5.
Fortalezas en Web y Data Warehouse
MySQL es el estándar de-facto para sitios web de gran tráfico por su motor de
consultas de alto rendimiento, su posibilidad de insertar datos a gran velocidad,
y un buen soporte para funciones web especializadas como las búsquedas
fulltext. Estas mismas fortalezas también se aplican a entornos de data
warehousing, donde MySQL escala hasta el rango de los terabytes tanto para un
solo servidor, como para varios. Otras características como las tablas en
memoria, índices B-tree y hash, y tablas comprimidas hasta un 80% hacen de
MySQL una buena opción para aplicaciones web y de business intelligence.
6.
Fuerte protección de datos
Porque proteger los datos es el trabajo principal de los profesionales de bases de
datos, MySQL ofrece características de seguridad que aseguran una protección
absoluta de los datos En cuanto a autenticación, MySQL ofrece potentes
mecanismos para asegurar que sólo los usuarios autorizados tienen acceso al
servidor. También se ofrece soporte SSH y SSL para asegurar conexiones
seguras. Existe una estructura de privilegios que permite que los usuarios sólo
puedan acceder a los datos que se les permite, así como potentes funciones de
cifrado y descifrado para asegurarse de que los datos están protegidos
Finalmente, se ofrecen utilidades de backup y recuperación por parte de
74
MySQL y terceros, que permiten copias completas, tanto lógicas como físicas,
así como recuperación point-in-time.
7. Desarrollo de aplicaciones completo
Uno de los motivos por los que MySQL es las bases de datos open source más
popular es que ofrece un soporte completo para cualquier necesidad de
desarrollo. En la base de datos se puede encontrar soporte para procedimientos
almacenados, triggers, funciones, vistas, cursores, SQL estándar, y mucho más.
Existen librerías para dar soporte a MySQL en aplicaciones empotradas.
También se ofrecen drivers (ODBC, JDCBC,…) que permiten que distintos
tipos de aplicaciones puedan usar MySQL como gestor de bases de datos. No
importa es PHP, Perl, Java, Visual Basic, o .NET, MySQL ofrece a los
desarrolladores todo lo que necesitan para conseguir el éxito en el desarrollo de
sistemas de información basados en bases de datos.
8. Facilidades de gestión
MySQL ofrece posibilidades de instalación excepcionales, con un tiempo
medio desde la descarga hasta completar la instalación de menos de quince
minutos. Esto es cierto sin importar que la plataforma sea Windows, Linux,
Macintosh, o UNIX Una vez instalado, características de gestión automáticas
como expansión automática del espacio, o los cambios dinámicos de
configuración descargan parte del trabajo de los atareados administradores.
MySQL también ofrece una completa colección de herramientas gráficas de
gestión que permiten al DBA gestionar, controlar y resolver problemas en
varios servidores desde una misma estación de trabajo. Además, hay multitud
75
de herramientas de terceros que gestionan tareas como el diseño de datos y
ETL, administración, gestión de tareas y monitorización.
9. Open Source y soporte 24 / 7
Muchas empresas no se atreven a adoptar software open source porque creen
que no podrán encontrar el tipo de soporte o servicios profesionales en los que
confían
con
su
software
propietario
actual.
Las
preguntas
sobre
indemnizaciones también aparecen. Estas preocupaciones pueden desaparecer
con el completo servicio de soporte e indemnización disponibles. MySQL no es
un proyecto típico Open Source ya que todo el software es propiedad de
MySQL AB, lo que permite un modelo de coste y soporte que ofrezca una
combinación única entre la libertad del open source y la confianza de un
software con soporte.
10. Coste Total de Propiedad menor
Al migrar aplicaciones actuales a MySQL, o usar MySQL para nuevos
desarrollos, las empresas están ahorrando costes que muchas veces llegan a las
siete cifras. Las empresas están descubriendo que, gracias al servidor MySQL y
las arquitecturas scale-out que utilizan hardware económico, pueden alcanzar
niveles sorprendentes de escalabilidad y rendimiento, y todo a un coste bastante
menor que el de los sistemas propietarios. Además, la robustez y facilidad de
mantenimiento de MySQL implican que los administradores no pierden el
tiempo con problemas de rendimiento o disponibilidad, sino que pueden
concentrarse en tareas de mayor impacto en el negocio.6
6
http://warp.es/mysql/productos/razones/
76
5.2.4. Hibernate
Hibernate es una herramienta de Mapeo objeto-relacional (ORM) para la
plataforma Java (y disponible también para .Net con el nombre de
NHibernate) que facilita el mapeo de atributos entre una base de datos
relacional tradicional y el modelo de objetos de una aplicación, mediante
archivos declarativos (XML) o anotaciones en los beans de las entidades
que permiten establecer estas relaciones.
Hibernate es software libre, distribuido bajo los términos de la licencia
GNU LGPL.
Características

No intrusivo (estilo POJO)

Muy buena documentación (forums para ayuda, libro)

Comunidad activa con muchos usuarios

Transacciones, caché, asociaciones, polimorfismo, herencia,
lazy loading, persistencia transitiva, estrategias de fetching.

Potente lenguaje de consulta (HQL): subqueries, outer joins,
ordering, proyeccion (report query), paginación.

Fácil testeo.

No es estándar.
Agregamos al proyecto la herramienta de Hibernate puesto que nos permite
realizar un mapeo de la base de datos de un modelo ER a un modelo
orientado a objetos. La manipulación de datos se vuelve transparente y no
77
se requiere apegarse a una tecnología específica de motor de base de datos
las ventajas que nosotros vimos de usar Hibernate son:

Facilidad en la programación

Facilidad en la manipulación de datos

Apta para aplicaciones transaccionales sin procesamiento masivo.

Es flexible en cuanto al esquema de tablas utilizado, para poder
adaptarse a su uso sobre una base de datos ya existente. También
tiene la funcionalidad de crear la base de datos a partir de la
información disponible.

Fácil de entender e implementar
5.3. Fase de Diseño
En la fase de diseño ,después de realizado el levantamiento de la información con el cliente,
acerca de los requerimientos del sistema y definición de arquitectura, se dio paso al diseño
del modelo de base de datos, diagramas de clases y paquetes que reflejen la arquitectura
diseñada para este proyecto de desarrollo de software.
5.3.1. Diagrama BD
78
Figura 13
Modelo entidad relación de la base
Descripción de datos
18/10/2012
Fecha
Gustavo Justicia, Lucia Del Pino
Autor
Titulo
79
5.3.2. Diagrama de paquetes
A continuación se indican
todos los paquetes utilizados para el desarrollo de la
DocBPM
aplicación, estos
paquetes contienen las diferentes clases que pertenecen a la
+ main (final String args[]) : void
aplicación.
business
entity
models
visual
Titulo
Descripción
Fecha
Autor/Fuente
Figura 14
Diagrama general de paquete.
18/10/2012
Gustavo Justicia, Lucia Del Pino
5.3.3. Diagrama de clases
A continuación se detallan los diagramas de clases que representan la interacción
de los diferentes componentes a ser desarrollados, los diagramas de clases están
agrupados en diferentes paquetes de acuerdo a la arquitectura tomada para la
realización del proyecto la cual, es explicada en el punto 4.5.1 y su diagrama en el
punto 5.3.2.
5.3.3.1. PAQUETE COM.INTEGRAITEC.DOCBPM.BUSINESS
80
Documentos::AccionDocumentoRevisar
Procesos
* documento
: String
* version
: String
* docAguardar : Documento
* proceso
: Proceso
- modelo
: ProcesoTreeTableModel
* procesos
: List<Proceso>
* generacionUsada : int
- nodos
: LinkedList<ProcesoTreeTableNode>
+ <<Constructor>> AccionDocumentoRevisar (String documento
, String version)
+
actionPerformed (ActionEvent e)
: void
Documentos::AccionDocumentoAprobar
* documento
: String
* version
: String
* docAguardar : Documento
+ <<Constructor>> AccionDocumentoAprobar (String documento
, String version)
+
actionPerformed (ActionEvent e)
: void
Documentos
* usuarioConectado : Usuario
* documentosLista : List<Documento>
* modelo
: DocumentosTreeTableModel
- nodos
: LinkedList<DocumentoTreeTableNode>
* sesionAbierta
: Session
* sesionAux
: Session
+ getModelo ()
+ setModelo (DocumentosTreeTableModel mode
lo)
+ crearSesion ()
+ abrirSesion ()
+ cerrarSesion ()
+ asignarPermisoDocumento (Usuario usuario
, Documento doc)
+ getDocumentoByID (String id,
String version)
+ getDocumentoByIDSesionAbierta (String id
, String version)
+ getContaDocumentosPorId (String id)
+ getContaDocumentos ()
+ getContaDocumentosNuevos ()
+ cargarDocsAprobarPorUsuario (Usuario usu
arioC)
+ cargarDocsRevisarPorUsuario (Usuario usu
arioC)
+ cargarDocsCrearPorUsuario (Usuario usuar
ioC)
+ cargarDocsLMD (Usuario usuarioC)
+ crearModelo ()
+ crearIdentificadoresArbol ()
+ generarModelo (List identificadores)
+ generarNodo (Documento valor)
+ cargarArbolDeDocumentosAprobados ()
+ setDocumentoFile (byte documento[],
Documento documentoAguardar)
+ guardarDocumento (Documento documento)
+ setProcesosRelacioados (Set procesosArel
acionar, Documento documento)
+ tipoDocumentoPorExtension (String extens
ion)
- insertarDocumentoArbol (DocumentoTreeTab
leNode padre,
DocumentoTreeTableNode hijo)
+ setUsuarioDefault (Usuario usuarioConect
ado)
+ revocarPermisoDocumento (Usuario next,
Documento documento)
+ removerProcesosRelacioados (HashSet proc
esosRelacionados, Documento documento)
<<Unresolved Interface>>
ActionListener
(event)
= new LinkedList<DocumentoTreeTableNode>()
: DocumentosTreeTableModel
: void
: void
: void
: void
: void
: Documento
Documentos::AccionDocumentoSubir
: Documento
* documento
: String
* version
: String
* docAguardar : Documento
: int
: int
: int
: DefaultTableModel
+
+ <<Constructor>> AccionDocumentoSubir (String documento,
String version)
+
actionPerformed (ActionEvent e)
: void
: DefaultTableModel
+
+
+
+
: DefaultTableModel
+
:
:
:
:
:
:
:
=0
= new LinkedList<ProcesoTreeTableNode>()
+ <<Constructor>> Procesos ()
+ <<Constructor>> Procesos (Proceso proceso)
+
getProceso ()
+
setProceso (Proceso proceso)
+
getProcesos ()
+
setProcesos (List<Proceso> procesos)
+
crearModelo ()
+
crearModeloConRelaciones ()
+
crearModeloConRelaciones (Documento docu
mento)
+
crearIdentificadores ()
+
crearIdentificadoresPlus ()
+
cargarArbolDeProcesos ()
+
cargarArbolDeProcesos (ProcesoTreeTableM
odel modelo)
+
recargarProcesos ()
+
generarModelo (List identificadores)
+
generarModeloPlus (List identificadores,
Proceso procesoRel)
+
setColumnasModelo (DefaultTreeTableModel
modelo, List identificadores)
+
generarNodo (Proceso valor)
+
insertarHijo (ProcesoTreeTableNode padre
, ProcesoTreeTableNode hijo)
+
setHijoPonderado (ProcesoTreeTableNode p
adre, final ProcesoTreeTableNode hijo)
+
getProcesoByID (String id)
+
generarPonderacionPadreRaiz (final Proce
soTreeTableNode nuevoProceso)
+
existeDepedencias (Proceso padre)
+
generarPonderacion (ProcesoTreeTableNode
padre, final ProcesoTreeTableNode hijo)
+
guardarProceso (Proceso procesoAguardar)
+
insertarHijoPonderado (final ProcesoTree
TableNode padre,
final ProcesoTreeTableNode hijo,
String nombre, String descripcion,
String ponderacionNivel[])
DefaultTableModel
void
List
DocumentosTreeTableModel
DocumentoTreeTableNode
void
void
insertarHijoRaiz (final ProcesoTreeTable
Node nuevoNodo, String id,
String nombre, String descripcion)
getModelo ()
setModelo (ProcesoTreeTableModel modelo)
getNodos ()
setNodos (LinkedList<ProcesoTreeTableNod
e> nodos)
setDocumentosRelacionados (Set documento
s, Proceso proceso)
setProcesosRelacionados (HashSet proceso
sArelacionar, Proceso proceso)
countSubprocesos ()
removerProceso (Proceso proceso)
removerProcesosRelacionados (HashSet pro
cesosRelacionados, Proceso proceso)
generarModeloPlus (List identificadores,
Documento documento)
+
+
+
+
-
: void
: void
:
:
:
:
:
:
:
Proceso
void
List<Proceso>
void
void
void
void
: List
: List
: void
: void
: void
: ProcesoTreeTableModel
: ProcesoTreeTableModel
: void
: ProcesoTreeTableNode
: void
: void
: Proceso
: String
: boolean
: String[]
: void
: void
: void
: ProcesoTreeTableModel
: void
: LinkedList<ProcesoTreeTableNode>
: void
: void
: void
: String
: void
: void
: ProcesoTreeTableModel
: String
: void
: void
: void
: void
AccionDocumentoRevisar
AccionDocumentoAprobar
AccionDocumentoSubir
...
<<Unresolved Class>>
Notificaciones
LoginService
(auth)
* cuentas : Cuentas
+
notificarSolicitudCreacionDocumento (Usu
ario solicitante, Usuario notificado,
String documento, String nota)
: void
+
notificarSolicitudPerfilesUsuarios (Usua
rio solicitante, Usuario notificado,
String usuarioCambio, String nota,
int tipo)
: void
+
notificarSolicitudCambioPerfilDocumento
()
notificarSolicitudCambioPermisoUsuario (
)
notificarCreacion (Usuario solicitante,
Usuario notificado, String documento,
String nota, String fecha)
: void
+
notificarRevision (Usuario solicitante,
Usuario notificado, String documento,
String nota, String fecha)
: void
+
notificarAprobacion (Usuario solicitante
, Usuario notificado, String documento,
String nota, String fecha)
notificarDocumentoListo ()
enviarEmail (Usuario emisor,
List usuariosAnotificar,
String subject, String mensaje)
: void
LoginConnectionService
*
*
*
*
*
*
*
session
usuarioAutenticado
conex
connection
server
SID
esReconfirmacion
:
:
:
:
:
:
:
Session
Usuario
Connection
String
String
String
boolean
= HibernateUtility.getSessionFactory().openSession()
+
= false
+ <<Constructor>> LoginConnectionService (String connectio
n, String server, String dbName,
String dbPass)
+ <<Constructor>> LoginConnectionService (Usuario usuarioC
onectado)
+ <<Constructor>> LoginConnectionService ()
+ <<Getter>>
getSID ()
+
getUsuarioAutenticado ()
+
verificarPrimeraSID (Usuario usuario)
+
verificarSID (Usuario usuario)
+
autenticarSID ()
+
authenticate (String name, char pass[],
String server)
+
closeConnection ()
+
guardarSSO (boolean acepta)
+
: String
: Usuario
: boolean
: boolean
: boolean
: boolean
+
+
: void
: void
Usuarios
cliente
usuarioId
perfil
grupo
usuarioNick
usuarioPassword
usuarioNombre
usuarioApellido
usuarioCargo
usuarioFechaCreacion
usuarioFechaInactivacion
usuarioActivo
usuarioSuperUsuario
usuarioPkey
usuarioFirma
documentosForUsuarioAprobadorId
documentosForUsuarioRevisorId
cuentas
permisoUsuarioDocumentos
documentosForUsuarioCreadorId
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
int
Perfil
Grupo
String
String
String
String
String
Date
Date
boolean
boolean
byte[]
String
Set
Set
Set
Set
Set
= new HashSet(0)
= new HashSet(0)
= new HashSet(0)
= new HashSet(0)
= new HashSet(0)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
getUsuarioId ()
setUsuarioId (int usuarioId)
getPerfil ()
setPerfil (Perfil perfil)
getGrupo ()
setGrupo (Grupo grupo)
getUsuarioNick ()
setUsuarioNick (String usuarioNick)
getUsuarioPassword ()
setUsuarioPassword (String usuarioPasswo
rd)
getUsuarioNombre ()
setUsuarioNombre (String usuarioNombre)
getUsuarioApellido ()
setUsuarioApellido (String usuarioApelli
do)
getUsuarioCargo ()
setUsuarioCargo (String usuarioCargo)
getUsuarioFechaCreacion ()
setUsuarioFechaCreacion (Date usuarioFec
haCreacion)
getUsuarioFechaInactivacion ()
setUsuarioFechaInactivacion (Date usuari
oFechaInactivacion)
isUsuarioActivo ()
setUsuarioActivo (boolean usuarioActivo)
isUsuarioSuperUsuario ()
setUsuarioSuperUsuario (boolean usuarioS
uperUsuario)
getUsuarioPkey ()
setUsuarioPkey (byte usuarioPkey[])
getUsuarioFirma ()
setUsuarioFirma (String usuarioFirma)
getDocumentosForUsuarioAprobadorId ()
setDocumentosForUsuarioAprobadorId (Set
documentosForUsuarioAprobadorId)
getDocumentosForUsuarioRevisorId ()
setDocumentosForUsuarioRevisorId (Set do
cumentosForUsuarioRevisorId)
getCuentas ()
setCuentas (Set cuentas)
getPermisoUsuarioDocumentos ()
setPermisoUsuarioDocumentos (Set permiso
UsuarioDocumentos)
getDocumentosForUsuarioCreadorId ()
setDocumentosForUsuarioCreadorId (Set do
cumentosForUsuarioCreadorId)
*
*
*
*
*
*
-
listaFrames
usuarioAutenticado
iconobandeja
opcionesActivas
notificador1
notificacionesEntrantes
bloquearEstacion
botonCambios
botonConfiguracion
botonDocumentos
botonNotificaciones
botonProcesos
escritorioMenu
jButton1
jButton6
jDesktopPane1
jLabel1
jMenu1
jMenu3
jMenuBar1
jMenuItem4
jPanel1
jSeparator1
jSplitPane1
jToolBar1
jXStatusBar1
jXTitledPanel1
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
LinkedList<String>
Usuario
IconoBandejaWindows
LinkedList<Integer>
NotificacionDaemon
NotificacionDaemon
javax.swing.JMenuItem
javax.swing.JButton
javax.swing.JButton
javax.swing.JButton
javax.swing.JButton
javax.swing.JButton
javax.swing.JMenuItem
javax.swing.JButton
javax.swing.JButton
javax.swing.JDesktopPane
javax.swing.JLabel
javax.swing.JMenu
javax.swing.JMenu
javax.swing.JMenuBar
javax.swing.JMenuItem
javax.swing.JPanel
javax.swing.JToolBar.Separator
javax.swing.JSplitPane
javax.swing.JToolBar
org.jdesktop.swingx.JXStatusBar
org.jdesktop.swingx.JXTitledPanel
+
+
+
+ <<Constructor>> Usuario (int usuarioId, Perfil perfil,
Grupo grupo, String usuarioNick,
String usuarioPassword,
String usuarioNombre,
String usuarioApellido,
String usuarioCargo,
Date usuarioFechaCreacion,
Date usuarioFechaInactivacion,
boolean usuarioActivo,
boolean usuarioSuperUsuario,
byte usuarioPkey[],
String usuarioFirma,
Set documentosForUsuarioAprobadorId,
Set documentosForUsuarioRevisorId,
Set cuentas,
Set permisoUsuarioDocumentos,
Set documentosForUsuarioCreadorId)
+
+
+
+
Usuario
Usuario
void
void
void
Perfil
Grupo
List
List
DefaultTableModel
DefaultListModel<String>
DefaultListModel<String>
DefaultListModel<String>
DefaultListModel<String>
void
void
+
+
+
+
+
+
+
+
+
getGrupoById (int grupoId)
getGruposList ()
getUsuariosGrupo (Grupo grupo)
getGruposEnSistema ()
guardarGrupo (Grupo grupoAcrear)
crearSesion ()
abrirSesion ()
cerrarSesion ()
setUsuariosGrupo (Grupo grupo,
HashSet<Usuario> usuariosGrupo)
:
:
:
:
:
:
:
:
:
:
int
void
Perfil
void
Grupo
void
String
void
String
void
: String
: void
: String
: void
: String
: void
: Date
: void
getListaFrames ()
getOpcionesActivas ()
setOpcionesActivas (LinkedList<Integer>
opcionesActivas)
+
setListaFrames (LinkedList<String>
listaFrames)
+ <<Constructor>> MainFrame ()
+ <<Constructor>> MainFrame (Usuario usuarioAutenticado)
iniciarNotificador (NotificacionDaemon d
emonio)
pararNotificador (NotificacionDaemon dem
onio)
validarOpciones ()
+
insertarEnDesktop (final JInternalFrame
frame)
initComponents ()
escritorioMenuActionPerformed (java.awt.
event.ActionEvent evt)
usuarioConectado
usuarioAutenticado
jButton6ActionPerformed (java.awt.event.
ActionEvent evt)
botonProcesosActionPerformed (java.awt.
event.ActionEvent evt)
botonDocumentosActionPerformed (java.
awt.event.ActionEvent evt)
botonCambiosActionPerformed (java.awt.
event.ActionEvent evt)
botonNotificacionesActionPerformed (java
.awt.event.ActionEvent evt)
jButton1ActionPerformed (java.awt.event.
ActionEvent evt)
bloquearEstacionActionPerformed (java.
awt.event.ActionEvent evt)
jMenuItem4ActionPerformed (java.awt.
event.ActionEvent evt)
+
getBotonProcesos ()
+
setBotonProcesos (JButton botonProcesos)
: Date
: void
: boolean
: void
: boolean
: void
:
:
:
:
:
:
byte[]
void
String
void
Set
void
: Set
: void
: Set
: void
: Set
: void
: Set
: void
cliente
sesionGeneral
storeGeneral
ultimoMensajeRecibido
padreGeneral
mensajes
:
:
:
:
:
:
DelegacionDocumentos
Usuario
javax.mail.Session
Store
Message
MainFrame
Message[]
* usuarioConectado : Usuario
+ <<Constructor>> ClienteNotificaciones (MainFrame padreGe
neral, Usuario clienteMail)
+
getSessionGeneral ()
+
getStoreGeneral ()
+
mensajeRecibido (Message message)
+
getMensaje (int i)
+
cargarTablaDeNotificacionesRecibidas (St
ore store)
+
mostrarNotificacionesNuevas (Folder fold
er, IconoBandejaWindows notificador)
+
esperarNotificaciones (IconoBandejaWindo
ws notificador, Folder folder)
+
conectarIMAP ()
+ <<Constructor>> DelegacionDocumentos (Usuario usuarioCon
ectado)
+
delegarDocumentoNuevo (Usuario creador,
: void
Usuario revisor, Usuario aprobador,
String NotaCreador, String documento,
String descripcion, Date fechaFinal,
boolean versionable, int versionMax)
: Session
: Store
: MimeMessage
: Message
: DefaultTableModel
Grupo
DefaultListModel<String>
DefaultListModel<String>
DefaultTableModel
void
void
void
void
void
+
+
+
+
+
+
+
+
+
+
: boolean
Perfil
Opcion
DefaultTableModel
DefaultListModel<String>
cuentas
DefaultListModel<String>
void
void
void
void
void
+ getCuentaById (String cuentaId)
+ getCuentaDefaultByUsuario (int usuarioId
)
+ getCuentasDeUsuario (int usuarioId)
+ guardarCuenta (Cuenta cuentaAcrear)
+ crearSesion ()
+ abrirSesion ()
+ cerrarSesion ()
+ <<Constructor>> DocumentosTreeTableModel (DocumentoTreeT
ableNode nodo, List columnas)
+
getValueAt (Object node, int column)
: Object
+
+
: void
: void
: void
: void
: void
: void
: void
: void
: void
: void
: void
: void
: void
: void
: JButton
: void
: Cuenta
: Cuenta
: DefaultTableModel
: void
: void
: void
: void
modelo
Proceso
(entity)
-
proId
proceso
proNombre
proDescripcion
proNivel
proVersion
proDiagrama
proDiagramaArchivo
documentos
procesos
procesosForProProId
procesosForProId
:
:
:
:
:
:
:
:
:
:
:
:
String
Proceso
String
String
int
int
byte[]
String
Set
Set
Set
Set
ProcesoTreeTableModel
(models)
* modeloEspecial
: boolean
* esDocumento
: boolean
* procesoRelacionado : Proceso
* docRelacionado
: Documento
* documentos
: Documentos
+
+
+
+
+
+
+
+
= new HashSet(0)
= new HashSet(0)
= new HashSet(0)
= new HashSet(0)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
getProDiagramaArchivo ()
setProDiagramaArchivo (String proDiagram
aArchivo)
getProId ()
setProId (String proId)
getProceso ()
setProceso (Proceso proceso)
getProNombre ()
setProNombre (String proNombre)
getProDescripcion ()
setProDescripcion (String proDescripcion
)
getProNivel ()
setProNivel (int proNivel)
getProVersion ()
setProVersion (int proVersion)
getProDiagrama ()
setProDiagrama (byte proDiagrama[])
getDocumentos ()
setDocumentos (Set documentos)
getProcesos ()
setProcesos (Set procesos)
getProcesosForProProId ()
setProcesosForProProId (Set procesosForP
roProId)
getProcesosForProId ()
setProcesosForProId (Set procesosForProI
d)
= false
= false
= new Documentos()
+ <<Constructor>> ProcesoTreeTableModel (ProcesoTreeTableN
ode nodo, List columnas)
+ <<Constructor>> ProcesoTreeTableModel (ProcesoTreeTableN
ode nodo, List columnas,
Proceso procesoRelacionado)
+ <<Constructor>> ProcesoTreeTableModel (ProcesoTreeTableN
ode nodo, List columnas,
Documento docRelacionado)
+
getValueAt (Object node, int column)
: Object
+ <<Constructor>> Proceso ()
+ <<Constructor>> Proceso (String proId, String proNombre,
int proNivel, int proVersion)
+ <<Constructor>> Proceso (String proId, Proceso proceso,
String proNombre,
String proDescripcion, int proNivel,
int proVersion, byte proDiagrama[],
Set documentos, Set procesos,
Set procesosForProProId,
Set procesosForProId)
: void
: boolean
: void
Cuentas
:
:
:
:
:
:
:
:
:
:
DocumentosTreeTableModel
(models)
: LinkedList<String>
: LinkedList<Integer>
: void
: void
notificarPersonasInvolucradasCreacionIni
cial (Usuario creador, Usuario revisor,
Usuario aprobador, String nota,
String documento, String fecha)
* sesionAbierta : Session
getPerfilById (short perfilId)
getOpcionById (short opcionId)
getPerfilsEnSistema ()
getListaOpciones ()
getOpcionesPerfil (Perfil perfil)
guardarPerfil (Perfil perfilAcrear)
crearSesion ()
abrirSesion ()
cerrarSesion ()
guardarOpcion (Opcion oguardar)
* documentos : Documentos
= new LinkedList<>()
delegarDocumentoVersion (Usuario creador
, Usuario revisor, Usuario aprobador,
String NotaCreador, String documento,
String descripcion, Date fechaFinal,
Documento documentoN)
+
: void
: boolean
* sesionAbierta : Session
:
:
:
:
:
:
:
:
:
+
: void
modelo
MainFrame
(visual)
+ <<Constructor>> Usuario ()
+ <<Constructor>> Usuario (int usuarioId, Perfil perfil,
Grupo grupo, String usuarioNick,
String usuarioPassword,
String usuarioNombre,
String usuarioApellido,
String usuarioCargo,
Date usuarioFechaCreacion,
boolean usuarioActivo,
boolean usuarioSuperUsuario)
+
+
+
+
+
+
+
+
+
+
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
padreGeneral
Usuario
(entity)
-
: void
*
*
*
*
*
*
Perfiles
* sesionAbierta : Session
getUsuarioById (int usuarioId)
getUsuarioByIdSession (int usuarioId)
crearSesion ()
abrirSesion ()
cerrarSesion ()
getPerfilById (short perfilId)
getGrupoById (int grupoId)
getAllGrupos ()
getAllPerfiles ()
getUsuariosEnSistema ()
getListaUsuarios ()
getListaUsuarios (Documento documento)
getListaUsuariosByGrupo (int grupo)
getListaUsuariosByPerfil (short perfil)
guardarUsuario (Usuario usuarioAcrear)
eliminarUsuario (Usuario usuarioById)
: void
Grupos
* sesionAbierta : Session
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
ClienteNotificaciones
= new Cuentas()
+ <<Constructor>> Notificaciones ()
+ <<Constructor>> Notificaciones (Documento documento)
+
notificarSolicitudCambioDocumento (Usuar : void
io solicitante, Usuario notificado,
Documento documento, String nota,
int tipo)
: String
: void
:
:
:
:
:
:
:
:
String
void
Proceso
void
String
void
String
void
:
:
:
:
:
:
:
:
:
:
:
:
int
void
int
void
byte[]
void
Set
void
Set
void
Set
void
: Set
: void
proceso
Documento
(entity)
-
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
DocumentoId
Usuario
Usuario
Usuario
String
byte[]
boolean
boolean
boolean
Date
Date
Date
boolean
Boolean
String
short
Date
boolean
int
boolean
String
Set
Set
Set
Set
= new HashSet(0)
= new HashSet(0)
= new HashSet(0)
= new HashSet(0)
+ <<Constructor>> Documento ()
+ <<Constructor>> Documento (DocumentoId id,
String documentoNombre,
boolean documentoCreado,
boolean documentoRevisado,
boolean documentoAprobado,
boolean documentoGrupoRevision,
String documentoTipo,
short documentoPrioridad,
Date documentoFechaEntrega,
boolean documentoVersionable,
int documentoVersionmaxima,
boolean documentoExterno)
+ <<Constructor>> Documento (DocumentoId id,
Usuario usuarioByUsuarioRevisorId,
Usuario usuarioByUsuarioCreadorId,
Usuario usuarioByUsuarioAprobadorId,
String documentoNombre,
byte documentoArchivo[],
boolean documentoCreado,
boolean documentoRevisado,
boolean documentoAprobado,
Date documentoFechaCreado,
Date documentoFechaRevisado,
Date documentoFechaAprobado,
boolean documentoGrupoRevision,
Boolean documentoGrupoAprobacion,
String documentoTipo,
short documentoPrioridad,
Date documentoFechaEntrega,
boolean documentoVersionable,
int documentoVersionmaxima,
boolean documentoExterno,
String documentoDescripcion,
Set documentosForFkDocumentoRelacionado
, Set permisoUsuarioDocumentos,
Set procesos,
Set documentosForFkDocumentoRelacionado
2)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Titulo
id
usuarioByUsuarioRevisorId
usuarioByUsuarioCreadorId
usuarioByUsuarioAprobadorId
documentoNombre
documentoArchivo
documentoCreado
documentoRevisado
documentoAprobado
documentoFechaCreado
documentoFechaRevisado
documentoFechaAprobado
documentoGrupoRevision
documentoGrupoAprobacion
documentoTipo
documentoPrioridad
documentoFechaEntrega
documentoVersionable
documentoVersionmaxima
documentoExterno
documentoDescripcion
documentosForFkDocumentoRelacionado
permisoUsuarioDocumentos
procesos
documentosForFkDocumentoRelacionado2
getId ()
setId (DocumentoId id)
getUsuarioByUsuarioRevisorId ()
setUsuarioByUsuarioRevisorId (Usuario us
uarioByUsuarioRevisorId)
getUsuarioByUsuarioCreadorId ()
setUsuarioByUsuarioCreadorId (Usuario us
uarioByUsuarioCreadorId)
getUsuarioByUsuarioAprobadorId ()
setUsuarioByUsuarioAprobadorId (Usuario
usuarioByUsuarioAprobadorId)
getDocumentoNombre ()
setDocumentoNombre (String documentoNomb
re)
getDocumentoArchivo ()
setDocumentoArchivo (byte documentoArchi
vo[])
isDocumentoCreado ()
setDocumentoCreado (boolean documentoCre
ado)
isDocumentoRevisado ()
setDocumentoRevisado (boolean documentoR
evisado)
isDocumentoAprobado ()
setDocumentoAprobado (boolean documentoA
probado)
getDocumentoFechaCreado ()
setDocumentoFechaCreado (Date documentoF
echaCreado)
getDocumentoFechaRevisado ()
setDocumentoFechaRevisado (Date document
oFechaRevisado)
getDocumentoFechaAprobado ()
setDocumentoFechaAprobado (Date document
oFechaAprobado)
isDocumentoGrupoRevision ()
setDocumentoGrupoRevision (boolean docum
entoGrupoRevision)
getDocumentoGrupoAprobacion ()
setDocumentoGrupoAprobacion (Boolean doc
umentoGrupoAprobacion)
getDocumentoTipo ()
setDocumentoTipo (String documentoTipo)
getDocumentoPrioridad ()
setDocumentoPrioridad (short documentoPr
ioridad)
getDocumentoFechaEntrega ()
setDocumentoFechaEntrega (Date documento
FechaEntrega)
isDocumentoVersionable ()
setDocumentoVersionable (boolean documen
toVersionable)
getDocumentoVersionmaxima ()
setDocumentoVersionmaxima (int documento
Versionmaxima)
isDocumentoExterno ()
setDocumentoExterno (boolean documentoEx
terno)
getDocumentoDescripcion ()
setDocumentoDescripcion (String document
oDescripcion)
getDocumentosForFkDocumentoRelacionado (
)
setDocumentosForFkDocumentoRelacionado (
Set documentosForFkDocumentoRelacionado)
getPermisoUsuarioDocumentos ()
setPermisoUsuarioDocumentos (Set permiso
UsuarioDocumentos)
getProcesos ()
setProcesos (Set procesos)
getDocumentosForFkDocumentoRelacionado2
()
setDocumentosForFkDocumentoRelacionado2
(Set documentosForFkDocumentoRelacionado
2)
: DocumentoId
: void
: Usuario
: void
: Usuario
: void
: Usuario
: void
: String
: void
: byte[]
: void
: boolean
: void
: boolean
: void
: boolean
: void
: Date
: void
: Date
: void
: Date
: void
: boolean
: void
: Boolean
: void
: String
: void
: short
: void
: Date
: void
: boolean
: void
: int
: void
: boolean
: void
: String
: void
: Set
: void
: Set
: void
: Set
: void
: Set
: void
Figura 16
Diagrama de clases del paquete com.integraitec.docbpm.business
Descripción
81
Fecha
Autor
18/10/2012
Gustavo Justicia, Lucia Del Pino
5.3.3.2. PAQUETE COM.INTEGRAITEC.DOCBPM.MODELS
82
DocumentoTreeTableNode
<<Unresolved Class>>
DocumentosTreeTableModel
* documento : Documento
* documentos : Documentos
+ <<Constructor>> DocumentoTreeTableNode (Documento valor)
+
getUserObject ()
: Object
+
getValueAt (int column)
: Object
+
setValueAt (Object aValue, int column)
: void
+
validarProcesos ()
: void
+
validarDocumento ()
: void
+ <<Constructor>> DocumentosTreeTableModel (DocumentoTreeT
ableNode nodo, List columnas)
+
getValueAt (Object node, int column)
: Object
DefaultMutableTreeTableNode
(treetable)
<<Unresolved Class>>
DefaultTreeTableModel
(treetable)
<<Unresolved Interface>>
MutableTreeTableNode
(treetable)
ProcesoTreeTableModel
*
*
*
*
*
ProcesoTreeTableNode
*
*
*
*
*
*
proceso
tieneDocumento
tieneProcesosRelacionados
docsRelacionados
procesosRelacionados
relacionadoAproceso
:
:
:
:
:
:
Proceso
boolean
boolean
LinkedList<Documento>
LinkedList<Proceso>
LinkedList<Proceso>
= false
= new LinkedList<>()
= new LinkedList<>()
= new LinkedList<>()
+ <<Constructor>> ProcesoTreeTableNode (Proceso valor)
+
getUserObject ()
+
getValueAt (int column)
+
setValueAt (Object aValue, int column)
+
validarProcesos ()
+
determinarRelacion (Proceso procesoRel,
Set procesosAbuscar)
+
validarDocumento ()
+
getDocumentosProceso ()
+
siTieneDocumento ()
+
getProceso ()
+
getProcesosRelacionados ()
+
getRelacionAprocesos ()
+
getProcesoId ()
+
getProcesoVersion ()
+
setProcesoId (String id)
:
:
:
:
:
Object
Object
void
void
boolean
:
:
:
:
:
:
:
:
:
void
LinkedList
boolean
Proceso
LinkedList
LinkedList
Object
Object
void
modeloEspecial
esDocumento
procesoRelacionado
docRelacionado
documentos
:
:
:
:
:
boolean
boolean
Proceso
Documento
Documentos
= false
= false
= new Documentos()
+ <<Constructor>> ProcesoTreeTableModel (ProcesoTreeTableN
ode nodo, List columnas)
+ <<Constructor>> ProcesoTreeTableModel (ProcesoTreeTableN
ode nodo, List columnas,
Proceso procesoRelacionado)
+ <<Constructor>> ProcesoTreeTableModel (ProcesoTreeTableN
ode nodo, List columnas,
Documento docRelacionado)
+
getValueAt (Object node, int column)
: Object
DefaultListModel_String
EscritorioDialogListModel
+ addElement (String element)
: void
+ populate (String directorioParaSacar) : void
procesoRelacionado
docRelacionado
documento
documentos
<T>
Proceso
(entity)
-
proId
proceso
proNombre
proDescripcion
proNivel
proVersion
proDiagrama
proDiagramaArchivo
documentos
procesos
procesosForProProId
procesosForProId
:
:
:
:
:
:
:
:
:
:
:
:
String
Proceso
String
String
int
int
byte[]
String
Set
Set
Set
Set
=
=
=
=
new HashSet(0)
new HashSet(0)
new HashSet(0)
new HashSet(0)
+ <<Constructor>> Proceso ()
+ <<Constructor>> Proceso (String proId, String proNombre,
int proNivel, int proVersion)
+ <<Constructor>> Proceso (String proId, Proceso proceso,
String proNombre,
String proDescripcion, int proNivel,
int proVersion, byte proDiagrama[],
Set documentos, Set procesos,
Set procesosForProProId,
Set procesosForProId)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Documento
(entity)
DefaultListModel
(swing)
<<bind>>
getProDiagramaArchivo ()
setProDiagramaArchivo (String proDiagram
aArchivo)
getProId ()
setProId (String proId)
getProceso ()
setProceso (Proceso proceso)
getProNombre ()
setProNombre (String proNombre)
getProDescripcion ()
setProDescripcion (String proDescripcion
)
getProNivel ()
setProNivel (int proNivel)
getProVersion ()
setProVersion (int proVersion)
getProDiagrama ()
setProDiagrama (byte proDiagrama[])
getDocumentos ()
setDocumentos (Set documentos)
getProcesos ()
setProcesos (Set procesos)
getProcesosForProProId ()
setProcesosForProProId (Set procesosForP
roProId)
getProcesosForProId ()
setProcesosForProId (Set procesosForProI
d)
: String
: void
:
:
:
:
:
:
:
:
String
void
Proceso
void
String
void
String
void
:
:
:
:
:
:
:
:
:
:
:
:
int
void
int
void
byte[]
void
Set
void
Set
void
Set
void
: Set
: void
proceso
-
id
usuarioByUsuarioRevisorId
usuarioByUsuarioCreadorId
usuarioByUsuarioAprobadorId
documentoNombre
documentoArchivo
documentoCreado
documentoRevisado
documentoAprobado
documentoFechaCreado
documentoFechaRevisado
documentoFechaAprobado
documentoGrupoRevision
documentoGrupoAprobacion
documentoTipo
documentoPrioridad
documentoFechaEntrega
documentoVersionable
documentoVersionmaxima
documentoExterno
documentoDescripcion
documentosForFkDocumentoRelacionado
permisoUsuarioDocumentos
procesos
documentosForFkDocumentoRelacionado2
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
DocumentoId
Usuario
Usuario
Usuario
String
byte[]
boolean
boolean
boolean
Date
Date
Date
boolean
Boolean
String
short
Date
boolean
int
boolean
String
Set
Set
Set
Set
Documentos
(business)
*
*
*
*
*
= new HashSet(0)
= new HashSet(0)
= new HashSet(0)
= new HashSet(0)
+ <<Constructor>> Documento ()
+ <<Constructor>> Documento (DocumentoId id,
String documentoNombre,
boolean documentoCreado,
boolean documentoRevisado,
boolean documentoAprobado,
boolean documentoGrupoRevision,
String documentoTipo,
short documentoPrioridad,
Date documentoFechaEntrega,
boolean documentoVersionable,
int documentoVersionmaxima,
boolean documentoExterno)
+ <<Constructor>> Documento (DocumentoId id,
Usuario usuarioByUsuarioRevisorId,
Usuario usuarioByUsuarioCreadorId,
Usuario usuarioByUsuarioAprobadorId,
String documentoNombre,
byte documentoArchivo[],
boolean documentoCreado,
boolean documentoRevisado,
boolean documentoAprobado,
Date documentoFechaCreado,
Date documentoFechaRevisado,
Date documentoFechaAprobado,
boolean documentoGrupoRevision,
Boolean documentoGrupoAprobacion,
String documentoTipo,
short documentoPrioridad,
Date documentoFechaEntrega,
boolean documentoVersionable,
int documentoVersionmaxima,
boolean documentoExterno,
String documentoDescripcion,
Set documentosForFkDocumentoRelacionado
, Set permisoUsuarioDocumentos,
Set procesos,
Set documentosForFkDocumentoRelacionado
2)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
getId ()
setId (DocumentoId id)
getUsuarioByUsuarioRevisorId ()
setUsuarioByUsuarioRevisorId (Usuario us
uarioByUsuarioRevisorId)
getUsuarioByUsuarioCreadorId ()
setUsuarioByUsuarioCreadorId (Usuario us
uarioByUsuarioCreadorId)
getUsuarioByUsuarioAprobadorId ()
setUsuarioByUsuarioAprobadorId (Usuario
usuarioByUsuarioAprobadorId)
getDocumentoNombre ()
setDocumentoNombre (String documentoNomb
re)
getDocumentoArchivo ()
setDocumentoArchivo (byte documentoArchi
vo[])
isDocumentoCreado ()
setDocumentoCreado (boolean documentoCre
ado)
isDocumentoRevisado ()
setDocumentoRevisado (boolean documentoR
evisado)
isDocumentoAprobado ()
setDocumentoAprobado (boolean documentoA
probado)
getDocumentoFechaCreado ()
setDocumentoFechaCreado (Date documentoF
echaCreado)
getDocumentoFechaRevisado ()
setDocumentoFechaRevisado (Date document
oFechaRevisado)
getDocumentoFechaAprobado ()
setDocumentoFechaAprobado (Date document
oFechaAprobado)
isDocumentoGrupoRevision ()
setDocumentoGrupoRevision (boolean docum
entoGrupoRevision)
getDocumentoGrupoAprobacion ()
setDocumentoGrupoAprobacion (Boolean doc
umentoGrupoAprobacion)
getDocumentoTipo ()
setDocumentoTipo (String documentoTipo)
getDocumentoPrioridad ()
setDocumentoPrioridad (short documentoPr
ioridad)
getDocumentoFechaEntrega ()
setDocumentoFechaEntrega (Date documento
FechaEntrega)
isDocumentoVersionable ()
setDocumentoVersionable (boolean documen
toVersionable)
getDocumentoVersionmaxima ()
setDocumentoVersionmaxima (int documento
Versionmaxima)
isDocumentoExterno ()
setDocumentoExterno (boolean documentoEx
terno)
getDocumentoDescripcion ()
setDocumentoDescripcion (String document
oDescripcion)
getDocumentosForFkDocumentoRelacionado (
)
setDocumentosForFkDocumentoRelacionado (
Set documentosForFkDocumentoRelacionado)
getPermisoUsuarioDocumentos ()
setPermisoUsuarioDocumentos (Set permiso
UsuarioDocumentos)
getProcesos ()
setProcesos (Set procesos)
getDocumentosForFkDocumentoRelacionado2
()
setDocumentosForFkDocumentoRelacionado2
(Set documentosForFkDocumentoRelacionado
2)
Titulo
Descripción
usuarioConectado
documentosLista
modelo
nodos
sesionAbierta
sesionAux
:
:
:
:
:
:
Usuario
List<Documento>
DocumentosTreeTableModel
LinkedList<DocumentoTreeTableNode>
Session
Session
+ getModelo ()
+ setModelo (DocumentosTreeTableModel mode
lo)
+ crearSesion ()
+ abrirSesion ()
+ cerrarSesion ()
+ asignarPermisoDocumento (Usuario usuario
, Documento doc)
+ getDocumentoByID (String id,
String version)
+ getDocumentoByIDSesionAbierta (String id
, String version)
+ getContaDocumentosPorId (String id)
+ getContaDocumentos ()
+ getContaDocumentosNuevos ()
+ cargarDocsAprobarPorUsuario (Usuario usu
arioC)
+ cargarDocsRevisarPorUsuario (Usuario usu
arioC)
+ cargarDocsCrearPorUsuario (Usuario usuar
ioC)
+ cargarDocsLMD (Usuario usuarioC)
+ crearModelo ()
+ crearIdentificadoresArbol ()
+ generarModelo (List identificadores)
+ generarNodo (Documento valor)
+ cargarArbolDeDocumentosAprobados ()
+ setDocumentoFile (byte documento[],
Documento documentoAguardar)
+ guardarDocumento (Documento documento)
+ setProcesosRelacioados (Set procesosArel
acionar, Documento documento)
+ tipoDocumentoPorExtension (String extens
ion)
- insertarDocumentoArbol (DocumentoTreeTab
leNode padre,
DocumentoTreeTableNode hijo)
+ setUsuarioDefault (Usuario usuarioConect
ado)
+ revocarPermisoDocumento (Usuario next,
Documento documento)
+ removerProcesosRelacioados (HashSet proc
esosRelacionados, Documento documento)
= new LinkedList<DocumentoTreeTableNode>()
: DocumentosTreeTableModel
: void
: void
: void
: void
: void
: Documento
: Documento
: int
: int
: int
: DefaultTableModel
: DefaultTableModel
: DefaultTableModel
:
:
:
:
:
:
:
DefaultTableModel
void
List
DocumentosTreeTableModel
DocumentoTreeTableNode
void
void
: void
: void
: String
: void
: void
: void
: void
AccionDocumentoRevisar
AccionDocumentoAprobar
AccionDocumentoSubir
: DocumentoId
: void
: Usuario
: void
: Usuario
: void
: Usuario
: void
: String
: void
: byte[]
: void
: boolean
: void
: boolean
: void
: boolean
: void
: Date
: void
: Date
: void
: Date
: void
: boolean
: void
: Boolean
: void
: String
: void
: short
: void
: Date
: void
: boolean
: void
: int
: void
: boolean
: void
: String
: void
: Set
: void
: Set
: void
: Set
: void
: Set
: void
Figura 17
Diagrama de clases del paquete
83
COM.INTEGRAITEC.DOCBPM.MODELS
18/10/2012
Fecha
Autor/Fuente Gustavo Justicia, Lucia Del Pino
5.3.3.3. PAQUETE COM.INTEGRAITEC.DOCBPM.ENTITY
84
Opcion
- opcionId
: short
- opcionNombre : String
- perfils
: Set
= new HashSet(0)
+ <<Constructor>> Opcion ()
+ <<Constructor>> Opcion (short opcionId,
String opcionNombre)
+ <<Constructor>> Opcion (short opcionId,
String opcionNombre, Set perfils)
+
getOpcionId ()
+
setOpcionId (short opcionId)
+
getOpcionNombre ()
+
setOpcionNombre (String opcionNombre)
+
getPerfils ()
+
setPerfils (Set perfils)
Perfil
- perfilId
: short
- perfilNombre
: String
- perfilDescripcion : String
- opcions
: Set
- usuarios
: Set
Permiso
- permisoId
: String
- permisoTipo
: String
- permisoDescripcion
: String
- permisoUsuarioDocumentos : Set
= new HashSet(0)
+ <<Constructor>> Permiso ()
+ <<Constructor>> Permiso (String permisoId,
String permisoTipo)
+ <<Constructor>> Permiso (String permisoId,
String permisoTipo,
String permisoDescripcion,
Set permisoUsuarioDocumentos)
+
+
+
+
+
+
getPermisoId ()
setPermisoId (String permisoId)
getPermisoTipo ()
setPermisoTipo (String permisoTipo)
getPermisoDescripcion ()
setPermisoDescripcion (String permisoDes
cripcion)
getPermisoUsuarioDocumentos ()
setPermisoUsuarioDocumentos (Set permiso
UsuarioDocumentos)
+
+
Documento
-
= new HashSet(0)
= new HashSet(0)
+ <<Constructor>> Perfil ()
+ <<Constructor>> Perfil (short perfilId,
String perfilNombre,
String perfilDescripcion)
+ <<Constructor>> Perfil (short perfilId,
String perfilNombre,
String perfilDescripcion, Set opcions,
Set usuarios)
+
+
+
+
+
+
permiso
: String
: void
: String
: void
: String
: void
getPerfilId ()
setPerfilId (short perfilId)
getPerfilNombre ()
setPerfilNombre (String perfilNombre)
getPerfilDescripcion ()
setPerfilDescripcion (String perfilDescr
ipcion)
getOpcions ()
setOpcions (Set opcions)
getUsuarios ()
setUsuarios (Set usuarios)
+
+
+
+
: Set
: void
: short
: void
: String
: void
: String
: void
: Set
: void
: Set
: void
perfil
-
usuarioId
perfil
grupo
usuarioNick
usuarioPassword
usuarioNombre
usuarioApellido
usuarioCargo
usuarioFechaCreacion
usuarioFechaInactivacion
usuarioActivo
usuarioSuperUsuario
usuarioPkey
usuarioFirma
documentosForUsuarioAprobadorId
documentosForUsuarioRevisorId
cuentas
permisoUsuarioDocumentos
documentosForUsuarioCreadorId
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
int
Perfil
Grupo
String
String
String
String
String
Date
Date
boolean
boolean
byte[]
String
Set
Set
Set
Set
Set
-
:
:
:
:
:
:
:
:
:
:
:
:
:
:
String
Usuario
String
String
String
boolean
boolean
String
boolean
String
String
boolean
Date
Date
usuario
+ <<Constructor>> Cuenta ()
+ <<Constructor>> Cuenta (String cuentaId,
Usuario usuario, String cuentaEmail,
String cuentaSmtp,
String cuentaEntrada,
boolean cuentaImap, boolean cuentaSsl,
String cuentaPassword,
boolean cuentaDefault,
String cuentaPuertoSmtp,
String cuentaPuertoEntrada,
boolean cuentaActiva,
Date cuentaFechaCreacion)
+
+
+
+
+
+
+
+
+ <<Constructor>> Cuenta (String cuentaId,
Usuario usuario, String cuentaEmail,
String cuentaSmtp,
String cuentaEntrada,
boolean cuentaImap, boolean cuentaSsl,
String cuentaPassword,
boolean cuentaDefault,
String cuentaPuertoSmtp,
String cuentaPuertoEntrada,
boolean cuentaActiva,
Date cuentaFechaCreacion,
Date cuentaFechaInactivacion)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
getCuentaId ()
setCuentaId (String cuentaId)
getUsuario ()
setUsuario (Usuario usuario)
getCuentaEmail ()
setCuentaEmail (String cuentaEmail)
getCuentaSmtp ()
setCuentaSmtp (String cuentaSmtp)
getCuentaEntrada ()
setCuentaEntrada (String cuentaEntrada)
isCuentaImap ()
setCuentaImap (boolean cuentaImap)
isCuentaSsl ()
setCuentaSsl (boolean cuentaSsl)
getCuentaPassword ()
setCuentaPassword (String cuentaPassword
)
isCuentaDefault ()
setCuentaDefault (boolean cuentaDefault)
getCuentaPuertoSmtp ()
setCuentaPuertoSmtp (String cuentaPuerto
Smtp)
getCuentaPuertoEntrada ()
setCuentaPuertoEntrada (String cuentaPue
rtoEntrada)
isCuentaActiva ()
setCuentaActiva (boolean cuentaActiva)
getCuentaFechaCreacion ()
setCuentaFechaCreacion (Date cuentaFecha
Creacion)
getCuentaFechaInactivacion ()
setCuentaFechaInactivacion (Date cuentaF
echaInactivacion)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
+
+
+
+
+
+
String
void
Usuario
void
String
void
String
void
String
void
boolean
void
boolean
void
String
void
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
getUsuarioId ()
setUsuarioId (int usuarioId)
getPerfil ()
setPerfil (Perfil perfil)
getGrupo ()
setGrupo (Grupo grupo)
getUsuarioNick ()
setUsuarioNick (String usuarioNick)
getUsuarioPassword ()
setUsuarioPassword (String usuarioPasswo
rd)
getUsuarioNombre ()
setUsuarioNombre (String usuarioNombre)
getUsuarioApellido ()
setUsuarioApellido (String usuarioApelli
do)
getUsuarioCargo ()
setUsuarioCargo (String usuarioCargo)
getUsuarioFechaCreacion ()
setUsuarioFechaCreacion (Date usuarioFec
haCreacion)
getUsuarioFechaInactivacion ()
setUsuarioFechaInactivacion (Date usuari
oFechaInactivacion)
isUsuarioActivo ()
setUsuarioActivo (boolean usuarioActivo)
isUsuarioSuperUsuario ()
setUsuarioSuperUsuario (boolean usuarioS
uperUsuario)
getUsuarioPkey ()
setUsuarioPkey (byte usuarioPkey[])
getUsuarioFirma ()
setUsuarioFirma (String usuarioFirma)
getDocumentosForUsuarioAprobadorId ()
setDocumentosForUsuarioAprobadorId (Set
documentosForUsuarioAprobadorId)
getDocumentosForUsuarioRevisorId ()
setDocumentosForUsuarioRevisorId (Set do
cumentosForUsuarioRevisorId)
getCuentas ()
setCuentas (Set cuentas)
getPermisoUsuarioDocumentos ()
setPermisoUsuarioDocumentos (Set permiso
UsuarioDocumentos)
getDocumentosForUsuarioCreadorId ()
setDocumentosForUsuarioCreadorId (Set do
cumentosForUsuarioCreadorId)
: boolean
: void
: String
: void
getPudId ()
setPudId (String pudId)
getUsuario ()
setUsuario (Usuario usuario)
getPermiso ()
setPermiso (Permiso permiso)
getDocumento ()
setDocumento (Documento documento)
getPudFechaInstauracion ()
setPudFechaInstauracion (Date pudFechaIn
stauracion)
getPudFechaValidez ()
setPudFechaValidez (Date pudFechaValidez
)
: Date
: void
+
+
+
+
documento
:
:
:
:
:
:
:
:
:
:
int
void
Perfil
void
Grupo
void
String
void
String
void
+
+
+
+
+
+
+
+
: String
: void
: String
: void
+
+
+
+
: String
: void
: Date
: void
+
+
: Set
: void
: Set
: void
: Set
: void
: Set
: void
Grupo
- grupoId
: int
- grupoNombre : String
- usuarios
: Set
: boolean
: void
: Date
: void
+ <<Constructor>> Grupo ()
+ <<Constructor>> Grupo (int grupoId, String grupoNombre)
+ <<Constructor>> Grupo (int grupoId, String grupoNombre,
Set usuarios)
+
getGrupoId ()
: int
+
setGrupoId (int grupoId)
: void
+
getGrupoNombre ()
: String
+
setGrupoNombre (String grupoNombre) : void
+
getUsuarios ()
: Set
+
setUsuarios (Set usuarios)
: void
= new HashSet(0)
+
+
Proceso
: boolean
: void
: boolean
: void
: byte[]
: void
: String
: void
: Set
: void
+
+
+
+
usuarioByUsuarioCreadorId
usuario
usuarioByUsuarioAprobadorId
usuarioByUsuarioRevisorId
: Date
: void
proceso
-
proId
proceso
proNombre
proDescripcion
proNivel
proVersion
proDiagrama
proDiagramaArchivo
documentos
procesos
procesosForProProId
procesosForProId
:
:
:
:
:
:
:
:
:
:
:
:
String
Proceso
String
String
int
int
byte[]
String
Set
Set
Set
Set
+
+
+
+
+
+
+
+
= new HashSet(0)
= new HashSet(0)
= new HashSet(0)
= new HashSet(0)
+
+
+ <<Constructor>> Proceso ()
+ <<Constructor>> Proceso (String proId, String proNombre,
int proNivel, int proVersion)
+ <<Constructor>> Proceso (String proId, Proceso proceso,
String proNombre,
String proDescripcion, int proNivel,
int proVersion, byte proDiagrama[],
Set documentos, Set procesos,
Set procesosForProProId,
Set procesosForProId)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
getProDiagramaArchivo ()
setProDiagramaArchivo (String proDiagram
aArchivo)
getProId ()
setProId (String proId)
getProceso ()
setProceso (Proceso proceso)
getProNombre ()
setProNombre (String proNombre)
getProDescripcion ()
setProDescripcion (String proDescripcion
)
getProNivel ()
setProNivel (int proNivel)
getProVersion ()
setProVersion (int proVersion)
getProDiagrama ()
setProDiagrama (byte proDiagrama[])
getDocumentos ()
setDocumentos (Set documentos)
getProcesos ()
setProcesos (Set procesos)
getProcesosForProProId ()
setProcesosForProProId (Set procesosForP
roProId)
getProcesosForProId ()
setProcesosForProId (Set procesosForProI
d)
DocumentoId
Usuario
Usuario
Usuario
String
byte[]
boolean
boolean
boolean
Date
Date
Date
boolean
Boolean
String
short
Date
boolean
int
boolean
String
Set
Set
Set
Set
= new HashSet(0)
= new HashSet(0)
= new HashSet(0)
= new HashSet(0)
+ <<Constructor>> Documento (DocumentoId id,
Usuario usuarioByUsuarioRevisorId,
Usuario usuarioByUsuarioCreadorId,
Usuario usuarioByUsuarioAprobadorId,
String documentoNombre,
byte documentoArchivo[],
boolean documentoCreado,
boolean documentoRevisado,
boolean documentoAprobado,
Date documentoFechaCreado,
Date documentoFechaRevisado,
Date documentoFechaAprobado,
boolean documentoGrupoRevision,
Boolean documentoGrupoAprobacion,
String documentoTipo,
short documentoPrioridad,
Date documentoFechaEntrega,
boolean documentoVersionable,
int documentoVersionmaxima,
boolean documentoExterno,
String documentoDescripcion,
Set documentosForFkDocumentoRelacionado
, Set permisoUsuarioDocumentos,
Set procesos,
Set documentosForFkDocumentoRelacionado
2)
String
void
Usuario
void
Permiso
void
Documento
void
Date
void
Serializable
(io)
: String
: void
Titulo
Descripción
Fecha
Autor/Fuente
:
:
:
:
:
:
:
:
:
:
<<Unresolved Interface>>
grupo
: Date
: void
String
Usuario
Permiso
Documento
Date
Date
+ <<Constructor>> PermisoUsuarioDocumento (String pudId,
Usuario usuario, Permiso permiso,
Documento documento,
Date pudFechaInstauracion,
Date pudFechaValidez)
= new HashSet(0)
= new HashSet(0)
= new HashSet(0)
= new HashSet(0)
= new HashSet(0)
+ <<Constructor>> Usuario (int usuarioId, Perfil perfil,
Grupo grupo, String usuarioNick,
String usuarioPassword,
String usuarioNombre,
String usuarioApellido,
String usuarioCargo,
Date usuarioFechaCreacion,
Date usuarioFechaInactivacion,
boolean usuarioActivo,
boolean usuarioSuperUsuario,
byte usuarioPkey[],
String usuarioFirma,
Set documentosForUsuarioAprobadorId,
Set documentosForUsuarioRevisorId,
Set cuentas,
Set permisoUsuarioDocumentos,
Set documentosForUsuarioCreadorId)
Cuenta
cuentaId
usuario
cuentaEmail
cuentaSmtp
cuentaEntrada
cuentaImap
cuentaSsl
cuentaPassword
cuentaDefault
cuentaPuertoSmtp
cuentaPuertoEntrada
cuentaActiva
cuentaFechaCreacion
cuentaFechaInactivacion
:
:
:
:
:
:
+ <<Constructor>> PermisoUsuarioDocumento ()
+ <<Constructor>> PermisoUsuarioDocumento (String pudId,
Usuario usuario, Permiso permiso,
Date pudFechaInstauracion,
Date pudFechaValidez)
+ <<Constructor>> Usuario ()
+ <<Constructor>> Usuario (int usuarioId, Perfil perfil,
Grupo grupo, String usuarioNick,
String usuarioPassword,
String usuarioNombre,
String usuarioApellido,
String usuarioCargo,
Date usuarioFechaCreacion,
boolean usuarioActivo,
boolean usuarioSuperUsuario)
-
pudId
usuario
permiso
documento
pudFechaInstauracion
pudFechaValidez
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
+ <<Constructor>> Documento ()
+ <<Constructor>> Documento (DocumentoId id,
String documentoNombre,
boolean documentoCreado,
boolean documentoRevisado,
boolean documentoAprobado,
boolean documentoGrupoRevision,
String documentoTipo,
short documentoPrioridad,
Date documentoFechaEntrega,
boolean documentoVersionable,
int documentoVersionmaxima,
boolean documentoExterno)
PermisoUsuarioDocumento
Usuario
id
usuarioByUsuarioRevisorId
usuarioByUsuarioCreadorId
usuarioByUsuarioAprobadorId
documentoNombre
documentoArchivo
documentoCreado
documentoRevisado
documentoAprobado
documentoFechaCreado
documentoFechaRevisado
documentoFechaAprobado
documentoGrupoRevision
documentoGrupoAprobacion
documentoTipo
documentoPrioridad
documentoFechaEntrega
documentoVersionable
documentoVersionmaxima
documentoExterno
documentoDescripcion
documentosForFkDocumentoRelacionado
permisoUsuarioDocumentos
procesos
documentosForFkDocumentoRelacionado2
+
+
+
+
+
+
: String
: void
:
:
:
:
:
:
:
:
String
void
Proceso
void
String
void
String
void
:
:
:
:
:
:
:
:
:
:
:
:
int
void
int
void
byte[]
void
Set
void
Set
void
Set
void
+
+
+
+
id
+
+
DocumentoId
- documentoId
: String
- documentoVersion : int
+ <<Constructor>> DocumentoId ()
+ <<Constructor>> DocumentoId (String documentoId,
int documentoVersion)
+
getDocumentoId ()
+
setDocumentoId (String documentoId)
+
getDocumentoVersion ()
+
setDocumentoVersion (int documentoVersio
n)
+
equals (Object other)
+
hashCode ()
+
+
+
+
: String
: void
: int
: void
getId ()
setId (DocumentoId id)
getUsuarioByUsuarioRevisorId ()
setUsuarioByUsuarioRevisorId (Usuario us
uarioByUsuarioRevisorId)
getUsuarioByUsuarioCreadorId ()
setUsuarioByUsuarioCreadorId (Usuario us
uarioByUsuarioCreadorId)
getUsuarioByUsuarioAprobadorId ()
setUsuarioByUsuarioAprobadorId (Usuario
usuarioByUsuarioAprobadorId)
getDocumentoNombre ()
setDocumentoNombre (String documentoNomb
re)
getDocumentoArchivo ()
setDocumentoArchivo (byte documentoArchi
vo[])
isDocumentoCreado ()
setDocumentoCreado (boolean documentoCre
ado)
isDocumentoRevisado ()
setDocumentoRevisado (boolean documentoR
evisado)
isDocumentoAprobado ()
setDocumentoAprobado (boolean documentoA
probado)
getDocumentoFechaCreado ()
setDocumentoFechaCreado (Date documentoF
echaCreado)
getDocumentoFechaRevisado ()
setDocumentoFechaRevisado (Date document
oFechaRevisado)
getDocumentoFechaAprobado ()
setDocumentoFechaAprobado (Date document
oFechaAprobado)
isDocumentoGrupoRevision ()
setDocumentoGrupoRevision (boolean docum
entoGrupoRevision)
getDocumentoGrupoAprobacion ()
setDocumentoGrupoAprobacion (Boolean doc
umentoGrupoAprobacion)
getDocumentoTipo ()
setDocumentoTipo (String documentoTipo)
getDocumentoPrioridad ()
setDocumentoPrioridad (short documentoPr
ioridad)
getDocumentoFechaEntrega ()
setDocumentoFechaEntrega (Date documento
FechaEntrega)
isDocumentoVersionable ()
setDocumentoVersionable (boolean documen
toVersionable)
getDocumentoVersionmaxima ()
setDocumentoVersionmaxima (int documento
Versionmaxima)
isDocumentoExterno ()
setDocumentoExterno (boolean documentoEx
terno)
getDocumentoDescripcion ()
setDocumentoDescripcion (String document
oDescripcion)
getDocumentosForFkDocumentoRelacionado (
)
setDocumentosForFkDocumentoRelacionado (
Set documentosForFkDocumentoRelacionado)
getPermisoUsuarioDocumentos ()
setPermisoUsuarioDocumentos (Set permiso
UsuarioDocumentos)
getProcesos ()
setProcesos (Set procesos)
getDocumentosForFkDocumentoRelacionado2
()
setDocumentosForFkDocumentoRelacionado2
(Set documentosForFkDocumentoRelacionado
2)
: DocumentoId
: void
: Usuario
: void
: Usuario
: void
: Usuario
: void
: String
: void
: byte[]
: void
: boolean
: void
: boolean
: void
: boolean
: void
: Date
: void
: Date
: void
: Date
: void
: boolean
: void
: Boolean
: void
: String
: void
: short
: void
: Date
: void
: boolean
: void
: int
: void
: boolean
: void
: String
: void
: Set
: void
: Set
: void
: Set
: void
: Set
: void
: boolean
: int
: Set
: void
Figura 18
Diagrama del paquete com.integraitec.docbpm.entity
18/10/2012
Gustavo Justicia, Lucia Del Pino
5.3.3.4. PAQUETE COM.INTEGRAITEC.DOCBPM.VISUAL
85
:
:
:
:
:
:
short
void
String
void
Set
void
DocumentosInternalFrame
* cuentas : Cuentas
+
notificarSolicitudCreacionDocumento (Usu
ario solicitante, Usuario notificado,
String documento, String nota)
notificarSolicitudPerfilesUsuarios (Usua
rio solicitante, Usuario notificado,
String usuarioCambio, String nota,
int tipo)
+
+
+
= new LinkedList<DocumentoTreeTableNode>()
+ getModelo ()
+ setModelo (DocumentosTreeTableModel mode
lo)
+ crearSesion ()
+ abrirSesion ()
+ cerrarSesion ()
+ asignarPermisoDocumento (Usuario usuario
, Documento doc)
+ getDocumentoByID (String id,
String version)
+ getDocumentoByIDSesionAbierta (String id
, String version)
+ getContaDocumentosPorId (String id)
+ getContaDocumentos ()
+ getContaDocumentosNuevos ()
+ cargarDocsAprobarPorUsuario (Usuario usu
arioC)
+ cargarDocsRevisarPorUsuario (Usuario usu
arioC)
+ cargarDocsCrearPorUsuario (Usuario usuar
ioC)
+ cargarDocsLMD (Usuario usuarioC)
+ crearModelo ()
+ crearIdentificadoresArbol ()
+ generarModelo (List identificadores)
+ generarNodo (Documento valor)
+ cargarArbolDeDocumentosAprobados ()
+ setDocumentoFile (byte documento[],
Documento documentoAguardar)
+ guardarDocumento (Documento documento)
+ setProcesosRelacioados (Set procesosArel
acionar, Documento documento)
+ tipoDocumentoPorExtension (String extens
ion)
- insertarDocumentoArbol (DocumentoTreeTab
leNode padre,
DocumentoTreeTableNode hijo)
: DocumentosTreeTableModel
: void
+ setUsuarioDefault (Usuario usuarioConect
ado)
+ revocarPermisoDocumento (Usuario next,
Documento documento)
+ removerProcesosRelacioados (HashSet proc
esosRelacionados, Documento documento)
: void
Usuarios
Grupos
Documento
Documentos
boolean
int
int
javax.swing.JButton
javax.swing.JButton
javax.swing.JList
javax.swing.JScrollPane
javax.swing.JButton
javax.swing.JCheckBox
javax.swing.JList
org.jdesktop.swingx.JXTitledSeparator
javax.swing.JScrollPane
: Documento
-
-
documentos
: DefaultTableModel
: DefaultTableModel
: void
: List
: DocumentosTreeTableModel
: DocumentoTreeTableNode
: void
: void
: void
: void
: String
: void
= new Perfiles()
perfil
perfil
utilidadesPerfiles
perfiles
: void
: void
: void
: void
: void
: void
: boolean
parent
utilidadesUsuarios
utilidadesGrupos
utilidadesPerfiles
primeraGrupos
actualizarPerfiles
actualizarTabla
actualizarTablaUsuarios
busquedaUsuarios
crearPerfil
crearU
crearUsuario
editarGrupo
editarPerfiles
editarUsuario
eliimnar
eliminarUsuario
gruposTab
paneGrupos
panePerfiles
paneUsuario
paneUsuarios
panelGeneral
panelPerfiles
panelUsuarios
tablaGrupos
tablaPerfiles
tablaUsuarios
tabsEdicion
usuariosCredTitlePane
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
MainFrame
Usuarios
Grupos
Perfiles
boolean
javax.swing.JButton
javax.swing.JButton
javax.swing.JButton
org.jdesktop.swingx.JXSearchField
javax.swing.JButton
javax.swing.JButton
javax.swing.JButton
javax.swing.JButton
javax.swing.JButton
javax.swing.JButton
javax.swing.JButton
javax.swing.JButton
javax.swing.JPanel
org.jdesktop.swingx.JXSearchField
javax.swing.JScrollPane
javax.swing.JScrollPane
javax.swing.JScrollPane
javax.swing.JPanel
javax.swing.JPanel
javax.swing.JPanel
org.jdesktop.swingx.JXTable
org.jdesktop.swingx.JXTable
org.jdesktop.swingx.JXTable
javax.swing.JTabbedPane
javax.swing.JLabel
id
usuarioByUsuarioRevisorId
usuarioByUsuarioCreadorId
usuarioByUsuarioAprobadorId
documentoNombre
documentoArchivo
documentoCreado
documentoRevisado
documentoAprobado
documentoFechaCreado
documentoFechaRevisado
documentoFechaAprobado
documentoGrupoRevision
documentoGrupoAprobacion
documentoTipo
documentoPrioridad
documentoFechaEntrega
documentoVersionable
documentoVersionmaxima
documentoExterno
documentoDescripcion
documentosForFkDocumentoRelacionado
permisoUsuarioDocumentos
procesos
documentosForFkDocumentoRelacionado2
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
DocumentoId
Usuario
Usuario
Usuario
String
byte[]
boolean
boolean
boolean
Date
Date
Date
boolean
Boolean
String
short
Date
boolean
int
boolean
String
Set
Set
Set
Set
= true
+ <<Constructor>> UsuariosFrame (MainFrame parent)
cerrarFrame ()
initComponents ()
crearUsuarioActionPerformed (java.awt.
event.ActionEvent evt)
editarUsuarioActionPerformed (java.awt.
event.ActionEvent evt)
panelUsuariosComponentShown (java.awt.
event.ComponentEvent evt)
panelUsuariosFocusGained (java.awt.
event.FocusEvent evt)
panelUsuariosMouseEntered (java.awt.
event.MouseEvent evt)
actualizarTablaUsuariosActionPerformed (
java.awt.event.ActionEvent evt)
gruposTabComponentShown (java.awt.event.
ComponentEvent evt)
crearUActionPerformed (java.awt.event.
ActionEvent evt)
editarGrupoActionPerformed (java.awt.
event.ActionEvent evt)
actualizarTablaActionPerformed (java.
awt.event.ActionEvent evt)
tablaUsuariosMouseClicked (java.awt.
event.MouseEvent evt)
busquedaUsuariosKeyTyped (java.awt.
event.KeyEvent evt)
paneGruposKeyTyped (java.awt.event.
KeyEvent evt)
paneGruposKeyPressed (java.awt.event.
KeyEvent evt)
busquedaUsuariosKeyPressed (java.awt.
event.KeyEvent evt)
tablaGruposMouseClicked (java.awt.event.
MouseEvent evt)
panelPerfilesComponentShown (java.awt.
event.ComponentEvent evt)
actualizarPerfilesActionPerformed (java.
awt.event.ActionEvent evt)
tablaPerfilesMouseClicked (java.awt.
event.MouseEvent evt)
editarPerfilesActionPerformed (java.awt.
event.ActionEvent evt)
utilidadPerfils
crearPerfilActionPerformed (java.awt.
event.ActionEvent evt)
refrescarTablaUsuarios ()
refrescarTablaGrupos ()
refrescarTablaPerfiles ()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
: void
: void
: void
+
+
: void
+
+
: void
+
+
: void
+
+
: void
: void
+
+
: void
+
+
: void
: void
+
+
+
+
: void
: void
+
+
: void
: void
PerfilesDialog
*
*
-
: void
: void
: void
: void
: void
: void
perfil
utilidadPerfils
cancelar
descLabel
descripcionPerfil
editarOpciones
guardar
jScrollPane1
labelOpciones
nombrePerfil
perfilLabel
:
:
:
:
:
:
:
:
:
:
:
Perfil
Perfiles
javax.swing.JButton
javax.swing.JLabel
javax.swing.JTextArea
javax.swing.JButton
javax.swing.JButton
javax.swing.JScrollPane
javax.swing.JLabel
javax.swing.JTextField
javax.swing.JLabel
+
+
= new Perfiles()
+
+
+
+
+
+
+ <<Constructor>> PerfilesDialog (java.awt.Frame parent,
boolean modal)
+ <<Constructor>> PerfilesDialog (java.awt.Frame parent,
boolean modal, Perfil perfil)
+
llenarCampos ()
: void
initComponents ()
: void
cancelarActionPerformed (java.awt.event. : void
ActionEvent evt)
guardarActionPerformed (java.awt.event. : void
ActionEvent evt)
editarOpcionesActionPerformed (java.awt. : void
event.ActionEvent evt)
+
main (String args[])
: void
: void
: void
: void
: void
: void
+
+
+
+
+
+
+
+
- busquedaAprobados
: org.jdesktop.swingx.JXSearchField
- docsPorAprobarSeparador : org.jdesktop.swingx.JXTitledSeparator
- paneAprobados
: javax.swing.JScrollPane
- tablaAprobados
: org.jdesktop.swingx.JXTable
documentosPorRevisarPanel1
documentosPorAprobarPanel1
+ <<Constructor>> DocumentosPorAprobarPanel ()
+
getTablaAprobados ()
: JXTable
+
getTablaAprobados (JXTable jXTable1) : void
initComponents ()
: void
*
*
*
*
*
*
*
*
*
*
+
+
+
*
-
= new HashSet(0)
= new HashSet(0)
= new HashSet(0)
= new HashSet(0)
UsuariosDelGrupoDialog
*
*
*
+
+
-
grupos
usuarios
grupo
CONSULTA
ADMINISTRACION
cancelarBoton
guardarBoton
jButton3
pasarDer
pasarIzq
uSistemaScroll
ugrupoScroll
usuariosGrupoPanel
usuariosSistemaPanel
:
:
:
:
:
:
:
:
:
:
:
:
:
:
Grupos
Usuarios
Grupo
short
short
javax.swing.JButton
javax.swing.JButton
javax.swing.JButton
javax.swing.JButton
javax.swing.JButton
javax.swing.JScrollPane
javax.swing.JScrollPane
javax.swing.JList
javax.swing.JList
= new Grupos()
= new Usuarios()
=1
=2
-
usuarios
solicitante
grupos
grupoSeleccionado
notificaciones
documentos
selgrupo
esCreacion
nota
docNombre
CREACION_USUARIO
MODIFICACION_USUARIO
BAJA_USUARIO
tipo
GruposUsuariosSeparator
aceptarBoton
lstaSolicitud
ugruposPane
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
Usuarios
Usuario
Grupos
Grupo
Notificaciones
Documentos
boolean
boolean
String
String
int
int
int
int
org.jdesktop.swingx.JXTitledSeparator
javax.swing.JButton
javax.swing.JList
javax.swing.JScrollPane
= new Usuarios()
= new Notificaciones()
= new Documentos()
= false
= false
-
initComponents ()
: void
pasarIzqActionPerformed (java.awt.event. : void
ActionEvent evt)
pasarDerActionPerformed (java.awt.event. : void
ActionEvent evt)
cancelarBotonActionPerformed (java.awt. : void
event.ActionEvent evt)
guardarBotonActionPerformed (java.awt. : void
event.ActionEvent evt)
: void
: void
: void
: void
: void
: void
: void
: void
: void
: void
: void
: void
: void
: void
GruposDialog
* grupo
: Grupo
* utilidadGrupos : Grupos
- cancelar
: javax.swing.JButton
- guardar
: javax.swing.JButton
- nombreGrupo : javax.swing.JTextField
- nombreLabel : javax.swing.JLabel
- usuarioGrupo : javax.swing.JButton
= new Grupos()
+ <<Constructor>> GruposDialog (java.awt.Frame parent,
boolean modal)
+ <<Constructor>> GruposDialog (java.awt.Frame parent,
boolean modal, Grupo grupo)
+
llenarCampos ()
: void
initComponents ()
: void
guardarActionPerformed (java.awt.event. : void
ActionEvent evt)
cancelarActionPerformed (java.awt.event. : void
ActionEvent evt)
usuarioGrupoActionPerformed (java.awt. : void
event.ActionEvent evt)
+
main (String args[])
: void
ClienteNotificaciones
(business)
grupo
documento
docSeleccionado
: Usuario
: void
: Usuario
: void
- busquedaDocs : org.jdesktop.swingx.JXSearchField
- lmdSeparador : org.jdesktop.swingx.JXTitledSeparator
- paneLMD
: javax.swing.JScrollPane
- tablaLMDdocs : org.jdesktop.swingx.JXTable
= new HashSet(0)
GestionDeCambiosFrame
* usuarioConectado : Usuario
* parent
: MainFrame
- bajaDoc
: javax.swing.JButton
- creaDoc
: javax.swing.JButton
- creaU
: javax.swing.JButton
- documentosSol
: org.jdesktop.swingx.JXTitledPanel
- eliU
: javax.swing.JButton
- modU
: javax.swing.JButton
- perDoc
: javax.swing.JButton
- revDoc
: javax.swing.JButton
- solicitudes
: org.jdesktop.swingx.JXTitledPanel
- verDoc
: javax.swing.JButton
+
getTablaLMD ()
: JXTable
+
setTablaLMD (JXTable jXTable1) : void
+ <<Constructor>> DocumentosLMDPanel ()
initComponents ()
: void
+ <<Constructor>> Grupo ()
+ <<Constructor>> Grupo (int grupoId, String grupoNombre)
+ <<Constructor>> Grupo (int grupoId, String grupoNombre,
Set usuarios)
+
getGrupoId ()
: int
+
setGrupoId (int grupoId)
: void
+
getGrupoNombre ()
: String
+
setGrupoNombre (String grupoNombre)
: void
+
getUsuarios ()
: Set
+
setUsuarios (Set usuarios)
: void
: String
: void
+ <<Constructor>> GestionDeCambiosFrame (MainFrame parent,
Usuario usuarioConectado)
cerrarFrame ()
initComponents ()
creaDocActionPerformed (java.awt.event.
ActionEvent evt)
verDocActionPerformed (java.awt.event.
ActionEvent evt)
perDocActionPerformed (java.awt.event.
ActionEvent evt)
bajaDocActionPerformed (java.awt.event.
ActionEvent evt)
revDocActionPerformed (java.awt.event.
ActionEvent evt)
creaUActionPerformed (java.awt.event.
ActionEvent evt)
modUActionPerformed (java.awt.event.
ActionEvent evt)
eliUActionPerformed (java.awt.event.
ActionEvent evt)
: byte[]
: void
: boolean
: void
: boolean
: void
: boolean
: void
: Date
: void
DesktopBorder
(utilities)
- image : BufferedImage
+ <<Constructor>> DesktopBorder (BufferedImage image)
+
paintBorder (Component c, Graphics g, : void
int x, int y, int width, int height)
+
getBorderInsets (Component c)
: Insets
+
isBorderOpaque ()
: boolean
: Date
: void
UsuariosDialog
<<Unresolved Class>>
JInternalFrame
(swing)
borderNuevo
GestionDeCambiosDocumento
: Date
: void
+
+
+
+
*
*
*
*
*
*
-
: boolean
: void
: Boolean
: void
: String
: void
: short
: void
: Date
: void
CAMBIO_PERMISO
BAJA_DOCUMENTO
REVOCAR_PERMISO
NUEVA_VERSION
tipo
documentos
docSeleccionado
usuarioConectado
notificaciones
parent
cancelarBoton
docsAprobadosLabel
docsExplorer
exploradorDocumentos
jXTreeTable1
solicitudBoton
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
int
int
int
int
int
Documentos
Documento
Usuario
Notificaciones
MainFrame
javax.swing.JButton
javax.swing.JLabel
javax.swing.JScrollPane
org.jdesktop.swingx.JXTitledPanel
org.jdesktop.swingx.JXTreeTable
javax.swing.JButton
=1
=2
=3
=4
usuarios
Usuarios
(business)
* sesionAbierta : Session
= new Notificaciones()
panelOpciones
panelDatos
utilidadesUsuarios
usuarios
: boolean
: void
+ <<Constructor>> GestionDeCambiosDocumento (MainFrame par
ent, boolean modal,
Usuario usuarioConectado, int tipo)
: int
: void
-
: boolean
: void
-
initComponents ()
solicitudBotonActionPerformed (java.awt.
event.ActionEvent evt)
cancelarBotonActionPerformed (java.awt.
event.ActionEvent evt)
<<Unresolved Class>>
JPanel
(swing)
panelGeneral
panelUsuarios
panelPerfiles
gruposTab
: void
: void
jPanel1
notificacionPanel
grupoPanel
: void
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
getUsuarioById (int usuarioId)
getUsuarioByIdSession (int usuarioId)
crearSesion ()
abrirSesion ()
cerrarSesion ()
getPerfilById (short perfilId)
getGrupoById (int grupoId)
getAllGrupos ()
getAllPerfiles ()
getUsuariosEnSistema ()
getListaUsuarios ()
getListaUsuarios (Documento documento)
getListaUsuariosByGrupo (int grupo)
getListaUsuariosByPerfil (short perfil)
guardarUsuario (Usuario usuarioAcrear)
eliminarUsuario (Usuario usuarioById)
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
Usuario
Usuario
void
void
void
Perfil
Grupo
utilidadUsuarios
List
List
DefaultTableModel
DefaultListModel<String>
DefaultListModel<String>
DefaultListModel<String>
DefaultListModel<String>
void
void
panelDatos
busquedaUsuariosPanel
: String
: void
utilidadUsuarios
usuarios
EscritorioDialog
<<Unresolved Class>>
- jButton1
: javax.swing.JButton
- jButton2
: javax.swing.JButton
- jCheckBox1 : javax.swing.JCheckBox
- jComboBox1 : javax.swing.JComboBox
- jLabel1
: javax.swing.JLabel
- jLabel2
: javax.swing.JLabel
- jScrollPane1 : javax.swing.JScrollPane
- jXTable1
: org.jdesktop.swingx.JXTable
crearU
* escritorioApintar
: JDesktopPane
JButton
editarGrupo
* borderAnterior
: Border
cancelarBoton
aceptar
(swing)
editarUsuario
cancelar
jButton3
* borderNuevo
: DesktopBorder
agregar
cancelar
solicitudBoton
eliminarUsuario
pasarIzq
remover
guardar
- aceptar
: javax.swing.JButton
aplicar
cancelarBoton
cacelar
pasarDer
eliimnar
- aparenciaEscritorio : org.jdesktop.swingx.JXTitledSeparator editarOpciones
guardarBoton
editarPerfiles
- aplicar
: javax.swing.JButton
crearUsuario
- cancelar
: javax.swing.JButton
- escritorioPreview
: org.jdesktop.swingx.JXImageView
procesosRelacionadosBotondocsPermitidos
nombreLabel
jLabel1
estadoDocs
fimaLabel
borrarBoton
copiarR
agregarSubproceso
pasarUsuarioA
editarProceso
agregarCuenta
guardarBoton
pasarUsuarioR
cancelarBoton
editarCuenta
cancelarBoton
aceptarBoton
enviarTexto
cancelarBoton
cancelarBoton
pasarUsuarioC
aceptarBoton
eliminarProceso
actualizarEmails
descripcionDocumento
cerrar
agregarProceso
cancelarBoton
aceptarBoton
- listaEscritorio
: javax.swing.JList
- paneEscritorios
: javax.swing.JScrollPane
jLabel3
<<Unresolved Class>>
- previewLabel
: org.jdesktop.swingx.JXLabel
jLabel5
JLabel
jLabel7
+ <<Constructor>> EscritorioDialog (java.awt.Frame parent,
jLabel1
(swing)
jLabel1
perfilLabel
boolean modal,
descLabel
jLabel2
JDesktopPane escritorioApintar)
jLabel6
usuariosCredTitlePane
docsAprobadosLabel
perfilLabel
jLabel4
initComponents ()
: void
labelOpciones
jLabel2
+
pintarDefault ()
: void
listaEscritorioValueChanged (javax.
: void
swing.event.ListSelectionEvent evt)
aplicarActionPerformed (java.awt.event.
: void
emailLabel
fCreacionLabel
labelTitulo
jLabel9
labelUsuarioC
salidaLabel
jLabel1
jLabel4
versionActualLabel
servidorSalidaLabel
textoSolicitud
jLabel3
procesoLabel
procesandoTexto
labelUsuarioR
servidorEntradaLabel
jLabel2
jLabel5
labelUsuarioA
passLabel
docNombreLabel
fInactivacionLabel
entradaLabel
ActionEvent evt)
cancelarActionPerformed (java.awt.event. : void
ActionEvent evt)
aceptarActionPerformed (java.awt.event. : void
ActionEvent evt)
: void
: Set
: void
: Set
: void
: Set
: void
borderAnterior
utilidadUsuarios
repetirContrasena
esUsuarioNuevo
usuario
parent
esMicuenta
apellido
cancelarBoton
cargo
cuentasEmail
estado
fimaLabel
firma
grupoCheck
grupoCombo
grupoPanel
guardarBoton
jLabel1
jLabel2
jLabel3
jLabel4
jLabel5
jLabel6
jLabel7
jXTitledSeparator1
nombre
nombreUsuario
password
perfilLabel
perfiles
repetirPassword
ssoCheck
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
Usuarios
boolean
boolean
Usuario
Frame
boolean
javax.swing.JTextField
javax.swing.JButton
javax.swing.JTextField
javax.swing.JButton
javax.swing.JComboBox
javax.swing.JLabel
javax.swing.JTextField
javax.swing.JCheckBox
javax.swing.JComboBox
javax.swing.JPanel
javax.swing.JButton
javax.swing.JLabel
javax.swing.JLabel
javax.swing.JLabel
javax.swing.JLabel
javax.swing.JLabel
javax.swing.JLabel
javax.swing.JLabel
org.jdesktop.swingx.JXTitledSeparator
javax.swing.JTextField
javax.swing.JTextField
javax.swing.JPasswordField
javax.swing.JLabel
javax.swing.JComboBox
javax.swing.JPasswordField
javax.swing.JCheckBox
= new Usuarios()
= false
= false
= false
ReferenciasDialog
- jButton1
: javax.swing.JButton
- jLabel1
: javax.swing.JLabel
- jLabel2
: javax.swing.JLabel
- jScrollPane1 : javax.swing.JScrollPane
- jXTable1
: org.jdesktop.swingx.JXTable
NotificacionDaemon
(utilities)
parent
MainFrame
*
*
*
*
*
*
-
: void
: void
: void
: void
: void
: void
: void
: void
: void
: void
: void
: void
: void
-
SolicitudDialog
initComponents ()
: void
agregarDesActionPerformed (java.awt. : void
event.ActionEvent evt)
= new Procesos()
= new Documentos()
+ <<Constructor>> NotaCreacionDocumento (java.awt.
Frame parent, Component c,
DelegarCreacion dcreacion,
boolean modal)
= false
-
+ <<Constructor>> RelacionarProcesos (java.awt.
Frame parent, boolean modal,
Proceso proceso)
+ <<Constructor>> RelacionarProcesos (java.awt.
Frame parent, boolean modal,
Documento documento)
initComponents ()
: void
cacelarActionPerformed (java.awt.event. : void
ActionEvent evt)
agregarActionPerformed (java.awt.event. : void
ActionEvent evt)
removerActionPerformed (java.awt.event. : void
ActionEvent evt)
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
LinkedList<String>
Usuario
IconoBandejaWindows
LinkedList<Integer>
NotificacionDaemon
NotificacionDaemon
javax.swing.JMenuItem
javax.swing.JButton
javax.swing.JButton
javax.swing.JButton
javax.swing.JButton
javax.swing.JButton
javax.swing.JMenuItem
javax.swing.JButton
javax.swing.JButton
javax.swing.JDesktopPane
javax.swing.JLabel
javax.swing.JMenu
javax.swing.JMenu
javax.swing.JMenuBar
javax.swing.JMenuItem
javax.swing.JPanel
javax.swing.JToolBar.Separator
javax.swing.JSplitPane
javax.swing.JToolBar
org.jdesktop.swingx.JXStatusBar
org.jdesktop.swingx.JXTitledPanel
= null
= false
= new LinkedList<>()
*
*
*
-
cliente
parent
usuarioConectado
actualizarBoton
cuerpoNotificacionEditorPane
cuerpoNotificacionPane
divisorPanes
jButton1
notificacionLabel
notificacionPanel
notificacionesInternoPane
notificacionesMenu
notificacionesTabs
tablaNotificaciones
:
:
:
:
:
:
:
:
:
:
:
:
:
:
parent
procesos
eliminarBloqueado
agregarProceso
agregarSubproceso
arbolPane
arbolProcesos
cerrar
editarProceso
eliminarProceso
jLabel4
jLabel5
paneProceso
procesoLabel
procesoSeleccionado
procesosRelacionadosBoton
procesosTitlePane
propiedadesPane
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
+
+
+
: LinkedList<String>
: LinkedList<Integer>
: void
+
: void
: void
usuarioConectado
Usuario
(entity)
-
: void
: void
: void
: void
usuarioAutenticado
usuarioConectado
usuarioCuenta
solicitante
usuario
: void
: void
: void
: void
: void
+
+
+
+
+
+
+
+
+
+
+
+
+
+
: void
: void
IconoBandejaWindows
: void
: JButton
: void
iconobandeja
parent
+ <<Constructor>> IconoBandejaWindows (Image imagenDeIcono
)
+
mostrarNotificacionDeDocumentoDeProcedim
: void
iento (MainFrame padreGeneral,
String notificacion)
+
displayMessage (String caption,
: void
String text, MessageType messageType)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
= new Procesos()
= true
CuentasEmailDialog
* usuarioCuenta
: Usuario
* utilidadCuentas : Cuentas
* utilidadUsuarios : Usuarios
* parent
: Frame
- actualizarEmails : javax.swing.JButton
- agregarCuenta
: javax.swing.JButton
- cancelarBoton
: javax.swing.JButton
- editarCuenta
: javax.swing.JButton
- emailSeparador : org.jdesktop.swingx.JXTitledSeparator
- paneCuentas
: javax.swing.JScrollPane
- tablaCuentas
: org.jdesktop.swingx.JXTable
procesoFrame
: void
: void
: void
: Procesos
: void
+ <<Constructor>> CuentasEmailDialog (java.awt.
Frame parent, boolean modal)
+ <<Constructor>> CuentasEmailDialog (java.awt.
Frame parent, boolean modal,
Usuario usuario)
initComponents ()
formComponentShown (java.awt.event.
ComponentEvent evt)
agregarCuentaActionPerformed (java.awt.
event.ActionEvent evt)
editarCuentaActionPerformed (java.awt.
event.ActionEvent evt)
cancelarBotonActionPerformed (java.awt.
event.ActionEvent evt)
tablaCuentasMouseClicked (java.awt.
event.MouseEvent evt)
actualizarEmailsActionPerformed (java.
awt.event.ActionEvent evt)
+
main (String args[])
refrescarTablaCuentas ()
: JXTreeTable
: void
: void
: void
: void
: void
: void
: void
*
*
-
: void
: void
: void
documento
parent
aceptarBoton
aprobacion
creacion
fAprobacionLabel
fCreacionLabel
fRevisionLabel
id
idInternaLabel
jXLabel8
nombre
nombreLabel
panelDatos
revision
verDescripcion
verHistorialVersiones
verHistorialVersiones1
versionActual
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
Documento
MainFrame
javax.swing.JButton
org.jdesktop.swingx.JXTextField
org.jdesktop.swingx.JXTextField
org.jdesktop.swingx.JXLabel
org.jdesktop.swingx.JXLabel
org.jdesktop.swingx.JXLabel
org.jdesktop.swingx.JXTextField
org.jdesktop.swingx.JXLabel
org.jdesktop.swingx.JXLabel
org.jdesktop.swingx.JXTextField
org.jdesktop.swingx.JXLabel
org.jdesktop.swingx.JXPanel
org.jdesktop.swingx.JXTextField
org.jdesktop.swingx.JXButton
org.jdesktop.swingx.JXButton
org.jdesktop.swingx.JXButton
org.jdesktop.swingx.JXTextField
+ <<Constructor>> DocumentosPropiedades (java.awt.
Frame parent, boolean modal,
Documento documento)
initComponents ()
: void
verDescripcionActionPerformed (java.awt. : void
event.ActionEvent evt)
aceptarBotonActionPerformed (java.awt. : void
event.ActionEvent evt)
: void
: void
: void
: void
: void
: void
DescripcionDocumentos
* descripcion
: String
- aceptarBoton
: org.jdesktop.swingx.JXButton
- editorPaneDescripcion : org.jdesktop.swingx.JXEditorPane
- paneDescripcion
: javax.swing.JScrollPane
+ <<Constructor>> DescripcionDocumentos (java.awt.
Frame parent, Component comp,
boolean modal, Documento documento)
initComponents ()
: void
aceptarBotonActionPerformed (java.awt. : void
event.ActionEvent evt)
dcreacion
DelegarCreación
NotasGenerales
= ""
+ <<Constructor>> NotasGenerales (java.awt.Frame parent,
Component c, boolean modal)
+
getNotaEntregable ()
: String
+
setNotaEntregable (String notaEntregable : void
)
initComponents ()
: void
agregarBotonActionPerformed (java.awt. : void
event.ActionEvent evt)
*
*
*
*
*
*
*
*
-
usuarios
version
descripcion
notaCreador
usuarioConectado
documento
esNuevaVersion
pnmodelo
aceptarBoton
borrarBoton
busquedaUsuariosPanel
cancelarBoton
copiarR
descripcionDocumento
docNombreLabel
fechasEntrega
labelTitulo
labelUsuarioA
labelUsuarioC
labelUsuarioR
listaUsuario
nombreDocumento
paneUsuarios
panelDatos
pasarUsuarioA
pasarUsuarioC
pasarUsuarioR
usuarioAprobador
usuarioCreacion
usuarioRevision
versionActual
versionActualLabel
versionable
versionesMax
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
Usuarios
boolean
String
String
Usuario
Documento
boolean
SpinnerNumberModel
javax.swing.JButton
javax.swing.JButton
javax.swing.JPanel
javax.swing.JButton
javax.swing.JButton
javax.swing.JButton
javax.swing.JLabel
org.jdesktop.swingx.JXDatePicker
javax.swing.JLabel
javax.swing.JLabel
javax.swing.JLabel
javax.swing.JLabel
javax.swing.JList
javax.swing.JTextField
javax.swing.JScrollPane
javax.swing.JPanel
javax.swing.JButton
javax.swing.JButton
javax.swing.JButton
javax.swing.JTextField
javax.swing.JTextField
javax.swing.JTextField
javax.swing.JTextField
javax.swing.JLabel
javax.swing.JCheckBox
javax.swing.JSpinner
+
getNotaCreador ()
+
setNotaCreador (String notaCreador)
+
getDescripcion ()
+
setDescripcion (String descripcion)
+ <<Constructor>> DelegarCreación (java.awt.Frame parent,
boolean modal,
Usuario usuarioConectado)
NuevoProcesoFrame
*
*
*
*
*
-
= true
= ""
= ""
= false
= new SpinnerNumberModel(1,1,3,1)
procesoNuevo
procesoFrame
nodoNuevo
esModificado
esSubnivel
IDproc
aceptarBoton
cancelarBoton
descripcion
jLabel1
jLabel2
jLabel3
jScrollPane2
nombre
:
:
:
:
:
:
:
:
:
:
:
:
:
:
Proceso
ProcedimientosFrame
ProcesoTreeTableNode
boolean
boolean
javax.swing.JTextField
javax.swing.JButton
javax.swing.JButton
org.jdesktop.swingx.JXEditorPane
javax.swing.JLabel
javax.swing.JLabel
javax.swing.JLabel
javax.swing.JScrollPane
javax.swing.JTextField
= false
= false
+ <<Constructor>> NuevoProcesoFrame (java.awt.
Frame parent, boolean modal)
* <<Constructor>> NuevoProcesoFrame (MainFrame parent,
boolean b, ProcedimientosFrame aThis)
* <<Constructor>> NuevoProcesoFrame (MainFrame parent,
boolean b, ProcedimientosFrame aThis,
Proceso nodo)
*
-
<<Constructor>> NuevoProcesoFrame (MainFrame parent,
ProcedimientosFrame aThis,
String idPadre)
initComponents ()
: void
aceptarBotonActionPerformed (java.awt. : void
event.ActionEvent evt)
cancelarBotonActionPerformed (java.awt. : void
event.ActionEvent evt)
: String
: void
: String
: void
utilidadCuentas
Cuentas
(business)
+ <<Constructor>> DelegarCreación (java.awt.Frame parent,
boolean modal,
Usuario usuarioConectado,
Documento documento)
+
+
-
cerrarFrame ()
setDatos ()
initComponents ()
copiarRActionPerformed (java.awt.event.
ActionEvent evt)
pasarUsuarioCActionPerformed (java.awt.
event.ActionEvent evt)
pasarUsuarioRActionPerformed (java.awt.
event.ActionEvent evt)
pasarUsuarioAActionPerformed (java.awt.
event.ActionEvent evt)
borrarBotonActionPerformed (java.awt.
event.ActionEvent evt)
versionableStateChanged (javax.swing.
event.ChangeEvent evt)
descripcionDocumentoActionPerformed (jav
a.awt.event.ActionEvent evt)
aceptarBotonActionPerformed (java.awt.
event.ActionEvent evt)
cancelarBotonActionPerformed (java.awt.
event.ActionEvent evt)
nombreDocumentoFocusGained (java.awt.
event.FocusEvent evt)
* sesionAbierta : Session
: void
: void
: void
: void
utilidadCuentas
: void
+ getCuentaById (String cuentaId)
: Cuenta
+ getCuentaDefaultByUsuario (int usuarioId : Cuenta
)
+ getCuentasDeUsuario (int usuarioId)
: DefaultTableModel
+ guardarCuenta (Cuenta cuentaAcrear)
: void
+ crearSesion ()
: void
+ abrirSesion ()
: void
+ cerrarSesion ()
: void
: void
: void
CuentaEmail
: void
: void
: void
: void
: void
: void
*
*
*
*
-
usuarioCuenta
cuenta
utilidadCuentas
esModificado
cancelarBoton
cuentaDefault
cuentaEstado
direccionEmail
emailLabel
entradaLabel
fCreacionLabel
fInactivacionLabel
fechaCreacion
fechaInactivacion
guardarBoton
imapCheck
jLabel9
passLabel
password
puertoEntrada
puertoSalida
salidaLabel
separadorTitulo
servidorEntrada
servidorEntradaLabel
servidorSalida
servidorSalidaLabel
sslCheck
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
Usuario
Cuenta
Cuentas
boolean
javax.swing.JButton
javax.swing.JCheckBox
javax.swing.JComboBox
javax.swing.JTextField
javax.swing.JLabel
javax.swing.JLabel
javax.swing.JLabel
javax.swing.JLabel
javax.swing.JFormattedTextField
javax.swing.JFormattedTextField
javax.swing.JButton
javax.swing.JCheckBox
javax.swing.JLabel
javax.swing.JLabel
javax.swing.JPasswordField
javax.swing.JFormattedTextField
javax.swing.JFormattedTextField
javax.swing.JLabel
org.jdesktop.swingx.JXTitledSeparator
javax.swing.JTextField
javax.swing.JLabel
javax.swing.JTextField
javax.swing.JLabel
javax.swing.JCheckBox
= new Cuentas()
= false
+ <<Constructor>> CuentaEmail (java.awt.Frame parent,
boolean modal)
+ <<Constructor>> CuentaEmail (Frame parent, boolean b,
Usuario usuario)
+ <<Constructor>> CuentaEmail (Frame parent, boolean b,
Cuenta cuenta)
+
llenarDatos ()
: void
+
guardarCuenta ()
: void
initComponents ()
: void
guardarBotonActionPerformed (java.awt. : void
event.ActionEvent evt)
cancelarBotonActionPerformed (java.awt. : void
event.ActionEvent evt)
+
main (String args[])
: void
nodoNuevo
procesoNuevo
proceso
Cuenta
(entity)
-
cuentaId
usuario
cuentaEmail
cuentaSmtp
cuentaEntrada
cuentaImap
cuentaSsl
cuentaPassword
cuentaDefault
cuentaPuertoSmtp
cuentaPuertoEntrada
cuentaActiva
cuentaFechaCreacion
cuentaFechaInactivacion
:
:
:
:
:
:
:
:
:
:
:
:
:
:
String
Usuario
String
String
String
boolean
boolean
String
boolean
String
String
boolean
Date
Date
+ <<Constructor>> Cuenta ()
+ <<Constructor>> Cuenta (String cuentaId,
Usuario usuario, String cuentaEmail,
String cuentaSmtp,
String cuentaEntrada,
boolean cuentaImap, boolean cuentaSsl,
String cuentaPassword,
boolean cuentaDefault,
String cuentaPuertoSmtp,
String cuentaPuertoEntrada,
boolean cuentaActiva,
Date cuentaFechaCreacion)
+ <<Constructor>> Cuenta (String cuentaId,
Usuario usuario, String cuentaEmail,
String cuentaSmtp,
String cuentaEntrada,
boolean cuentaImap, boolean cuentaSsl,
String cuentaPassword,
boolean cuentaDefault,
String cuentaPuertoSmtp,
String cuentaPuertoEntrada,
boolean cuentaActiva,
Date cuentaFechaCreacion,
Date cuentaFechaInactivacion)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
getCuentaId ()
setCuentaId (String cuentaId)
getUsuario ()
setUsuario (Usuario usuario)
getCuentaEmail ()
setCuentaEmail (String cuentaEmail)
getCuentaSmtp ()
setCuentaSmtp (String cuentaSmtp)
getCuentaEntrada ()
setCuentaEntrada (String cuentaEntrada)
isCuentaImap ()
setCuentaImap (boolean cuentaImap)
isCuentaSsl ()
setCuentaSsl (boolean cuentaSsl)
getCuentaPassword ()
setCuentaPassword (String cuentaPassword
)
isCuentaDefault ()
setCuentaDefault (boolean cuentaDefault)
getCuentaPuertoSmtp ()
setCuentaPuertoSmtp (String cuentaPuerto
Smtp)
getCuentaPuertoEntrada ()
setCuentaPuertoEntrada (String cuentaPue
rtoEntrada)
isCuentaActiva ()
setCuentaActiva (boolean cuentaActiva)
getCuentaFechaCreacion ()
setCuentaFechaCreacion (Date cuentaFecha
Creacion)
getCuentaFechaInactivacion ()
setCuentaFechaInactivacion (Date cuentaF
echaInactivacion)
cuenta
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
int
Perfil
Grupo
String
String
String
String
String
Date
Date
boolean
boolean
byte[]
String
Set
Set
Set
Set
Set
= new HashSet(0)
= new HashSet(0)
= new HashSet(0)
= new HashSet(0)
= new HashSet(0)
getUsuarioId ()
setUsuarioId (int usuarioId)
getPerfil ()
setPerfil (Perfil perfil)
getGrupo ()
setGrupo (Grupo grupo)
getUsuarioNick ()
setUsuarioNick (String usuarioNick)
getUsuarioPassword ()
setUsuarioPassword (String usuarioPasswo
rd)
getUsuarioNombre ()
setUsuarioNombre (String usuarioNombre)
getUsuarioApellido ()
setUsuarioApellido (String usuarioApelli
do)
getUsuarioCargo ()
setUsuarioCargo (String usuarioCargo)
getUsuarioFechaCreacion ()
setUsuarioFechaCreacion (Date usuarioFec
haCreacion)
getUsuarioFechaInactivacion ()
setUsuarioFechaInactivacion (Date usuari
oFechaInactivacion)
isUsuarioActivo ()
setUsuarioActivo (boolean usuarioActivo)
isUsuarioSuperUsuario ()
setUsuarioSuperUsuario (boolean usuarioS
uperUsuario)
getUsuarioPkey ()
setUsuarioPkey (byte usuarioPkey[])
getUsuarioFirma ()
setUsuarioFirma (String usuarioFirma)
getDocumentosForUsuarioAprobadorId ()
setDocumentosForUsuarioAprobadorId (Set
documentosForUsuarioAprobadorId)
getDocumentosForUsuarioRevisorId ()
setDocumentosForUsuarioRevisorId (Set do
cumentosForUsuarioRevisorId)
getCuentas ()
setCuentas (Set cuentas)
getPermisoUsuarioDocumentos ()
setPermisoUsuarioDocumentos (Set permiso
UsuarioDocumentos)
getDocumentosForUsuarioCreadorId ()
setDocumentosForUsuarioCreadorId (Set do
cumentosForUsuarioCreadorId)
<<Unresolved Class>>
TrayIcon
(awt)
DocumentosPropiedades
= new Cuentas()
= new Usuarios()
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
+ <<Constructor>> Usuario (int usuarioId, Perfil perfil,
Grupo grupo, String usuarioNick,
String usuarioPassword,
String usuarioNombre,
String usuarioApellido,
String usuarioCargo,
Date usuarioFechaCreacion,
Date usuarioFechaInactivacion,
boolean usuarioActivo,
boolean usuarioSuperUsuario,
byte usuarioPkey[],
String usuarioFirma,
Set documentosForUsuarioAprobadorId,
Set documentosForUsuarioRevisorId,
Set cuentas,
Set permisoUsuarioDocumentos,
Set documentosForUsuarioCreadorId)
parent
: void
+
+
+
+
+ <<Constructor>> ProcedimientosFrame (final MainFrame par
ent)
validarOpciones ()
initComponents ()
+
cargarProcesos ()
+
getProcesos ()
cerrarActionPerformed (java.awt.event.
ActionEvent evt)
+
getTreeTable ()
agregarProcesoActionPerformed (java.awt.
event.ActionEvent evt)
arbolProcesosValueChanged (javax.swing.
event.TreeSelectionEvent evt)
editarProcesoActionPerformed (java.awt.
event.ActionEvent evt)
agregarSubprocesoActionPerformed (java.
awt.event.ActionEvent evt)
eliminarProcesoActionPerformed (java.
awt.event.ActionEvent evt)
procesosRelacionadosBotonActionPerformed
(java.awt.event.ActionEvent evt)
cerrarFrame ()
* notaEntregable
: String
- agregarBoton
: org.jdesktop.swingx.JXButton
- editorSolicitud
: org.jdesktop.swingx.JXEditorPane
- solicitudEditorPane : javax.swing.JScrollPane
usuarioId
perfil
grupo
usuarioNick
usuarioPassword
usuarioNombre
usuarioApellido
usuarioCargo
usuarioFechaCreacion
usuarioFechaInactivacion
usuarioActivo
usuarioSuperUsuario
usuarioPkey
usuarioFirma
documentosForUsuarioAprobadorId
documentosForUsuarioRevisorId
cuentas
permisoUsuarioDocumentos
documentosForUsuarioCreadorId
+ <<Constructor>> Usuario ()
+ <<Constructor>> Usuario (int usuarioId, Perfil perfil,
Grupo grupo, String usuarioNick,
String usuarioPassword,
String usuarioNombre,
String usuarioApellido,
String usuarioCargo,
Date usuarioFechaCreacion,
boolean usuarioActivo,
boolean usuarioSuperUsuario)
: void
initComponents ()
: void
agregarBotonActionPerformed (java.awt. : void
event.ActionEvent evt)
MainFrame
Procesos
boolean
javax.swing.JButton
javax.swing.JButton
org.jdesktop.swingx.JXTitledPanel
org.jdesktop.swingx.JXTreeTable
javax.swing.JButton
javax.swing.JButton
javax.swing.JButton
javax.swing.JLabel
javax.swing.JLabel
javax.swing.JScrollPane
javax.swing.JLabel
javax.swing.JTextField
javax.swing.JButton
org.jdesktop.swingx.JXTitledSeparator
org.jdesktop.swingx.JXTitledPanel
procesos
procesosAux
=0
=0
+ <<Constructor>> NotificacionesFrame (String title)
+ <<Constructor>> NotificacionesFrame (MainFrame parent,
Usuario usuarioConectado)
cerrarFrame ()
: void
+
cargarNotificaciones ()
: void
initComponents ()
: void
jButton1ActionPerformed (java.awt.event. : void
ActionEvent evt)
actualizarBotonActionPerformed (java.
: void
awt.event.ActionEvent evt)
tablaNotificacionesMouseClicked (java.
: void
awt.event.MouseEvent evt)
ProcedimientosFrame
*
*
*
-
= null
run ()
ClienteNotificaciones
MainFrame
Usuario
javax.swing.JButton
org.jdesktop.swingx.JXEditorPane
javax.swing.JScrollPane
javax.swing.JSplitPane
javax.swing.JButton
org.jdesktop.swingx.JXTitledSeparator
javax.swing.JPanel
javax.swing.JScrollPane
javax.swing.JPopupMenu
javax.swing.JTabbedPane
org.jdesktop.swingx.JXTable
+ <<Constructor>> SolicitudDialog (MainFrame parent,
Usuario usuarioConectado,
boolean esDocumento, int tipo)
initComponents ()
: void
enviarTextoActionPerformed (java.awt.
: void
event.ActionEvent evt)
cancelarBotonActionPerformed (java.awt. : void
event.ActionEvent evt)
NotaCreacionDocumento
* dcreacion
: DelegarCreacion
- agregarBoton : org.jdesktop.swingx.JXButton
- notaDocs
: org.jdesktop.swingx.JXEditorPane
- paneEditor
: javax.swing.JScrollPane
RelacionarProcesos
listaFrames
usuarioAutenticado
iconobandeja
opcionesActivas
notificador1
notificacionesEntrantes
bloquearEstacion
botonCambios
botonConfiguracion
botonDocumentos
botonNotificaciones
botonProcesos
escritorioMenu
jButton1
jButton6
jDesktopPane1
jLabel1
jMenu1
jMenu3
jMenuBar1
jMenuItem4
jPanel1
jSeparator1
jSplitPane1
jToolBar1
jXStatusBar1
jXTitledPanel1
getListaFrames ()
getOpcionesActivas ()
setOpcionesActivas (LinkedList<Integer>
opcionesActivas)
setListaFrames (LinkedList<String>
listaFrames)
+ <<Constructor>> MainFrame ()
+ <<Constructor>> MainFrame (Usuario usuarioAutenticado)
iniciarNotificador (NotificacionDaemon d
emonio)
pararNotificador (NotificacionDaemon dem
onio)
validarOpciones ()
+
insertarEnDesktop (final JInternalFrame
frame)
initComponents ()
escritorioMenuActionPerformed (java.awt.
event.ActionEvent evt)
jButton6ActionPerformed (java.awt.event.
ActionEvent evt)
botonProcesosActionPerformed (java.awt.
event.ActionEvent evt)
botonDocumentosActionPerformed (java.
awt.event.ActionEvent evt)
botonCambiosActionPerformed (java.awt.
event.ActionEvent evt)
botonNotificacionesActionPerformed (java
.awt.event.ActionEvent evt)
jButton1ActionPerformed (java.awt.event.
ActionEvent evt)
bloquearEstacionActionPerformed (java.
awt.event.ActionEvent evt)
jMenuItem4ActionPerformed (java.awt.
event.ActionEvent evt)
+
getBotonProcesos ()
+
setBotonProcesos (JButton botonProcesos)
: void
: void
: void
: String
parent
* usuarioConectado
: Usuario
* parent
: MainFrame
* documento
: String
* esDocumento
: boolean
* tipo
: int
- cancelarBoton
: javax.swing.JButton
- enviarTexto
: javax.swing.JButton
- jScrollPane1
: javax.swing.JScrollPane
- solicitudEditorPane : javax.swing.JEditorPane
- textoSolicitud
: javax.swing.JLabel
* usuario
: Usuario
* cliente
: ClienteNotificaciones
* folder
: IMAPFolder
* bandeja
: IconoBandejaWindows
* padreGeneral : MainFrame
* tiempoEspera : int
* messageCount : int
* estado
: int
verificacionNotificacion
LMRDocumento
+ <<Constructor>> LMRDocumento (java.awt.Frame parent,
boolean modal)
initComponents ()
: void
+
main (String args[])
: void
: void
+
+ <<Constructor>> ReferenciasDialog (java.awt.
Frame parent, boolean modal)
initComponents ()
: void
+
main (String args[])
: void
- aceptarBoton
: javax.swing.JButton
- paneDocs
: javax.swing.JScrollPane
- versionesAnteriores : org.jdesktop.swingx.JXTable
: void
: void
+ <<Constructor>> NotificacionDaemon (MainFrame padreGener
al, Usuario usuarioConectado,
int tiempoEspera,
IconoBandejaWindows bandeja,
int estado)
+ <<Constructor>> ProcesandoDialog (java.awt.Frame parent,
boolean modal)
+
getjLabel2 ()
: JLabel
+
setjLabel2 (JLabel jLabel2)
: void
initComponents ()
: void
+ <<Constructor>> NotaDescripcionDocumento (java.awt.
Frame parent, Component comp,
boolean modal,
DelegarCreacion dcreacion)
cliente
: void
: void
notificacionesEntrantes
notificador1
NotaDescripcionDocumento
* descripcion : String
* dcreacion
: DelegarCreacion
- agregarDes : org.jdesktop.swingx.JXButton
- editorDes
: org.jdesktop.swingx.JXEditorPane
- paneDes
: javax.swing.JScrollPane
+
: void
: void
NotificacionesFrame
+
llenarDatosDeUsuario ()
+ <<Constructor>> UsuariosDialog (java.awt.Frame parent,
boolean modal)
initComponents ()
apellidoActionPerformed (java.awt.event.
ActionEvent evt)
cargoActionPerformed (java.awt.event.
ActionEvent evt)
grupoCheckItemStateChanged (java.awt.
event.ItemEvent evt)
guardarBotonActionPerformed (java.awt.
event.ActionEvent evt)
passwordKeyPressed (java.awt.event.
KeyEvent evt)
cancelarBotonActionPerformed (java.awt.
event.ActionEvent evt)
repetirPasswordKeyTyped (java.awt.event.
KeyEvent evt)
passwordFocusGained (java.awt.event.
FocusEvent evt)
passwordMouseClicked (java.awt.event.
MouseEvent evt)
cuentasEmailActionPerformed (java.awt.
event.ActionEvent evt)
firmaActionPerformed (java.awt.event.
ActionEvent evt)
+
main (String args[])
cargarGrupos ()
guardarDatos ()
controlguardado ()
+ <<Constructor>> FiltroDeProyectoCliente (java.awt.
Frame parent, boolean modal)
initComponents ()
: void
+
main (String args[])
: void
+
: void
: void
: void
<<Unresolved Class>>
JFrame
(swing)
+ <<Constructor>> UsuariosDialog (java.awt.Frame parent,
boolean modal,
Usuario usuarioAmodificar,
boolean esMiCuenta)
FiltroDeProyectoCliente
bajaDoc
botonConfiguracion
creaU
botonNotificaciones
modU
jButton1
cuentasEmail
jButton1
revDoc
actualizarBoton
aceptarBoton
jButton6
guardarBoton
jButton1
verDoc
jButton2
jButton1
botonProcesos
cancelarBoton
perDoc
botonDocumentos
eliU
botonCambios
creaDoc
*
*
*
*
*
*
-
+ <<Constructor>> UsuariosDialog (java.awt.Frame parent,
boolean modal,
Usuario usuarioAmodificar)
gestionCambioDocumento
botonPorAprobar
actualizarTablaUsuarios
botonDelegarbotonLMD
actualizarTabla
guardarBoton
botonPorSubir
revocarPermiso
botonPorRevisar
actualizarPerfiles
usuarioGrupo
aceptarBoton
crearPerfil
asignarPermiso
pasarDer
cancelar
guardar
cancelarBoton
actualizarDocs
pasarIzq
jButton3
cancelar
: Set
+ <<Constructor>> ClienteNotificaciones (MainFrame padreGe
neral, Usuario clienteMail)
+
getSessionGeneral ()
+
getStoreGeneral ()
+
mensajeRecibido (Message message)
+
getMensaje (int i)
+
cargarTablaDeNotificacionesRecibidas (St
ore s
+
DocumentosLMDPanel
Grupo
(entity)
: DocumentoId
: void
: Usuario
: void
* cliente
: Usuario
* sesionGeneral
: javax.mail.Session
* storeGeneral
: Store
* ultimoMensajeRecibido : Message
* padreGeneral
: MainFrame
* mensajes
: Message[]
documentosLMDPanel1
grupoSeleccionado
grupo
- grupoId
: int
- grupoNombre : String
- usuarios
: Set
ProcesandoDialog
Proceso
Procesos
Documentos
Documento
boolean
javax.swing.JButton
javax.swing.JButton
javax.swing.JScrollPane
org.jdesktop.swingx.JXTitledSeparator
javax.swing.JButton
org.jdesktop.swingx.JXTreeTable
: void
=1
=2
=3
initComponents ()
: void
aceptarBotonActionPerformed (java.awt. : void
event.ActionEvent evt)
<<Unresolved Class>>
JDialog
(swing)
:
:
:
:
:
:
:
:
:
:
:
: void
: JButton
: void
: void
: void
: void
: void
documentosPorSubirPanel1
- barraProgreso
: javax.swing.JProgressBar
- procesandoTexto : javax.swing.JLabel
proceso
procesosAux
documentos
documento
isProceso
agregar
cacelar
paneRelacion
procesosRel
remover
tablaUsuarios
Usuario
MainFrame
Documentos
javax.swing.JButton
javax.swing.JMenuItem
org.jdesktop.swingx.JXStatusBar
javax.swing.JButton
javax.swing.JButton
javax.swing.JButton
javax.swing.JButton
javax.swing.JButton
javax.swing.JMenuItem
org.jdesktop.swingx.JXTitledPanel
org.jdesktop.swingx.JXTreeTable
javax.swing.JScrollPane
javax.swing.JLabel
com.integraitec.docbpm.visual.DocumentosLMDPanel
com.integraitec.docbpm.visual.DocumentosPorAprobarPanel
com.integraitec.docbpm.visual.DocumentosPorRevisarPanel
com.integraitec.docbpm.visual.DocumentosPorSubirPanel
javax.swing.JLabel
javax.swing.JButton
javax.swing.JTabbedPane
javax.swing.JPopupMenu
javax.swing.JMenuItem
javax.swing.JSplitPane
javax.swing.JScrollPane
javax.swing.JPanel
javax.swing.JSplitPane
javax.swing.JPanel
javax.swing.JMenuItem
javax.swing.JMenuItem
javax.swing.JMenuItem
javax.swing.JToolBar
+ <<Constructor>> DocumentosPorSubirPanel ()
+
getTablaSubir ()
: JXTable
+
setTablaSubir (JXTable jXTable1) : void
initComponents ()
: void
= new Grupos()
+ <<Constructor>> UsuariosGruposDialog (java.awt.
Frame parent, boolean modal,
boolean esCreacion, String docNombre,
String nota, Usuario solicitante,
int tipo)
+ <<Constructor>> UsuariosDelGrupoDialog (java.awt.
Frame parent, boolean modal,
Grupo grupo, short tipo)
documento
*
*
*
*
*
-
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
DocumentosPorSubirPanel
- busquedaSubir : org.jdesktop.swingx.JXSearchField
- paneSubir
: javax.swing.JScrollPane
- subirSeparador : org.jdesktop.swingx.JXTitledSeparator
- tablaSubir
: org.jdesktop.swingx.JXTable
UsuariosGruposDialog
getId ()
setId (DocumentoId id)
getUsuarioByUsuarioRevisorId ()
setUsuarioByUsuarioRevisorId (Usuario us
uarioByUsuarioRevisorId)
getUsuarioByUsuarioCreadorId ()
setUsuarioByUsuarioCreadorId (Usuario us
uarioByUsuarioCreadorId)
getUsuarioByUsuarioAprobadorId ()
setUsuarioByUsuarioAprobadorId (Usuario
usuarioByUsuarioAprobadorId)
getDocumentoNombre ()
setDocumentoNombre (String documentoNomb
re)
getDocumentoArchivo ()
setDocumentoArchivo (byte documentoArchi
vo[])
isDocumentoCreado ()
setDocumentoCreado (boolean documentoCre
ado)
isDocumentoRevisado ()
setDocumentoRevisado (boolean documentoR
evisado)
isDocumentoAprobado ()
setDocumentoAprobado (boolean documentoA
probado)
getDocumentoFechaCreado ()
setDocumentoFechaCreado (Date documentoF
echaCreado)
getDocumentoFechaRevisado ()
setDocumentoFechaRevisado (Date document
oFechaRevisado)
getDocumentoFechaAprobado ()
setDocumentoFechaAprobado (Date document
oFechaAprobado)
isDocumentoGrupoRevision ()
setDocumentoGrupoRevision (boolean docum
entoGrupoRevision)
getDocumentoGrupoAprobacion ()
setDocumentoGrupoAprobacion (Boolean doc
umentoGrupoAprobacion)
getDocumentoTipo ()
setDocumentoTipo (String documentoTipo)
getDocumentoPrioridad ()
setDocumentoPrioridad (short documentoPr
ioridad)
getDocumentoFechaEntrega ()
setDocumentoFechaEntrega (Date documento
FechaEntrega)
isDocumentoVersionable ()
setDocumentoVersionable (boolean documen
toVersionable)
getDocumentoVersionmaxima ()
setDocumentoVersionmaxima (int documento
Versionmaxima)
isDocumentoExterno ()
setDocumentoExterno (boolean documentoEx
terno)
getDocumentoDescripcion ()
setDocumentoDescripcion (String document
oDescripcion)
getDocumentosForFkDocumentoRelacionado (
)
setDocumentosForFkDocumentoRelacionado (
Set documentosForFkDocumentoRelacionado)
getPermisoUsuarioDocumentos ()
setPermisoUsuarioDocumentos (Set permiso
UsuarioDocumentos)
getProcesos ()
setProcesos (Set procesos)
getDocumentosForFkDocumentoRelacionado2
()
setDocumentosForFkDocumentoRelacionado2
(Set documentosForFkDocumentoRelacionado
2)
<<Unresolved Interface>>
Border
(border)
DocumentosPorAprobarPanel
+ <<Constructor>> DocumentosPorRevisarPanel ()
+
getTablaRevisados ()
: JXTable
+
setTablaRevisados (JXTable jXTable1) : void
initComponents ()
: void
usuarioConectado
parent
documentos
actualizarDocs
agregarPermisoDocumento
barraEstado
botonDelegar
botonLMD
botonPorAprobar
botonPorRevisar
botonPorSubir
detallesDocumento
docExplorador
docsAprobadosTabla
docsPane
docsPermitidos
documentosLMDPanel1
documentosPorAprobarPanel1
documentosPorRevisarPanel1
documentosPorSubirPanel1
estadoDocs
gestionCambioDocumento
lmd
menuDocs
nuevaVersionDocumento
paneDivisor
paneExpDocs
panelDatos
panelDivisor2
panelOpciones
relacionarProcesos
revocarPermisoDocumento
solicitarDocumento
toolBarAcciones
+ <<Constructor>> DocumentosInternalFrame (MainFrame paren
t, Usuario usuarioConectado)
validarOpciones ()
+
getActualizarDocs ()
+
cargarDocumentosLMD ()
+
cargarDocumentos ()
cerrarFrame ()
initComponents ()
botonDelegarActionPerformed (java.awt.
event.ActionEvent evt)
actualizarDocsActionPerformed (java.awt.
event.ActionEvent evt)
gestionCambioDocumentoActionPerformed (j
ava.awt.event.ActionEvent evt)
docsAprobadosTablaValueChanged (javax.
swing.event.TreeSelectionEvent evt)
docsAprobadosTablaFocusLost (java.awt.
event.FocusEvent evt)
nuevaVersionDocumentoActionPerformed (ja
va.awt.event.ActionEvent evt)
botonPorSubirActionPerformed (java.awt.
event.ActionEvent evt)
botonPorAprobarActionPerformed (java.
awt.event.ActionEvent evt)
botonPorRevisarActionPerformed (java.
awt.event.ActionEvent evt)
solicitarDocumentoActionPerformed (java.
awt.event.ActionEvent evt)
revocarPermisoDocumentoActionPerformed (
java.awt.event.ActionEvent evt)
agregarPermisoDocumentoActionPerformed (
java.awt.event.ActionEvent evt)
detallesDocumentoActionPerformed (java.
awt.event.ActionEvent evt)
relacionarProcesosActionPerformed (java.
awt.event.ActionEvent evt)
lmdStateChanged (javax.swing.event.
ChangeEvent evt)
botonLMDActionPerformed (java.awt.event.
ActionEvent evt)
DocumentosPorRevisarPanel
- busquedaRevisados : org.jdesktop.swingx.JXSearchField
- paneRevisados
: javax.swing.JScrollPane
- revisadosSeparador : org.jdesktop.swingx.JXTitledSeparator
- tablaRevisados
: org.jdesktop.swingx.JXTable
+ <<Constructor>> Documento (DocumentoId id,
Usuario usuarioByUsuarioRevisorId,
Usuario usuarioByUsuarioCreadorId,
Usuario usuarioByUsuarioAprobadorId,
String documentoNombre,
byte documentoArchivo[],
boolean documentoCreado,
boolean documentoRevisado,
boolean documentoAprobado,
Date documentoFechaCreado,
Date documentoFechaRevisado,
Date documentoFechaAprobado,
boolean documentoGrupoRevision,
Boolean documentoGrupoAprobacion,
String documentoTipo,
short documentoPrioridad,
Date documentoFechaEntrega,
boolean documentoVersionable,
int documentoVersionmaxima,
boolean documentoExterno,
String documentoDescripcion,
Set documentosForFkDocumentoRelacionado
, Set permisoUsuarioDocumentos,
Set procesos,
Set documentosForFkDocumentoRelacionado
2)
UsuariosFrame
*
*
*
*
*
-
: void
notificaciones
+ <<Constructor>> Documento ()
+ <<Constructor>> Documento (DocumentoId id,
String documentoNombre,
boolean documentoCreado,
boolean documentoRevisado,
boolean documentoAprobado,
boolean documentoGrupoRevision,
String documentoTipo,
short documentoPrioridad,
Date documentoFechaEntrega,
boolean documentoVersionable,
int documentoVersionmaxima,
boolean documentoExterno)
: void
: void
=1
=2
initComponents ()
: void
pasarIzqActionPerformed (java.awt.event. : void
ActionEvent evt)
pasarDerActionPerformed (java.awt.event. : void
ActionEvent evt)
cancelarBotonActionPerformed (java.awt. : void
event.ActionEvent evt)
guardarBotonActionPerformed (java.awt. : void
event.ActionEvent evt)
+
+
Documento
(entity)
: DefaultTableModel
+ <<Constructor>> OpcionesDePerfil (java.awt.Frame parent,
boolean modal, Perfil perfil,
short tipo)
-
+
: Documento
: int
: int
: int
: DefaultTableModel
documentos
-
+
documento
AccionDocumentoRevisar
AccionDocumentoAprobar
AccionDocumentoSubir
-
+
= new Documentos()
= false
=1
=2
: void
: void
: void
: void
OpcionesDePerfil
* perfiles
: Perfiles
* perfil
: Perfil
+ CONSULTA
: short
+ ADMINISTRACION : short
- cancelarBoton
: javax.swing.JButton
- guardarBoton
: javax.swing.JButton
- jButton3
: javax.swing.JButton
- listaOpciones1
: javax.swing.JList
- listaOpciones2
: javax.swing.JList
- opcionesDispPane : javax.swing.JScrollPane
- opcionesSelPane : javax.swing.JScrollPane
- pasarDer
: javax.swing.JButton
- pasarIzq
: javax.swing.JButton
= new Usuarios()
= new Grupos()
+ <<Constructor>> PermisosUsuariosDocumento (java.awt.
Frame parent, boolean modal,
Documento documento)
+ <<Constructor>> PermisosUsuariosDocumento (java.awt.
Frame parent, boolean modal,
Documento documento, int tipoPermiso)
initComponents ()
: void
seleccionGruposItemStateChanged (java. : void
awt.event.ItemEvent evt)
asignarPermisoActionPerformed (java.awt. : void
event.ActionEvent evt)
revocarPermisoActionPerformed (java.awt. : void
event.ActionEvent evt)
cancelarActionPerformed (java.awt.event. : void
ActionEvent evt)
Documentos
(business)
* usuarioConectado : Usuario
* documentosLista : List<Documento>
* modelo
: DocumentosTreeTableModel
- nodos
: LinkedList<DocumentoTreeTableNode>
* sesionAbierta
: Session
* sesionAux
: Session
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
: void
notificarSolicitudCambioPerfilDocumento
()
notificarSolicitudCambioPermisoUsuario (
)
notificarCreacion (Usuario solicitante,
Usuario notificado, String documento,
String nota, String fecha)
notificarRevision (Usuario solicitante,
Usuario notificado, String documento,
String nota, String fecha)
notificarAprobacion (Usuario solicitante
, Usuario notificado, String documento,
String nota, String fecha)
notificarDocumentoListo ()
enviarEmail (Usuario emisor,
List usuariosAnotificar,
String subject, String mensaje)
utilidadesGrupos
grupos
usuarios
grupos
documento
documentos
selgrupo
REVOCAR_PERMISOS
ASIGNAR_PERMISOS
asignarPermiso
cancelar
gruposPermiso
gruposScroll
revocarPermiso
seleccionGrupos
usuariosPermiso
usuariosPermitidosSeparator
usuariosScroll
= new Cuentas()
+ <<Constructor>> Notificaciones ()
+ <<Constructor>> Notificaciones (Documento documento)
+
notificarSolicitudCambioDocumento (Usuar : void
io solicitante, Usuario notificado,
Documento documento, String nota,
int tipo)
utilidadGrupos
PermisosUsuariosDocumento
*
*
*
*
*
+
+
-
*
*
*
-
Notificaciones
(business)
Grupos
(business)
* sesionAbierta : Session
+ getGrupoById (int grupoId)
: Grupo
+ getGruposList ()
: DefaultListModel<String>
+ getUsuariosGrupo (Grupo grupo)
: DefaultListModel<String>
+ getGruposEnSistema ()
: DefaultTableModel
+ guardarGrupo (Grupo grupoAcrear) : void
+ crearSesion ()
: void
+ abrirSesion ()
: void
+ cerrarSesion ()
: void
+ setUsuariosGrupo (Grupo grupo,
: void
HashSet<Usuario> usuariosGrupo)
String
void
Usuario
void
String
void
String
void
String
void
boolean
void
boolean
void
String
void
: boolean
: void
: String
: void
: String
: void
: boolean
: void
: Date
: void
: Date
: void
Figura 19 Diagrama visual
Diagrama del paquete
Descripción COM INTEGRAITEC DOCBPM VISUAL
18/10/2012
Fecha
Autor/Fuente Gustavo Justicia Lucia Del Pino
Titulo
5 4 Desarrollo de prototipo
86
: int
: void
: Perfil
: void
: Grupo
: void
: String
: void
: String
: void
: String
: void
: String
: void
: String
: void
: Date
: void
: Date
: void
: boolean
: void
: boolean
: void
: byte[]
: void
: String
: void
: Set
: void
: Set
: void
: Set
: void
: Set
: void
: Set
: void
El objetivo del prototipo es visualizar la habilidad del consultor en la utilización de la
herramienta de control de documentos, que permita:
-
Establecer la relación de cliente – programa
-
Definir componentes básicos, tales como administración de usuarios, actividades,
permisos y procesos.
-
Autentificación de usuarios
Los gráficos que se presentan a continuación son extraídos directamente del sistema.
El sistema será instalado con la clave de administrador por default, la cual podrá ser cambiada por
el encargado del sistema, que deberá crear los respectivos usuarios del sistema. Para conectar al
programa se deberá ingresar Nombre y contraseña antes ya asignadas por el encargado del sistema
posterior a este proceso los usuarios podrán actualizar sus contraseñas para un nuevo ingreso.
-
Mensaje de bienvenida
El mensaje de bienvenido corresponde al
nombre del usuario el cual esta validado al
ingreso, en este espacio de la pantalla, también
procederá a
salir las notificaciones
de los
documentos pendientes por el respectivo
usuario.
87
-Pantalla principal de inicio
La pantalla de inicio muestra los siguientes componentes:
Principal: En el link de principal tendrá la opción de cerrar sesión y bloquear
terminal.
Escritorio: Para un mejor ambiente habrá la posibilidad de cambiar el fondo de pantalla
del programa como presenta a continuación.
88
Mi Cuenta: El usuario tendrá la opción de poder cambiar la información básica, y el
mail, mas no la información del cargo de empresa, grupo al cual pertenece, la primera
vez que ingrese deberá actualizar el mail con la contraseña del mismo para poder enviar
mails de notificaciones a los diferentes usuarios del sistema.
Datos generales:
-
User Name: Nombre de usuario completo.
-
Pasword: Este campo nos sirve para cambiar la contraseña en caso sea necesario
-
Repetir Pasword: Ingresamos la contraseña nueva a la cual se aplicará en los nuevos
ingresos
-
Firma: La firma de la persona consiste entre 3 y 4 letras las cuales serán únicas para
cada empleado.
89
-
Datos Personales
-
Nombre: Nombre o nombres de empleado
-
Apellido: Apellido o apellidos del empleado
-
Cargo: Cargo el cual consta en el contrato de cada empleado.
-
Estado: Estado actual de cada empleado
-
Perfil: Perfil de usuario
-
Grupo de usuario: Áreas de personal
Accesos directos de los siguientes componentes
-
Notificaciones
-
Procesos de Negocio
-
Documentos y control
-
Gestión de cambios
-
Usuarios y perfiles
Notificaciones
90
Al dar click en el botón de Notificaciones se despliega la pantalla de notificaciones la
cual nos presenta la siguiente información:
-
Estado: En el estado
-
Enviado por: La persona la cual envió el requerimiento
-
Notificaciones: Titulo del requerimiento
-
Fecha de Envío: Fecha en la cual se envió el requerimiento
-
Posteriormente en el cuadro blanco se presentara el detalle completo del requerimiento
el cual ha sido enviado para el usuario.
Procesos de negocio- DocBPM
En los procesos del negocio se procedera a ingresar todos los procedimientos los cuales son
utilizados en LOGICA y sus respectivos sub procedimientos
Detalles principales de proceso:
91
-
Proceso: Nombre del procedimiento o identificador del procedimiento
-
Nivel: nivel de procedimiento, indica si es sub procedimiento o procedimiento principal
-
Documentos: en la parte de documentos presenta el nombre de todos los documentos
los cuales están relacionados al proceso ingresado.
-
Procesos relacionados: Mientras el padre del procedimiento en caso de tener, si no se
presenta en blanco tal como en la figura
Subir el documento del proceso.
La opción de subir el diagrama de flujo del proceso el cual se realiza en lógica o incluir los
pasos del proceso, en caso de ser dos documentos, se los comprime en un archivo .zip o .rar
y se sube en la parte de diagrama
Al subir el proceso en el sistema se guarda automáticamente en la base de datos con la
respectiva información.
-
Documentos y control
92
Al dar click en Documentos y control tenemos la barra de accesos directos en la parte de
arriba la cual consiste en los siguientes ítems:
LMD: Lista maestra de documentos.
La pantalla de la lista maestra de documento nos muestra la siguiente información la cual es
indispensable en el momento de control de documentos:
-
ID: Identificación del documento la cual se llena automáticamente al subir el
documento
-
Documento: Nombre del documento.
-
Creador: Nombre del creador del documento ( el programa toma automáticamente el
nombre del usuario el cual ha realizado el documento y lo ha subido en la LMD)
-
Fecha de creación: Es el día en el cual el usuario subió el documento para ser revisado
por el encargado de revisar el documento.
-
Revisor: Nombre de la persona la cual reviso el documento,
93
-
Fecha revisado: Fecha la cual el documento ha sido revisado por el encargado.
-
Aprobador: Nombre de la persona la cual aprobó el documento.
-
Fecha de aprobación: fecha de a aprobación del documento
-
Fecha de entrega: Fecha tentativa de entrega del documento, la cual fue ingresada al
mandar a crear el documento.
-
Versión/revisión: Versión del documento
-
Versión Máxima: Numero de versiones que puede tener el documento.
-
Tipo: Tipo de documento (externo o interno).
-
Proceso: Proceso al cual está relacionado el documento.
Documentos por subir
El usuario tendrá la pestaña de Documentos por subir la cual informa al usuario los
documentos pendientes, el sistema presenta la siguiente información del documento:
-
ID: Identificación del usuario la cual se crea automáticamente al momento de mandar a
crear el documento.
94
-
Documento: Nombre del documento asignado por el usuario que mandó a crear el
documento.
-
Fecha de entrega: fecha de entrega.
-
Versión/Revisión: Número de versión del documento
-
Tipo: Tipo de documento
-
Proceso: Nombre del proceso al cual está ligado el documento
Documentos por revisar:
Los usuarios del sistema los cuales tendrán documentos pendientes por revisar tienen la
opción de ver en la pestaña de documentos por revisar la lista de documentos, luego de
revisar completamente el documento el usuario tiene la opción de marcar como revisado, al
instante que el revisor ha marcado revisado el documento pasa automáticamente a la lista de
documentos por aprobar.
Información básica de documentos por revisar:
-
ID: Identificador del documento
-
Preparador: Nombre de la persona que realizo el documento
95
-
Documento: Nombre del documento
-
Fecha de entrega: Fecha Tentativa de entrega
-
Versión/ revisión: Numero de versión
-
Tipo: Tipo de documento
-
Proceso: Nombre del proceso al cual esta ligado
-
… : Estado del documento( se podrá marcar revisado )
Documentos por aprobar
Los documentos por aprobar podrán ser monitoreados puesto que se despliega la lista de
todos los documentos los cuales han pasado por la revisión y listo para su aprobación en
caso que haya algún cambio tendrán que ingresar por medio de gestión de cambios, de otro
modo se procederá a la aprobación del mismo.
Datos básicos de documentos por aprobar
-
ID: Identificación del documento
-
Preparador: Nombre del usuario que elaboro el documento.
96
-
Revisor: Nombre del revisto:
-
Documento: Nombre del documento.
-
Fecha de entrega: Fecha de entrega tentativa
-
Versión/ Revisión: Numero de versión del documento
-
Tipo: Tipo de documento
-
Proceso: Nombre del proceso al cual está ligado el documento
-
… : Marcar aprobado el documento
Delegar Creación
La delegación de creación de documentos comprende de una pantalla la cual nos pide la
siguiente información
-
Usuario seleccionado para la creación: En la lista
de usuarios se selecciona
encargado de realizar la creación del documento al dar click en el botón
-
el
.
Usuario seleccionado para la revisar: Seleccionamos el usuario el cual se ha designado
para revisar el documento
97
-
Usuario seleccionado para aprobar: Seleccionamos de la lista de usuarios el que vaya
aprobar dicho documento, en caso de ser la misma persona que revisa se procede a dar
click en el botón de copiar revisor.
-
Nombre de documento : Nombre del documento con el cual se le identificara en la lista
maestra de documento
-
Documento es versionable: Marcamos la casilla si el documento podrá tener varias
versiones en caso contrario será único.
-
Fecha de entrega: Fecha tentativa de entrega del documento.
-
Agregar descripción al documento: mediante este botón tenemos la opción de agregar
indicaciones detalles, notas observaciones del documento.
Al finalizar de ingresar los datos del documento el cual será realizado automáticamente manda las
notificaciones a los usuarios involucrados mientras se realiza todo el proceso tenemos la pantalla de
espera la cual se muestra a continuación
Gestión de cambios- DocBPM
La gestión de cambios consta de dos grupos los cuales son:
-
Solicitud de usuarios
-
Solicitud de documentos
98
Para la solicitud de usuarios tenemos:

Creación de usuarios

Modificación de usuarios

Eliminación de usuarios
Las administraciones se manejan de la siguiente forma
Entrada: Escribimos el nombre de la persona que desea solicitar la creación/ cambio/
eliminación
99
Solicitud: La solicitud se ingresa textualmente en la pantalla que aparecerá a
continuación.
Usuarios: Se seleccionara los usuarios los cuales necesitan saber de los cambios /
modificación / eliminación que ser realizara.
Usuarios y credenciales DocBPM
100
En los usuarios y credenciales tenemos la clasificación de las personas ingresadas en
el sistema por lo que se determina en tres grupos los cuales son
-
Usuarios.
-
Grupos
-
Perfiles
El prototipo del programa consta con los botones básicos en toda su aplicación los
cuales son
-
Aceptar
-
Actualizar
-
Cancelar
-
Borrar
5.1.1. Riesgos
El riesgo afecta a los futuros acontecimientos del desarrollo o implementación del
programa. Por lo que el análisis de riesgo es importante ya que nos hacemos
preguntas básicas tales como que riesgos podrían hacer que nuestro proyecto
fracasara, como afectaran los cambios en los requisitos del cliente, con el profundo
análisis de estas dos preguntas creamos la tabla de riesgos la cual especificara la
solución para que el proyecto esté parcialmente sin errores.
En la siguiente tabla especificamos los posibles riesgos y el control asociado, del
programa de control de documento los cuales hemos podido ver en el transcurso del
análisis.
101
No
1
2
Caso
Riesgos
Configurar el programa en red a
todos los miembros de la
empresa LOGICA
Suplantación de identidad
(spoofing)
Denegación de servicio
Puntos de acceso Wlan mal
intencionados
Se limite a la disponibilidad
de la información
No existe una política de respaldo
de información la cual sea
administrada por el encargado del
sistema
Comprometer la integridad
de la información
Impacto
Tipo de
impacto
Causas
4
Falta de conocimiento por parte
del usuario del sistema.
Reingeniería de los procesos
Retraso en los proyectos
Levantamiento de "no
conformidades"
Déficit en la gestión de
calidad
Dificultad de la gestión de
proyectos
Colapso en la empresa
5
Información a terceros de la
clave de la base de datos
Motor de base de datos
Titulo
Descripción
Fecha
Autor/Fuente
Probabilidad
ocurrencia
Con estos riesgos
puede haber
demoras en la
Media
implementación del
programa de control
de documentos
Falta de
comunicación con
la persona
encargada del
sistema LAN, falta
de coordinación
Coordinación de
fechas para
implementación,
Bajo
capacitación y
creación de
usuarios
Falta de confianza
por parte de los
clientes al no
encontrar
información
respaldada
Alto
Falta de
comunicación con
el encargado del
sistema
Proponer una
politica de
respaldo la cual
podría ser
ejecutada una
vez por mes
Medio
Falta de
capacitación a todo
el personal de la
empresa
Asegurar que la
capacitación esté
completamente
Medio
clara para todos
los usuarios del
sistema
Bajo
Reuniones para
Mal levantamiento
la coordinación
de los
del
requerimientos del
levantamiento
sistema
del sistema
Alto
Falta de seriedad
por parte del
encargado de
sistemas
Mala manipulación de alertas
3
Control
asociado
Retraso en la
obtención de la
certificación
9001:2008
Retraso en la
entrega del
producto, falta de
conocimiento de la
reingeniería
Manipulación
manual la base de
datos
Medio
Medio
Carta de
confidencialidad
Medio
del encargado
del sistema
Tabla 1.2 Riesgos
Tabla de análisis de riesgos.
18/10/2012
Gustavo Justicia, Lucia Del Pino
5.2. Fase de construcción
5.2.1. Implementación
Para la implementación se optó por mantener una solución de método paralelo.
El Método Paralelo permite que los sistemas de información antiguo y nuevo
operen juntos hasta que el nuevo demuestra ser confiable y, lo que conlleva a ser un
método de bajo riesgo. En el caso de una falla en el nuevo sistema, la compañía
puede seguir haciendo uso del sistema anterior hasta corregir las fallas del nuevo
sistema. Aunque, por otra parte este método puede significar ser de un costo mayor
de mantenimiento para la compañía debido a la coexistencia de ambos sistemas, sin
102
embargo, para la empresa LOGICA, esto no conlleva a un riesgo que impacte en la
economía general de la compañía ya que el enfoque y alcance de la aplicación no es
de alta complejidad, asimismo como el mantenimiento actual de la manera en la que
se lleva el control de documentos en la empresa.
La implementación de un nuevo sistema de control de documentos en la empresa
LOGICA es una situación la cual debe ser discutida de manera detallada con los
participantes, dueños y responsables del proceso de control de documentos, debido
a que no sabemos el impacto que pueda tener el nuevo sistema en los integrantes de
la empresa, hay que tomar en cuenta que no todas las personas se adaptan
fácilmente al cambio. Debido a esto se mantuvieron reuniones entre la alta
dirección de la empresa para determinar el mejor camino para la implementación
general del sistema.
La capacitación personal fue discutida con la compañía, llegando a determinar los
participantes así como su grado de participación en las actividades, dando a lugar la
delegación de un encargado del sistema, en este caso será el administrador de
calidad, comenzando desde los conceptos más básicos del programa. Luego se
capacitará directamente a los integrantes de la empresa explicando detalladamente,
la navegación por el mismo, por sus menús, funciones, características.
5.2.2. Pruebas
Los tipos de pruebas realizadas fueron, black-box (caja negra) puesto que este tipo
de pruebas se acoplan perfectamente para la metodología de desarrollo de software
utilizada.
103
Al desarrollar pruebas de caja negra, se logra definir pruebas de alto nivel sin entrar
en temas técnicos complejos los cuales podrían llevar mucho tiempo en ser
entendidos por los usuarios finales del sistema.
5.2.2.1. Nivel de Pruebas
Después de analizar la situación actual de LOGICA optamos por pruebas de
integración puesto que con ellas podríamos dar un seguimiento continuo de los pasos.
Las pruebas de integración tienen por objetivo verificar funcionamiento en conjunto
de dos o más módulos, se deben poner en práctica desde la creación de dos módulos
que interactúen entre sí, en el supuesto caso que se necesiten más de dos módulos para
efectuar las pruebas, deberán generarse simples emuladores de módulos que entreguen
datos esperados para la prueba individual de cada uno.
Las pruebas de integración pueden ser realizadas en forma ascendente, esto evita tener
que crear módulos emuladores, ya que a medida que se va creando la pirámide va
siendo probada de abajo hacia arriba (Es decir, prueba un conjunto amplio de
componentes del sistema, para posteriormente al realizar las pruebas en un nivel
superior se cubra lo realizado como parte de una prueba anterior), esto acarrea un
trabajo simétricamente mayor lo que equipara o supera el tiempo que podría tomar el
crear módulos para prueba.
Luego de las pruebas de integración realizadas en LOGICA con la colaboración de la
Gerente General se ha logrado corregir los errores los cuales se han encontrado al
transcurso de las pruebas teniendo como un resultado la funcionalidad correcta del
programa, actualmente se continúa con algunas pruebas de los módulos, obteniendo
resultados exitosos sin generarse ningún tipo de error
Las pruebas realizadas se encuentran documentadas como parte del Anexo.
104
5.2.3. Fase de transición
5.2.3.1. Seguridades
La seguridad del sistema se ha implementado mediante la creación del rol
administrador de seguridad, definido en la fase del análisis de requerimientos. En el
caso específico de la empresa LOGICA, el Administrador de Calidad es el
responsable de asumir este rol, de esta manera, acabado el desarrollo de la aplicación
se logra mantener un alto nivel de integridad y confiabilidad de los datos, ya que la
manipulación de ellos se ve limitada por terceras personas, reduciendo la suplantación
de identidad o creación o bloqueos de usuarios no autorizados.
Al mantener diferentes tipos de roles y perfiles dentro de la aplicación logramos
reforzar la seguridad de la información debido a que existe una debida segregación de
funciones entre el personal de la compañía y que hace uso de el sistema desarrollado.
Como parte adicional a la seguridad se pensó en la implementación de Single-Sign On
para los usuarios de este sistema es decir, el usuario es capaz de ingresar directamente
al sistema el cual validará su sesión de Windows y le permitirá ingresar de manera
automática con las credenciales pertenecientes a ese usuario. Cabe mencionar que, a
pesar de ser una opción beneficiosa al momento de realizar el ingreso al sistema por
parte del usuario, es de responsabilidad de los encargados de la seguridad de la
información de la compañía mantener políticas y procedimientos que permitan mitigar
riesgos relacionados al mal uso de contraseñas o, estaciones de trabajo.
5.2.3.2. Despliegue
Para el despliegue de la aplicación se utilizó el servidor instalado en la empresa
LOGICA, HP, se realizó la debida instalación y generación de la instancia del motor
105
de base de datos MySQL 5.3 para soportar la base de datos de la aplicación. Los
archivos compilados correspondientes al sistema se encuentran debidamente
instalados en una carpeta del servidor a la cual tienen acceso de lectura únicamente
los usuarios identificados por parte del administrador de seguridad, en el caso de
LOGICA el administrador de la calidad es el encargado de definir los usuarios que
tendrán acceso al sistema y, a la carpeta del servidor en cuestión.
5.2.3.3. Mantenimiento
El sistema al ser un desarrollo multicapa, permite la fácil integración y modificación
de módulos de acuerdo a lo que necesite la compañía, cualquier modificación en el
modelo de base de datos podrá ser fácilmente reflejada y mapeada a un modelo
orientado a objetos con la manipulación del archivo de configuración de Hibernate
con el cual se podrá generar de manera muy simple el POJO que corresponda a la
entidad de base de datos. Es importante mencionar que se deberá mantener una
política de respaldos para evitar cualquier pérdida de integridad o disponibilidad de la
información. Esta tarea deberá ser de responsabilidad de la empresa LOGICA.
106
CAPÍTULO VI
CONCLUSIONES Y RECOMENDACIONES
6.1. Conclusiones
1.
La norma ISO 9001:2008 exige que los documentos sean aprobados, revisados y
actualizados a fin de mantener control sobre los mismos, sin embargo no especifica si
el control debe hacerse de forma manual o mediante una herramienta tecnológica.
2.
La empresa debe identificar los cambios, el estado de versión vigente y asegurarse
de que las versiones pertinentes se encuentren disponibles, a fin de que los usuarios al
momento de realizar sus funciones tengan las herramientas adecuadas y oportunas.
3.
Una vez evaluado la situación de la empresa se ha concluido que existe un control
débil de la documentación, con la utilización de la herramienta propuesta se cumplirá
con todas las exigencias de la norma ISO 9001:2008.
4.
La determinación y diagramación del proceso de control de documentos permitió
obtener un entendimiento más claro de las funcionalidades que se requerirían para el
desarrollo del sistema, el cual permitió la automatización del proceso de control de
documentos.
5.
La metodología RAD permitió desarrollar la aplicación en conjunto con el usuario
final, obteniendo resultados funcionales de un grado de satisfacción mayor que el que
se hubiera obtenido al realizar el uso de una metodología en la cual el usuario no se
encuentre involucrado activamente en el desarrollo de la funcionalidad del sistema
final.
6.
Para el desarrollo de la aplicación de control de documentos se ha alineado a lo que
dice estrictamente la norma y que incluye la segregación de funciones entre el
personal de la empresa que realiza, revisa, aprueba los documentos. Así como
107
también el personal el cual se encuentra permitido visualizar los documentos y el
correcto resguardo de su repositorio de datos.
7.
Con el programa de control de documentos hemos optimizado el tiempo de control de
documentos en un setenta por ciento.
8.
El desarrollo de la aplicación fue exitoso puesto que fue de fácil integración con la
empresa LOGICA, debido a que el enfoque de realización del proyecto estaba
orientado a una pequeña empresa la cual necesite una solución ágil y adicionalmente,
debido a que el personal clave de la empresa participó activamente en el desarrollo de
las funcionalidades del sistema.
9.
Los diagramas de clases ayudaron a un desarrollo de la aplicación mucho más
ordenado y rápido permitiéndonos visualizar la extensión total y la cantidad de
recursos necesarios para la realización y finalización del proyecto en cuanto a
cantidad de codificación a realizar y relaciones entre las diferentes clases del sistema
para una óptima re-utilización de recursos, propósito fundamental en el desarrollo
bajo una metodología RAD.
10. Se ha fortalecido el desarrollar software basándose en una norma internacional,
además de tener contacto continuo con nuestro cliente.
6.2. Recomendaciones
1.
Se deben establecer responsables para la elaboración, revisión, y aprobación de los
documentos conforme a los requerimientos de la norma ISO 9001:2008 y asignar su
rol respectivo.
2.
Mantener como política de la empresa la utilización de la herramienta a fin de que los
documentos sigan un flujo adecuado y de esta manera cumplir con el requerimiento
de la norma ISO 9001:2008.
108
3.
El mantenimiento de la aplicación es un punto esencial por lo que debe haber un
encargado el cual monitoree el almacenamiento en la base de datos. Así como
también el respaldo oportuno de los datos en caso de que exista algún inconveniente
que ponga en riesgo la integridad de la información almacenada.
4.
Si bien el tener una aplicación que permita el control de documentos, no se debe
perder la comunicación entre los miembros del equipo de trabajo
5.
Utilizar el programa continuamente en la actualización de la base para que los
usuarios del sistema se familiaricen de una manera fácil.
6.
Gestionar un mayor número de perfiles que puedan permitir entregar una mayor
flexibilidad al momento de asignar funciones al personal de la compañía y que vayan
a formar parte de los usuarios finales de la aplicación.
7.
La utilización de una metodología RAD debe ser cuidadosamente analizada, ya que
esta metodología si bien es cierto, permite un desarrollo acelerado de aplicaciones;
existen inconvenientes cuando la aplicación necesita de una personalización mucho
más detallada y, que requiera de una mayor complejidad al momento de evaluar la
calidad final de las funcionalidades determinadas al momento de realizar el análisis
de requerimientos
8.
Subir todos los documentos de la empresa con todo el detalle del mismo.
9.
La utilización de las herramientas debe ser analizada en cuanto a presupuesto
disponible de la empresa para la inversión de estos recursos, al igual que las
necesidades reales y proyectadas que pueda beneficiar a la empresa sin reducir la
calidad ni desempeño de la aplicación en un ambiente de producción.
10. Realizar actualizaciones de la herramienta diseñada, en la medida en que la Norma
ISO9001 2008 sea actualizada.
7.
Bibliografía
109
7.1. Libros
-
Spring Persistence with Hibernate (Beginning)
Paul Tepper Fisher (Author), Brian D. Murphy (Author)
-
NetBeans IDE 7 Cookbook
Rhawi Dantas (Author)
-
High Performance MySQL: Optimization, Backups, and Replication by Baron
Schwartz,
Peter Zaitsev and Vadim Tkachenko (Mar 30, 2012)
7.2. Internet
-
http://es.wikipedia.org/wiki/Metodolog%C3%ADa_de_desarrollo_de_software
-
http://ocw.uoc.edu/computer-science-technology-and-multimedia/bases-de-datos/basesde-datos/P06_M2109_02151.pdf
-
http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=hibernate
-
http://www.logica.com.ec/
-
http://www.logica.com.ec/mapa-del-sitio-4.html
-
http://www.logica.com.ec/acerca-de-logica.html
-
semiconductores-posgrado.mx/Calidad/NORMA_ISO_9001_2008.pdf
-
www.mx.sgs.com/es_mx/iso_9001_2008-2?serviceId=10954
-
http://www.utpl.edu.ec/iso9001/images/stories/PROCEDIMIENTO_CONTROL_DOC
UMENTOS.pdf
-
gestion-y-calidad.blogspot.com/2009/02/iso-90012008.html
-
http://docs.kde.org/stable/es/kdesdk/umbrello/uml-elements.html
110
111