UNIVERSIDAD DE GUAYAQUIL FACULTAD DE CIENCIAS MATEMATICAS Y FISICAS CARRERA DE INGENIERÍA EN SISTEMAS COMPUTACIONALES “DESARROLLO DEL MÓDULO DE INGRESO DE SOLICITUDES Y CERTIFICADOS PARA EL PROTOTIPO DEL SISTEMA ACADEMICO DE LAS FACULTADES DE CIENCIAS ADMINISTRATIVAS Y DE CIENCIAS MATEMATICAS Y FISICAS DE LA UNIVERSIDAD DE GUAYAQUIL” TESIS DE GRADO Previa a la obtención del Título de: INGENIERO EN SISTEMAS COMPUTACIONALES MARLON ISRAEL CARANGUI HERRERA TUTOR: ING. LEILI GENOVEVA LOPEZDOMINGUEZ RIVAS GUAYAQUIL – ECUADOR 2015 REPOSITORIO NACIONAL EN CIENCIAS Y TECNOLOGÍA FICHA DE REGISTRO DE TESIS TÍTULO: “DESARROLLO DEL MÓDULO DE INGRESO DE SOLICITUDES Y CERTIFICADOS PARA EL PROTOTIPO DEL SISTEMA ACADEMICO DE LAS FACULTADES DE CIENCIAS ADMINISTRATIVAS Y DE CIENCIAS MATEMATICAS Y FISICAS DE LA UNIVERSIDAD DE GUAYAQUIL” REVISORES: FACULTAD: Ciencias Matemáticas y Físicas INSTITUCIÓN: Universidad de Guayaquil CARRERA: Ingeniería en Sistemas Computacionales FECHA DE PUBLICACIÓN: Julio N° DE PÁGS.: 191 del 2015 ÁREA TEMÁTICA: Instituciones Académicas PALABRAS CLAVES: Ingreso, Solicitudes, Certificados, Estudiante RESUMEN: Se propone un módulo dinámico, con un workflow modificable, el cual será configurable de acuerdo a las decisiones tomadas por las autoridades encargadas, evitando así un sistema que quede obsoleto en años siguientes, y que evite realizar modificaciones en su desarrollo para cumplir con futuras decisiones. N° DE REGISTRO(en base de datos): DIRECCIÓN URL (tesis en la web): ADJUNTO PDF CONTACTO CON AUTOR: CONTACTO DE LA INSTITUCIÓN N° DE CLASIFICACIÓN: Nº X SI Teléfono: E-mail: 0996739711 [email protected] 042241380 Nombre: Ab. Juan Chávez Telefono: 2307729 NO APROBACION DEL TUTOR En mi calidad de Tutor del trabajo de investigación, “DESARROLLO DEL MÓDULO DE INGRESO DE SOLICITUDES Y CERTIFICADOS PARA EL PROTOTIPO DEL SISTEMA ACADEMICO DE LAS FACULTADES DE CIENCIAS ADMINISTRATIVAS Y DE CIENCIAS MATEMATICAS Y FISICAS DE LA UNIVERSIDAD DE GUAYAQUIL” ISRAEL CARANGUI HERERA, egresado elaborado por el Sr. MARLON de la Carrera de Ingeniería en Sistemas Computacionales, Facultad de Ciencias Matemáticas y Físicas de la Universidad de Guayaquil, previo a la obtención del Título de Ingeniero en Sistemas, me permito declarar que luego de haber orientado, estudiado y revisado, la Apruebo en todas sus partes. Atentamente Ing. Leili Lopezdominguez Mgs. TUTOR II DEDICATORIA La elaboración de este documento es gracias al esfuerzo, sacrificio y dedicación, el cual lo dedico a toda mi familia y a mi querida esposa por todo el apoyo brindado durante todo este tiempo de estudio y desarrollo. III AGRADECIMIENTO Agradezco en primer lugar a Dios por darme vida, salud y amor para con mi familia, que me permite cumplir esta meta, a mis padres que me apoyaron en cada momento de mi vida universitaria, que sin ellos no lo habría logrado, y finalmente agradezco a mi amada esposa, que estuvo siempre a mi lado dándome su apoyo y amor incondicional. IV TRIBUNAL DE GRADO V DECLARACIÓN EXPRESA “La responsabilidad del contenido de esta Tesis de Grado, le corresponden exclusivamente; y el patrimonio intelectual de la misma a la UNIVERSIDAD DE GUAYAQUIL” MARLON ISRAEL CARANGUI HERERA VI . UNIVERSIDAD DE GUAYAQUIL FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE INGENIERIA EN SISTEMAS COMPUTACIONALES “DESARROLLO DEL MÓDULO DE INGRESO DE SOLICITUDES Y CERTIFICADOS PARA EL PROTOTIPO DEL SISTEMA ACADEMICO DE LAS FACULTADES DE CIENCIAS ADMINISTRATIVAS Y DE CIENCIAS MATEMATICAS Y FISICAS DE LA UNIVERSIDAD DE GUAYAQUIL” Tesis de Grado que se presenta como requisito para optar por el título de INGENIERO EN SISTEMAS COMPUTACIONALES Auto/a: MARLON ISRAEL CARANGUI HERERA C.I. 0926245861 Tutor: ING.LEILI LOPEZDOMINGUEZ RIVAS Guayaquil, 27 de Julio VII CERTIFICADO DE ACEPTACIÓN DEL TUTOR En mi calidad de Tutor de Tesis de Grado, nombrado por el Consejo Directivo de la Facultad de Ciencias Matemáticas y Físicas de la Universidad de Guayaquil. CERTIFICO: Que he analizado el Proyecto de Grado presentado por el/la estudiante MARLON ISRAEL CARANGUI HERERA, como requisito previo para optar por el título de Ingeniero en Sistemas Computacionales cuyo problema es: “DESARROLLO DEL MÓDULO DE INGRESO DE SOLICITUDES Y CERTIFICADOS PARA EL PROTOTIPO DEL SISTEMA ACADEMICO DE LAS FACULTADES DE CIENCIAS ADMINISTRATIVAS Y DE CIENCIAS MATEMATICAS Y FISICAS DE LA UNIVERSIDAD DE GUAYAQUIL” Considero aprobado el trabajo en su totalidad. Presentado por: Marlon Israel Carangui Herera Cédula de ciudadanía N° 0926245861 Tutor: Ing. Leili Lopezdominguez Guayaquil 27 de Julio de 2015 VIII UNIVERSIDAD DE GUAYAQUIL FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE INGENIERIA EN SISTEMAS COMPUTACIONALES AUTORIZACIÓN PARA PUBLICACIÓN DE TESIS EN FORMATO DIGITAL 1. Identificación de la Tesis Nombre Alumno: Marlon Israel Carangui Herrera Dirección: Alborada Etapa 12, Manzana 4, Villa 26 Teléfono: 2-241380 E-mail: [email protected] Facultad: Ciencias Matemáticas y Físicas Carrera: Ingeniería en Sistemas Computacionales Título al que opta: Ingeniería en Sistemas Computacionales Profesor guía: Ing. Leili Lopezdominguez Rivas Título de la Tesis: “Desarrollo del módulo de ingreso de solicitudes y certificados para el prototipo del sistema academico de las facultades de ciencias administrativas y de ciencias matematicas y fisicas de la universidad de guayaquil” Temas Tesis: : Sistema del Módulo de Solicitudes y Certificados 2. Autorización de Publicación de Versión Electrónica de la Tesis A través de este medio autorizo a la Biblioteca de la Universidad de Guayaquil y a la Facultad de Ciencias Matemáticas y Físicas a publicar la versión electrónica de esta tesis. Publicación electrónica: X Inmediata Firma Alumno: Después de 1 año 3. Forma de envío: El texto de la Tesis debe ser enviado en formato Word, como archivo .Doc. O .RTF y .Puf para PC. Las imágenes que la acompañen pueden ser: .gif, .jpg o .TIFF. X DVDROM CDROM IX ÍNDICE GENERAL APROBACION DEL TUTOR .................................................................................. II DEDICATORIA ...................................................................................................... III AGRADECIMIENTO .............................................................................................. IV TRIBUNAL DE GRADO ......................................................................................... V DECLARACIÓN EXPRESA .................................................................................. VI CERTIFICADO DE ACEPTACIÓN DEL TUTOR ............................................... VIII AUTORIZACIÓN PARA PUBLICACIÓN DE TESIS EN FORMATO DIGITAL ... IX ABREVIATURAS ..................................................................................................XV SIMBOLOGÍA ......................................................................................................XVI RESUMEN ..........................................................................................................XVII ABSTRACT ........................................................................................................XVIII INTRODUCCIÓN .................................................................................................... 1 CAPÍTULO I ............................................................................................................ 2 PLANTEAMIENTO DEL PROBLEMA................................................................. 2 UBICACIÓN DEL PROBLEMA EN UN CONTEXTO ......................................... 2 SITUACIÓN CONFLICTO NUDOS CRÍTICOS .................................................. 3 CAUSAS Y CONSECUENCIAS DEL PROBLEMA ............................................ 3 DELIMITACIÓN DEL PROBLEMA ..................................................................... 3 FORMULACIÓN DEL PROBLEMA .................................................................... 4 EVALUACIÓN DEL PROBLEMA ........................................................................ 4 OBJETIVO GENERAL ........................................................................................ 5 OBJETIVOS ESPECÍFICOS ............................................................................... 5 ALCANCES DEL PROBLEMA ............................................................................ 6 JUSTIFICACIÓN E IMPORTANCIA .................................................................. 7 CAPÍTULO II ........................................................................................................... 8 ANTECEDENTES DEL ESTUDIO ...................................................................... 8 LENGUAJES DE DESARROLLO ....................................................................... 9 FUNDAMENTACIÓN TEÓRICA ......................................................................... 9 FUNDAMENTACIÓN LEGAL............................................................................ 20 HIPÓTESIS PREGUNTAS A CONTESTARSE ................................................ 38 X VARIABLES DE LA INVESTIGACIÓN ............................................................. 38 CAPÍTULO III ........................................................................................................ 39 DISEÑO DE LA INVESTIGACIÓN .................................................................... 39 METODOLOGÍA DEL DISEÑO DE INVESTIGACIÓN ..................................... 39 DEFINICIONES BÁSICAS ................................................................................ 40 POBLACIÓN Y MUESTRA ............................................................................... 43 INSTRUMENTO DE RECOLECCIÓN DE DATOS .......................................... 45 DISEÑO DEL CUESTIONARIO ........................................................................ 46 DESCRIPCIÓN Y CODIFICACIÓN DE VARIABLES ....................................... 46 INTERPRETACIÓN Y ANÁLISIS DE LOS RESULTADOS ............................. 54 DIAGNOSTICO ACTUAL DE LA ORGANIZACIÓN ......................................... 76 PROPUESTAS DE MEJORAS DE PROCESOS ............................................. 79 MAPA DE PROCESOS ..................................................................................... 83 PANTALLAS MODULO TRAMITES ................................................................. 84 DESARROLLO DE SOFTWARE ...................................................................... 90 CAPÍTULO IV...................................................................................................... 123 CRONOGRAMA .............................................................................................. 123 PRESUPUESTO ............................................................................................. 125 CAPÍTULO V....................................................................................................... 126 CONCLUSIONES ............................................................................................ 126 RECOMENDACIONES ................................................................................... 127 REFERENCIAS BIBLIOGRÁFICAS ............................................................... 128 XI ÍNDICE DE CUADROS Cuadro 01. Causas y Consecuencias del Problema ..................................................3 Cuadro 02. Delimitación del Problema .........................................................................3 Cuadro 03. Evaluación del Problema ...........................................................................4 Cuadro 04. Población Objetivo. ...................................................................................44 Cuadro 05. Descripción de Variables. ........................................................................47 Cuadro 06. Variable Edad. ...........................................................................................49 Cuadro 07. Variable Sexo ............................................................................................49 Cuadro 08. Variable Facultad ......................................................................................49 Cuadro 09. Variable Semestre ....................................................................................50 Cuadro 10. Variable Ingreso_Solicitud .......................................................................50 Cuadro 11. Variable Tipo_Solicitud .............................................................................50 Cuadro 12. Variable Perdida_Solicitud .......................................................................51 Cuadro 13. Variable Acuerdo_Solicitud ......................................................................51 Cuadro 14. Variable Peticion_Solicitud.......................................................................51 Cuadro 15. Variable Tipo_Certificado .........................................................................52 Cuadro 16. Variable Acuerdo_Certificado ..................................................................52 Cuadro 17. Variable Automizar_Tramites ..................................................................52 Cuadro 18. Variable Cert_Digital ................................................................................52 Cuadro 19. Variable Solic_Web ...................................................................................53 Cuadro 20. Tabla de Frecuencia - Edad ....................................................................54 Cuadro 21. Análisis Estadístico - Edad ......................................................................55 Cuadro 22. Tabla de Frecuencia - Semestre ............................................................57 Cuadro 23. Análisis Estadístico - Semestre ..............................................................57 Cuadro 24. Tabla de Frecuencia - Tiempo_Solicitud ...............................................59 Cuadro 25. Análisis Estadístico - Tiempo_Solicitud .................................................59 Cuadro 26. Tabla de Frecuencia - Sexo ....................................................................62 Cuadro 27. Tabla de Frecuencia - Facultad .............................................................63 Cuadro 28. Tabla de Frecuencia - Ingreso_Solicitud ...............................................65 Cuadro 29. Tabla de Frecuencia - Tipo_Solicitud ....................................................66 Cuadro 30. Tabla de Frecuencia - Perdida_Solicitud ..............................................67 XII Cuadro 31. Tabla de Frecuencia - Acuerdo_Solicitud .............................................68 Cuadro 32. Tabla de Frecuencia - Peticion_Certificado ..........................................69 Cuadro 33. Tabla de Frecuencia - Tipo_Certificado ................................................71 Cuadro 34. Tabla de Frecuencia - Acuerdo_Certificado .........................................72 Cuadro 35. Tabla de Frecuencia - Automatizar_Tramites.......................................73 Cuadro 36. Tabla de Frecuencia - Cert_Digital ........................................................75 Cuadro 37. Tabla de Frecuencia - Solic_Web .........................................................76 Cuadro 38. Tabla Cruzada Sexo Vs Tipo_Certificado .............................................77 Cuadro 39. Pruebas de chi-cuadrado Sexo Vs Tipo_Certificado ...........................78 Cuadro 40. Tabla Cruzada Acuerdo_Solicitud Vs Tipo_Solicitud ..........................79 Cuadro 41. Pruebas de chi-cuadrado Tipo_Solicitud Vs Acuerdo_Solicitud ........79 Cuadro 42. Presupuesto - Ingresos ..........................................................................130 Cuadro 43. Presupuesto - Egresos ..........................................................................130 XIII ÍNDICE DE GRÁFICOS Gráfico 01. Esquema de AJAX ............................................................................. 12 Gráfico 02. Funcionamiento Básico de Hibernate ................................................ 15 Gráfico 03. Histograma de Frecuencia Relativa - Edad ....................................... 55 Gráfico 04. Diagrama de Cajas y Bigotes - Edad ................................................ 56 Gráfico 05. Histograma de Frecuencia Relativa - Semestre................................ 57 Gráfico 06. Diagrama de Cajas y Bigotes - Semestre ......................................... 58 Gráfico 07. Histograma de Frecuencia Relativa - Tiempo_Solicitud .................. 59 Gráfico 08. Diagrama de Cajas y Bigotes - Tiempo_Solicitud ............................ 60 Gráfico 09. Frecuencia Relativa - Sexo ................................................................ 62 Gráfico 10. Frecuencia Relativa - Facultad ......................................................... 63 Gráfico 11. Frecuencia Relativa - Ingreso_Solicitud ............................................ 65 Gráfico 12. Frecuencia Relativa - Tipo_Solicitud ................................................ 66 Gráfico 13. Frecuencia Relativa - Perdida_Solicitud ........................................... 68 Gráfico 14. Frecuencia Relativa - Acuerdo_Solicitud.......................................... 69 Gráfico 15. Frecuencia Relativa - Peticion_Certificado ...................................... 70 Gráfico 16. Frecuencia Relativa - Tipo_Certificado ............................................ 71 Gráfico 17. Frecuencia Relativa - Acuerdo_Certificado ...................................... 72 Gráfico 18. Frecuencia Relativa - Automatizar_Tramites ................................... 73 Gráfico 19. Frecuencia Relativa - Cert_Digital ..................................................... 75 Gráfico 20. Frecuencia Relativa Var. Solic_Web ................................................ 76 Gráfico 21. Barras de Tablas Cruzadas Sexo Vs Tipo_Certificado ..................... 78 Gráfico 22. Barras de Tablas Cruzadas Tipo_Solicitud Vs Acuerdo_Solicitud ... 79 XIV ABREVIATURAS DOS: Disk Operating System, sistema Operativo de Disco. IE: Internet Explorer. IIS: Internet Information Server. FTP: File Transfer Protocol. Protocolo de Transferencia de Datos. MVC: Modelo Vista Controlador. SQL: Structured Query Language (Lenguaje de Base de Datos). DR: Recuperación de Desastres BI: Inteligencia de Negocios. RDBMS: Sistema de Gestión de Base de Datos Relacionales. IDE: Integrated development environment. JDK: Java Development Kit. URL: Uniform resource locator (Identificador de Recursos Uniforme). CISC: Carrera de Ingeniería en Sistemas Computacionales. CINT: Carrera de Ingeniería en Networking y Telecomunicaciones. XV SIMBOLOGÍA E Espacio Muestral. S Desaviación Estándar. E(Y) Esperanza Matemática de la v.a. y E Error S Estimador de la Desviación Estándar. E Exponencial. XVI UNIVERSIDAD DE GUAYAQUIL FACULTAD DE CIENCIAS MATEMATICAS Y FISICAS CARRERA DE INGENIERIA EN SISTEMAS COMPUTACIONALES “DESARROLLO DEL MÓDULO DE INGRESO DE SOLICITUDES Y CERTIFICADOS PARA EL PROTOTIPO DEL SISTEMA ACADEMICO DE LAS FACULTADES DE CIENCIAS ADMINISTRATIVAS Y DE CIENCIAS MATEMATICAS Y FISICAS DE LA UNIVERSIDAD DE GUAYAQUIL” Autor: MARLON ISRAEL CARANGUI HERERA Tutor: ING. LEILI LOPEZDOMINGUEZ RIVAS RESUMEN Concluir exitosamente el desarrollo del módulo de trámites, (Solicitudes y Certificados) con una base de datos bien estructurada que evitara perdida de datos, y mantener una información veraz y actualizada, potenciada con el ORM Hibernate como motor organizacional de persistencia de base de datos. Se propone un módulo dinámico, con un workflow modificable, el cual será configurable de acuerdo a las decisiones tomadas por las autoridades encargadas, evitando así un sistema que quede obsoleto en años siguientes, y que evite realizar modificaciones en su desarrollo para cumplir con futuras decisiones. El modulo se propone su desarrollo en java con el framework ZK que destaca en su óptimo rendimiento transaccional y de aspecto fluido, integrando AJAX en su desarrollo principal, incluye CSS3 como estilo personalizado de los colores de la universidad de Guayaquil, y usando el estándar de desarrollo MVC. XVII UNIVERSIDAD DE GUAYAQUIL FACULTAD DE CIENCIAS MATEMATICAS Y FISICAS CARRERA DE INGENIERIA EN SISTEMAS COMPUTACIONALES “DEVELOPMENT OF ADMISSION REQUESTS AND CERTIFICATES MODULE FOR THE ACADEMIC SYSTEM PROTOTYPE OF FACULTIES OF ADMINISTRATIVE SCIENCES & MATHEMATICS AND PHYSICAL SCIENCES OF THE UNIVERSITY OF GUAYAQUIL” Autor: MARLON ISRAEL CARANGUI HERERA Tutor: ING. LEILI LOPEZDOMINGUEZ RIVAS ABSTRACT We will successfully complete the development of the module procedures, (Applications and Certificates) with a well-structured database that would prevent data loss, and maintain accurate and current information, enhanced with ORM Hibernate persistence engine as organizational database. A dynamic module is proposed, with a modifiable workflow, which will be configured according to the decisions taken by the authorities, avoiding obsolescence system following years, and modifications in its development with future decisions. The module development is proposed in java language with Framework ZK, which is a powerful tool for optimal transactional performance and fluid appearance, integrating AJAX in its main development, including CSS3 and personalized style of the colors of the University of Guayaquil using the standard MVC development XVIII INTRODUCCIÓN El presente prototipo el cual se desarrolló, se analizó y se investigó, fue fundamentada por la necesidad de crear una herramienta que brinde fiabilidad y seguridad al momento de realizar el proceso de trámites, se llegó a la conclusión que es factible porque la solución brindada es 25% investigativo, 25% bibliográfico y 50% de la propuesta. La propuesta presentada indica la pronta puesta en marcha para cubrir con las necesidades presentadas por el problema. Los resultados obtenidos en el análisis de campo realizado, corresponden a un periodo de 3 meses, desde el mes de enero del año 2015 hasta el mes de marzo del año 2015. Se presentara conceptos básicos de algunos métodos estadísticos para el análisis del problema planteado, se desarrolla una encuesta de 15 preguntas, de donde se puede extraer 12 variables cualitativas y 3 variables cuantitativas, con su respectiva descripción y codificación. 1 CAPÍTULO I EL PROBLEMA PLANTEAMIENTO DEL PROBLEMA UBICACIÓN DEL PROBLEMA EN UN CONTEXTO En la actualidad la Universidad de Guayaquil realiza sus procesos administrativos y académicos en Sistemas independientes por cada facultad, denominados Integradores (que son desarrollados según la necesidad de cada facultad o carrera) los cuales ayudan en gran parte a programar horarios, ingreso de información de docentes y alumnos, mallas, asignación de curso, matriculación, pagos, entre otros. Estos sistemas varían según la facultad o carrera, son manejados de manera interna por el departamento de cada recinto. La información que es ingresada en estos sistemas integradores está almacenada así mismo en diferentes repositorios (Base de Datos, archivos físicos, archivos en Excel, etc.), es decir existe un repositorio de información por cada facultad o carrera. En la Universidad de Guayaquil en la Administración Central también existe un repositorio central (Centro de Cómputo), en el cual debe estar toda la información de todas las facultades y carreras, para que esta regla se cumpla cada sistema integrador replica información hacia este repositorio central ya sea por procesos automáticos o pase de información de modo manual. 2 Este pase de información no es seguro y muchas veces provoca perdida de información, duplicidad de datos, o inconsistencia de datos entre los dos repositorios antes mencionados, lo cual provoca que la información No sea Integra. SITUACIÓN CONFLICTO NUDOS CRÍTICOS El problema surge porque seguimos con el mismo sistema académico desde hace muchos años, ya que en la actualidad al momento de realizar los trámites por los estudiantes, como son de manera manual suelen demorar su entrega, y esto continuará sino implementamos el nuevo módulo para mejorar los trámites que solicitan los estudiantes. CAUSAS Y CONSECUENCIAS DEL PROBLEMA Cuadro 01. Causas y Consecuencias del Problema Causas Consecuencias Falta de un sistema optimizado para realizar la implementación de ingreso Demora y poca agilidad en el proceso de solicitudes del perfil de estudiantes, de entrega de las solicitudes y para el módulo de solicitudes y certificados a los estudiantes. certificados de una manera eficaz. Perdida de las solicitudes y certificados Doble gasto en las impresiones de las al ser proporcionados a los solicitudes y certificados debido a la estudiantes. perdida de las mismas. Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. DELIMITACIÓN DEL PROBLEMA Cuadro 02. Delimitación del Problema Campo Educativo. Área Gestión administrativa y tecnológica. Aspecto Tema Automatización en el proceso del módulo de ingreso de trámites (solicitudes y certificados). Implementación del Ingreso de Solicitudes del Perfil de Estudiantes, para el Módulo de Solicitudes y Certificados. Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. 3 FORMULACIÓN DEL PROBLEMA ¿Con el desarrollo del nuevo módulo de Ingreso de Solicitudes y Certificados se solucionarán todos los problemas que existen en el proceso actual de ingreso de Trámites en las facultades de Ciencias Matemáticas y Físicas, y Ciencias Administrativas? EVALUACIÓN DEL PROBLEMA En base a lo expuesto de acuerdo al análisis realizado, se concluye que los aspectos generales de evaluación ante el problema mencionado son: Cuadro 03. Evaluación del Problema Acontecido en el campo educativo de la Facultad de Ciencias Delimitado Matemáticas y Físicas, y la facultad de Ciencias Administrativas de la Universidad de Guayaquil. Claro Implementar un módulo de trámites en el sistema académico, ayudará a mejorar la calidad en la atención hacia los estudiantes de una manera fácil sin la necesidad de ir hasta la Universidad. Evidente El problema existe, causa molestia en los estudiantes esperar mucho tiempo para que una solicitud o Certificado sea entregada. Relevante Es muy importante simplificar el proceso de ingreso de solicitudes y trámites, evitando molestias a los estudiantes. Concreto Mediante la implementación de este nuevo módulo se optimizara el proceso de ingreso de solicitudes. Factible Dara soluciones inmediatas al momento de realizar los trámites, a diferencia del proceso actual que se realiza manualmente y requiere tiempo y recursos económicos. Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. 4 OBJETIVO GENERAL Desarrollar un proceso automatizado para el ingreso de solicitudes y petición de certificados que realizan los estudiantes en base a los procesos y requerimientos levantados por el personal de Levantamiento y Análisis de Procesos, como parte del módulo de Trámites, integrándolo al prototipo de Sistema Académico de la Universidad de Guayaquil. OBJETIVOS ESPECÍFICOS Diseñar la base de datos del módulo de ingreso de Solicitudes y Certificados, con una estructura dinámica que soporte el crecimiento del módulo, con los respectivos campos de auditoria y tipos de datos requeridos por el Sistema Académico. Desarrollar el módulo de ingreso de Solicitudes y Certificados, del perfil de estudiantes, utilizando Java ZK Framework como lenguaje de programación, cumpliendo las normas de seguridad y los estándares de diseño de la interfaz gráfica del módulo, requeridos por el Sistema Académico. Realizar pruebas unitarias de todas las opciones que tiene el módulo de ingreso de Solicitudes y Certificados, demostrando el cumplimiento en su totalidad de las leyes establecidas por la Universidad de Guayaquil con respecto a solicitudes en el proceso de matriculación y emisión de Certificados. 5 ALCANCES DEL PROBLEMA El presente proyecto tendrá como finalidad satisfacer todas las necesidades que tienen los estudiantes al momento de ingresar Solicitudes y Peticiones de Certificados estudiantiles en la Facultad de Ciencias Administrativas y en la Facultad de Ciencias Matemáticas y Físicas. Se realizará un análisis de los procesos que actualmente se siguen para el ingreso de Solicitudes y Certificados por parte del estudiante, donde no será necesario su presencia física en las instalaciones de la Universidad Guayaquil. Automatizar todo el proceso de ingreso de solicitudes mediante el desarrollo de una pantalla de ingreso, donde el estudiante podrá seleccionar automáticamente todas las opciones disponibles que ofrece la Universidad de Guayaquil con respecto a trámites. De acuerdo al levantamiento de información realizado, se desarrollará el ingreso de peticiones de los siguientes certificados: Certificado de Materias y Notas Ser Estudiante No Estar Matriculado No Ser Estudiante No Tener Deudas Pendientes Horario de Clases Culminación de Pensum Académico Cursos Aprobados De acuerdo al levantamiento de información de los procesos de este módulo para la implementación del ingreso de Solicitudes se destacan los siguientes tipos: Inclusión de Materias Dejar sin efecto una Materia Cambio de Paralelo 6 Cambio de Jornada Cambio de Modalidad Cambio de Veces Anulación de Matricula Inscripción por Tercera Vez Para las opciones de Inclusión de Materias, se enlistará solo las materias que el estudiante podrá incluir según el flujo de su malla curricular y materias aprobadas, evitando así realizar una solicitud que será denegada. El desarrollo respetará las normas de diseño de interface realizado por los encargados del módulo principal de arquitectura. JUSTIFICACIÓN E IMPORTANCIA En la actualidad, los recursos tecnológicos son de gran ayuda para las entidades educativas ya que se ha convertido en la clave para la realización de todo tipo de actividades para los estudiantes, docentes y personal administrativo. Por este motivo es importante que se haga uso de estos medios tecnológicos, por lo cual es necesario crear un módulo de ingreso solicitudes y certificados, para los estudiantes, como parte del nuevo sistema académico de la Universidad de Guayaquil. Existe la necesidad de implementar el módulo de trámites con la finalidad de dar comodidad y seguridad al momento de solicitar información, olvidándose de los registros manuales, causando malestar y atraso. Esto permitirá brindar un servicio de calidad y mayor soporte a las actividades administrativas de la Universidad. 7 CAPÍTULO II MARCO TEÓRICO ANTECEDENTES DEL ESTUDIO La elaboración del módulo de Tramites (Ingreso de Solicitudes y petición de Certificados), fue desarrollado en base al análisis del proceso actual que se lleva a cabo en la Universidad de Guayaquil, en las facultades de Ciencias Matemáticas y Físicas, y Ciencias Administrativas, el cual se hace hasta la actualidad de manera manual, obteniendo inconsistencias, pérdidas o retrasos al momento de procesar dichas solicitudes, causando muchos malestares dentro del gremio estudiantil. UNIVERSIDAD GUAYAQUIL (Guayaquil, 2015) “La Universidad de Guayaquil fue creada como tal por Pedro Carbo, Jefe Supremo del Guayas en 1883, pero este decreto no fue ratificado por la Asamblea Constituyente de 1884; sin embargo, el pueblo ya no dejó de llamar Universidad de Guayaquil a la modesta Junta Universitaria del Guayas. Con el triunfo de la Revolución Liberal se dictó en 1897 la Ley que creó la Universidad de Guayaquil, y fue una de las primeras en acoger la Reforma Universitaria de Córdova de 1918 que se levantó bajo la consigna de "Una sociedad mejor para una educación mejor". (Guayaquil, 2015) 8 LENGUAJES DE DESARROLLO Para el desarrollo del módulo de Trámites se usó como lenguaje principal Java, siendo un lenguaje orientado a objetos, fue creado en 1991 por el seudónimo de OAK, para luego ser cambiando a GREEN debido a problemas legales en ese entonces, y finalmente fue renombrado a JAVA. A inicios de los 90, la mayoría de los usuarios que en ese entonces se conectaban a Internet no superaban los 28 kbps de velocidad, ya comenzaban a desarrollarse las primeras aplicaciones web, estos incluían en su programación código muy complejo, y esto evidenciaba un problema con formularios complejos y una conexión muy lenta, se necesitaba ya de un lenguaje de programación que se ejecutara en el navegador del usuario. Según la web oficial ZK (www.zkoss.org,2012), ZK es un framework de código abierto para el desarrollo de clientes web realizado en AJAX, se creó gracias a una comunidad de desarrolladores que se propusieron a crear una interfaz de usuario mucho más ágil, fácil de implementar y desarrollar. Fundado por Tom Yeh y Henri Chen en 1990 trabajando conjuntamente en desarrollo fundan la empresa POTIX, y su primera versión es entregada en el año 2005. (www.zkoss.org,2012) FUNDAMENTACIÓN TEÓRICA El proceso de Solicitudes está elaborado mediante la investigación, análisis y diseño de toda la información obtenida en el levantamiento de información del proceso actual, basándose en las leyes y normas pertenecientes a la Universidad de Guayaquil. El ingreso de solicitudes y petición de certificados es parametrizable, permitiendo a los administradores ingresar nuevos tipos de solicitudes y certificados que pueda ofrecer la universidad a sus estudiantes, siendo un proceso dinámico en cada una de sus opciones, para obtener un óptimo rendimiento se estableció el uso de Framework ZK para desarrollar el módulo de Tramites. 9 FRAMEWORK ZK Según la web oficial (www.zkoss.org, 2012), ZK está basado en el lenguaje Java pero es multiplataforma, esto quiere decir que se puede relacionar con cualquier otro lenguaje de programación, el punto más importante para los desarrolladores en ZK es que se olvidan de JavaScript y solo enfocan todo su tiempo en el desarrollo, ya que el framework ZK genera automáticamente el código en JavaScript, a diferencia de otros Frameworks basados en AJAX que si necesitan tener conocimientos solidos de JavaScript, para la facilidad de los desarrolladores el framework ZK utiliza el lenguaje ZULM para la creación de componentes web. (www.zkoss.org, 2012) WORKFLOW Según la WFMC (www.wfmc.org, 2010), se define proceso como: "Un conjunto de uno o más procedimientos o actividades directamente ligadas, que colectivamente realizan un objetivo del negocio, normalmente dentro del contexto de una estructura organizacional que define roles funcionales y relaciones entre los mismos." Y se define Workflow como: "Workflow implica la automatización de procedimientos organizacionales donde tareas, documentos e información son pasados de un participante a otro de acuerdo a un conjunto definido de reglas para alcanzar o contribuir a alcanzar un objetivo de la organización". Una síntesis habitual de las definiciones anteriores es la que define Workflow como: "Un conjunto de tareas realizadas por dos o más miembros de una organización para alcanzar un objetivo común". En resumen, podemos definir Workflow como: El área de la informática que trata de la automatización de los procesos empresariales que involucran secuencias de tareas bien definidas, ejecutadas por personas o sistemas. En esencia, Workflow implica procesos de la organización bien definidos, un sistema informático para modelar esas reglas de negocio y un agente "invisible" que hace que esos procesos se desarrollen de acuerdo a lo especificado. (www.wfmc.org, 2010) 10 XUL Según la página oficial de Mozilla (developer.mozilla.org, 2014), XUL es un lenguaje basado en XML (Extensible Markup Language) utilizado para describir y crear interfaces de usuario, que ha sido diseñado para brindar la portabilidad de las mismas, por lo que permite desarrollar aplicaciones multi-plataforma sofisticadas o complejas sin necesidad de herramientas especiales. Inicialmente XUL fue creado para desarrollar los productos de Mozilla (navegador y cliente de e-mail, entre otros) de una forma más rápida y fácil. Al ser un lenguaje basado en XML, contiene todas las características disponibles para XML y sus mismas ventajas. Estas aplicaciones son fácilmente personalizadas con textos, gráficos y demás, por lo que pueden ser rápidamente localizadas en diferentes mercados. Los desarrolladores Web que estén familiarizados con DHTML podrán aprender XUL rápidamente e incorporarlo en el desarrollo de sus aplicaciones. (developer.mozilla.org, 2014) ZUML Según la página oficinal ZK (books.zkoss.org, 2010), ZUML abreviación de ZK User Interface Markup Language, está basado en XML, el Framework ZK se basó en todo el rico conocimiento de XUL para su desarrollo, posee una línea de conocimiento casi plana, ya que su estructura es muy parecida a la de las paginas XHTML. (books.zkoss.org, 2010) AJAX AJAX proviene de las siglas Asynchronous JavaScript And XML, no es un lenguaje de programación, sino un conjunto de tecnologías web tales como (HTML-JavaScript-CSS-DHTML-PHP/ASP.NET/JSP-XML), la cual nos permite realizar páginas web muy dinámicas e interactivas con respuesta rápida a necesidades del usuario final. Lo complejo de AJAX es dominar todas las tecnologías antes mencionadas. 11 Gráfico 01. Esquema de AJAX Elaboración: Jesse James Garrett Fuente: www.adaptivepath.com Según Christian Gross de Ajax Patterns and Best Practices, La característica fundamental de AJAX es permitir actualizar parte de una página con información que se encuentra en el servidor sin tener que refrescar completamente la página. De modo similar podemos enviar información al servidor.” (Christian Gross, Ajax Patterns and Best Practices, 2006) 12 HTML 5 Según Mozilla (developer.mozilla.org/es/docs/HTML/HTML5, 2014), HTML5 es la última evolución de la norma que define HTML. El término representa dos conceptos diferentes, uno se trata de una nueva versión del lenguaje HTML, con nuevos elementos, atributos y comportamientos, y el otro concepto es que un conjunto más amplio de tecnologías que permite a los sitios Web y a las aplicaciones ser más diversas y de gran alcance. Este conjunto se le llama HTML5 y amigos, a menudo reducido a sólo a HTML5. (developer.mozilla.org/es/docs/HTML/HTML5, 2014) JAVA Según la página oficial de Java (www.java.com, 2012), Java es una tecnología que se usa para el desarrollo de aplicaciones que convierten a la Web en un elemento más interesante y útil. Java no es lo mismo que JavaScript, que se trata de una tecnología sencilla que se usa para crear páginas web y solamente se ejecuta en el explorador. Por defecto, Java le notificará inmediatamente que hay nuevas actualizaciones listas para instalarse. Si desea estar al día y mantener la seguridad de su computadora, es importante que acepte e instale las actualizaciones. Si recibe una notificación de actualización de Java en su computadora Windows y no recuerda haberla descargado o instalado, lo más probable es que Java estuviera ya instalado en la nueva computadora. (www.java.com, 2012) JAVASCRIPT Según la página oficial de Mozilla (developer.mozilla.org, 2014), JavaScript® (a veces abreviado como JS) es un lenguaje ligero e interpretado, orientado a objetos con funciones de primera clase, más conocido como el lenguaje de script para páginas web, pero también usado en muchos entornos sin navegador, tales como node.js o Apache CouchDB. Es un lenguaje script multiparadigma, basado en prototipos, dinámico, soporta estilos de programación funcional, orientada a objetos e imperativa. Leer más sobre JavaScript. (developer.mozilla.org, 2014) 13 ORM Según librosweb.es (librosweb.es, 2010), el termino ORM corresponde a OBJECT-RELATIONAL MAPPING, que en español significa a mapeo de objetorelacional, consiste en transformar ordinarias tablas de una base de datos, en una serie de entidades que simplifican significativamente las tareas básicas de acceso a los datos para el desarrollador. Aunque por años el lenguaje SQL ha sido fundamental para el acceso a mucha de las bases de datos existentes, existen muchas diferencias en su estructura dependiente de la base, tales como SqlServer, MySql y Oracle, esto para el desarrollador significa conocer este lenguaje para cada Base de datos, y peor aún si en un futuro se desee migrar la aplicación a otra base, debería cambiar casi en su totalidad las consultas existentes. “Otro punto importante es la facilidad de trabajo, un ORM, nos facilita las labores básicas de cualquier acceso a datos, el CRUD (Create, Read, Update y Delete). Realizando todas estas labores a través de un lenguaje de alto nivel orientado a objetos. Ventajas y desventajas de un ORM Ventajas o Facilidad y velocidad de uso o Abstracción de la base de datos usada. o Seguridad de la capa de acceso a datos contra ataques. Desventajas o En entornos con gran carga poner una capa más en el proceso puede mermar el rendimiento. o Aprender el nuevo lenguaje del ORM. (librosweb.es, 2010) HIBERNATE Para (González, 2003): Hibérnate es una capa de persistencia objeto/relacional y un generador de sentencias SQL. Te permite diseñar objetos persistentes que podrán incluir polimorfismo, relaciones, colecciones, y un gran número de tipos 14 de datos. De una manera muy rápida y optimizada podremos generar BBDD en cualquiera de los entornos soportados: Oracle, DB2, MySql, etc. Y lo más importante de todo, es open source, lo que supone, entre otras cosas, que no tenemos que pagar nada. (“Hibérnate”). (González, 2003): . Gráfico 2 . Funcionamiento Básico de Hibernate Elaboración: www.hibernate.org Fuente: www.hibernate.org (Hibernate, 2014) “Este diagrama ilustra la manera en que Hibernate utiliza la base de datos y los datos de configuración para proporcionar servicios de persistencia y objetos persistentes a la aplicación.” (Hibernate, 2014) 15 SQL SERVER 2012 Según (Microsoft, 2015) SQL Server, ofrece un rendimiento fiable gracias a la integración de tecnologías en memoria, una rápida obtención de información útil a partir de cualquier tipo de datos, con herramientas que todos conocemos, como Excel, y una plataforma para compilar, implementar y administrar soluciones tanto locales como en nube. (parr.1) (Microsoft, 2015) (Microsoft, 2015) SQL Server permite a los clientes crear aplicaciones críticas y soluciones Big Data mediante tecnología en memoria y de alto rendimiento a través de OLTP, almacenamiento de datos, Business Intelligence y cargas de trabajo analíticas sin tener que comprar costosos complementos ni aplicaciones de alta gama. SQL Server 2014 utiliza un conjunto de herramientas comunes para implementar y administrar bases de datos tanto en la nube como en el entorno local, lo que facilita que los clientes puedan aprovechar la nube con los conocimientos existentes. (parr.2) (Microsoft, 2015) APACHE TOMCAT 7 Según (Guayaquil, 2015) Apache, también conocido como simplemente Tomcat o Jakarta Tomcat, es un servidor web multiplataforma que funciona como contenedor de servlets y que se desarrolla bajo el proyecto denominado Jackarta perteneciente a la Apache Software Foundation bajo la licencia Apache 2.0 y que implementa las especificaciones de los servlets y de JavaServer Pages o JSP de Sun Microsystem. (parr.1) (Guayaquil, 2015) CSS3 CSS se refiere a Cascading HTML Style Sheets, y corresponde a hojas de estilo, que se utilizan para dar estilo al diseño de páginas web, esto corresponde a un nuevo mundo en el diseño web, ya que antes los desarrolladores para darle algo de estilo a su plantilla web, utilizaban etiquetas HTML especiales, y así modificaban en algo el aspecto de su diseño. CSS permite separar la 16 información sobre su diseño y la página en sí, se pueden establecer estilos con menos esfuerzo y sin dañar el código HTML. Según la web (www.w3c.es, 2014), CSS funciona a base de reglas, es decir, declaraciones sobre el estilo de uno o más elementos. Las hojas de estilo están compuestas por una o más de esas reglas aplicadas a un documento HTML o XML. La regla tiene dos partes: un selector y la declaración. A su vez la declaración está compuesta por una propiedad y el valor que se le asigne. (www.w3c.es, 2014) HQL Según la página oficial de Red Hat (Red Hat Inc, 2004), Hibernate utiliza un lenguaje de consulta potente (HQL) que se parece a SQL, sin embargo, comparado con SQL, HQL es completamente orientado a objetos y comprende nociones como herencia, polimorfismo y asociación. Sensibilidad a mayúsculas Las consultas no son sensibles a mayúsculas, a excepción de los nombres de las clases y propiedades Java. De modo que SeLeCT es lo mismo que sELEct e igual a SELECT, pero org.hibernate.eg.FOO no es lo mismo que org.hibernate.eg.Foo y foo.barSet no es igual a foo.BARSET. La cláusula from La consulta posible más simple de Hibernate es de esta manera: from eg.Cat Esto retorna todas las instancias de la clase eg.Cat. Usualmente no es necesario calificar el nombre de la clase ya que auto-import es el valor predeterminado. Por ejemplo: from Cat Con el fin de referirse al Cat en otras partes de la petición, necesitará asignar un alias. Por ejemplo: from Cat as cat 17 Esta consulta asigna el alias cat a las instancias Cat, de modo que puede utilizar ese alias luego en la consulta. La palabra clave as es opcional. También podría escribir: from Cat cat Pueden aparecer múltiples clases, lo que causa un producto cartesiano o una unión "cruzada" (cross join). from Formula, Parameter from Formula as form, Parameter as param Asociaciones y uniones (joins) También puede asignar alias a entidades asociadas o a elementos de una colección de valores utilizando una join. Por ejemplo: from Cat as cat inner join cat.mate as mate left outer join cat.kittens as kitten from Cat as cat left join cat.mate.kittens as kittens from Formula form full join form.parameter param Los tipos de uniones soportadas se tomaron prestados de ANSI SQL • inner join • left outer join • right outer join • full join (no es útil usualmente) Las construcciones inner join, left outer join y right outer join se pueden abreviar. from Cat as cat join cat.mate as mate left join cat.kittens as kitten Puede proveer condiciones extras de unión utilizando la palabra clave with de HQL. from Cat as cat left join cat.kittens as kitten with kitten.bodyWeight > 10.0 18 Un "fetch" join permite asociaciones o colecciones de valores para ser inicializados luego con los objetos padres usando un simple select. Esto es particularmente útil en el caso de una colección. from Cat as cat inner join fetch cat.mate left join fetch cat.kittens Usualmente no se necesita asignársele un alias a una unión de recuperación ya que los objetos asociados no se deben utilizar en la cláusula where (ni en cualquier otra cláusula). Los objetos asociados no se retornan directamente en los resultados de la consulta. En cambio, se pueden acceder por medio del objeto padre. La única razón por la que necesitaríamos un alias es si estamos uniendo recursivamente otra colección: from Cat as cat inner join fetch cat.mate left join fetch cat.kittens child left join fetch child.kittens La construcción fetch no puede utilizarse en consultas llamadas que usen iterate() (aunque se puede utilizar scroll()). Fetch se debe usar junto con setMaxResults() o setFirstResult() ya que estas operaciones se basan en las filas de resultados, las cuales usualmente contienen duplicados para la recuperación de colección temprana, por lo tanto, el número de filas no es lo que se esperaría. Fetch no se debe usar junto con una condición with improvisadas. Es posible crear un producto cartesiano por medio de una recuperación por union más de una colección en una consulta, así que tenga cuidado en este caso. La recuperación por unión de múltiples roles de colección también da resultados a veces inesperados para mapeos de bag, así que tenga cuidado de cómo formular sus consultas en este caso. Finalmente, observe que full join fetch y right join fetch no son significativos. (Red Hat Inc, 2004) 19 FUNDAMENTACIÓN LEGAL La fundamentación legal para realizar el prototipo del Módulo de Tramites citamos las siguientes leyes: LEY DE EDUCACIÓN SUPERIOR PRINCIPIOS DEL SISTEMA DE EDUCACIÓN SUPERIOR Art. 13.- Funciones del Sistema de Educación Superior.- Son funciones del Sistema de Educación Superior: a) Garantizar el derecho a la educación superior mediante la docencia, la investigación y su vinculación con la sociedad, y asegurar crecientes niveles de calidad, excelencia académica y pertinencia. b) Promover la creación, desarrollo, transmisión y difusión de la ciencia, la técnica, la tecnología y la cultura. c) Formar académicos, científicos y profesionales responsables, éticos y solidarios, comprometidos con la sociedad, debidamente preparados para que sean capaces de generar y aplicar sus conocimientos y métodos científicos, así como la creación y promoción cultural y artística. LEY DE PROPIEDAD INTELECTUAL SECCION V DISPOSICIONES ESPECIALES SOBRE CIERTAS OBRAS PARAGRAFO PRIMERO DE LOS PROGRAMAS DE ORDENADOR Art. 28.- Los programas de ordenador se consideran obras literarias y se protegen como tales. Dicha protección se otorga independientemente de que hayan sido incorporados en un ordenador y cualquiera sea la forma en que estén expresados, ya sea en forma legible por el hombre (código fuente) o en forma legible por máquina ( código objeto), ya sean programas operativos y programas aplicativos, incluyendo diagramas de flujo, planos, manuales de uso, y en general, aquellos elementos que conformen la estructura, secuencia y organización del programa. 20 Art. 29.- Es titular de un programa de ordenador, el productor, esto es la persona natural o jurídica que toma la iniciativa y responsabilidad de la realización de la obra. Se considerará titular, salvo prueba en contrario, a la persona cuyo nombre conste en la obra o sus copias de la forma usual. Dicho titular está además legitimado para ejercer en nombre propio los derechos morales sobre la obra, incluyendo la facultad para decidir sobre su divulgación. El productor tendrá el derecho exclusivo de realizar, autorizar o prohibir la realización de modificaciones o versiones sucesivas del programa, y de programas derivados del mismo. Las disposiciones del presente artículo podrán ser modificadas mediante acuerdo entre los autores y el productor. Art. 30.- La adquisición de un ejemplar de un programa de ordenador que haya circulado lícitamente, autoriza a su propietario a realizar exclusivamente: Una copia de la versión del programa legible por máquina (código objeto) con fines de seguridad o resguardo; Fijar el programa en la memoria interna del aparato, ya sea que dicha fijación desaparezca o no al apagarlo, con el único fin y en la medida necesaria para utilizar el programa; y, Salvo prohibición expresa, adaptar el programa para su exclusivo uso personal, siempre que se limite al uso normal previsto en la licencia. El adquirente no podrá transferir a ningún título el soporte que contenga el programa así adaptado, ni podrá utilizarlo de ninguna otra forma sin autorización expresa, según las reglas generales. Se requerirá de autorización del titular de los derechos para cualquier otra utilización, inclusive la reproducción para fines de uso personal o el aprovechamiento del programa por varias personas, a través de redes u otros sistemas análogos, conocidos o por conocerse. Art. 31. -No se considerará que exista arrendamiento de un programa de ordenador cuando éste no sea el objeto esencial de dicho contrato. Se considerará que el programa es el objeto esencial cuando la funcionalidad del objeto materia del contrato, dependa directamente del programa de 21 ordenador suministrado con dicho objeto; como cuando se arrienda un ordenador con programas de ordenador instalados previamente. Art. 32. -Las excepciones al derecho de autor establecidas en los artículos 30 y 31 son las únicas aplicables respecto a los programas de ordenador. Las normas contenidas en el presente Parágrafo se interpretarán de manera que su aplicación no perjudique la normal explotación de la obra o los intereses legítimos del titular de los derechos. DECRETO 1014 SOBRE EL USO DEL SOFTWARE LIBRE Art. 1.- Establecer como política pública para las entidades de administración Pública central la utilización del Software Libre en sus sistemas y equipamientos informáticos. Art. 2.- Se entiende por software libre, a los programas de computación que se pueden utilizar y distribuir sin restricción alguna, que permitan el acceso a los códigos fuentes y que sus aplicaciones puedan ser mejoradas. Estos programas de computación tienen las siguientes libertades: Utilización de programa con cualquier propósito de uso común. Distribución de copias sin restricción alguna. Estudio y modificación de programa (Requisito: código fuente disponible) Publicación del programa mejorado (Requisito: código fuente disponible Art. 3.- Las entidades de la administración pública central previa a la instalación del software libre en sus equipos, deberán verificar la existencia de capacidad técnica que brinde el soporte necesario para este tipo de software. Art. 4.- Se faculta la utilización de software propietario (no libre) únicamente cuando no exista una solución de software libre que supla las necesidades requeridas, o cuando esté en riesgo de seguridad nacional, o cuando el proyecto informático se encuentre en un punto de no retorno. 22 Art. 5.- Tanto para software libre como software propietario, siempre y cuando se satisfagan los requerimientos. Art. 6.- La subsecretaría de Informática como órgano regulador y ejecutor de las políticas y proyectos informáticos en las entidades de Gobierno Central deberá realizar el control y seguimiento de este Decreto. Art. 7.- Encargue de la ejecución de este decreto los señores Ministros Coordinadores y el señor Secretario General de la Administración Pública y Comunicación. LEY ORGANICA DE EDUCACIÓN SUPERIOR Art. 32.- Programas informáticos.- Las empresas que distribuyan programas informáticos tienen la obligación de conceder tarifas preferenciales para el uso de las licencias obligatorias de los respectivos programas, a favor de las instituciones de educación superior, para fines académicos. Las instituciones de educación superior obligatoriamente incorporarán el uso de programas informáticos con software libre. REGLAMENTO DE REGIMEN ACADEMICO CODIFICADO DEL CONSEJO DE EDUCACION SUPERIOR Que, el artículo 26 de la Ley Orgánica De Educación Superior, establece: “La educación es un derecho de las personas a lo largo de su vida y un deber ineludible e inexcusable del Estado. Constituye un área prioritaria de la política pública y de la inversión estatal, garantía de la igualdad e inclusión social y condición indispensable para el buen vivir. […]”; Que, el artículo 356 de la Constitución de la República del Ecuador, prescribe que la educación pública será gratuita hasta el tercer nivel. El ingreso a las instituciones públicas de educación superior se regulará a través de un sistema 23 de nivelación y admisión, definido en la ley. La gratuidad se vinculará a la responsabilidad académica de las estudiantes y los estudiantes. Que, el Art. 71 de la Ley Orgánica De Educación Superior, establece que el principio de igualdad de oportunidades consiste en garantizar a todos los actores del Sistema de Educación Superior las mismas posibilidades en el acceso, permanencia, movilidad y egreso del sistema, sin discriminación de género, credo, orientación sexual, etnia, cultura, preferencia política, condición socioeconómica o discapacidad. Que, el Art. 80 de la Ley Orgánica De Educación Superior, prescribe que se garantiza la gratuidad de la educación superior, prescribe que se garantiza la gratuidad de la educación superior pública hasta el tercer nivel, la misma que observará el criterio de responsabilidad académica de los y las estudiantes (…). Que, el Art. 84 de la Ley Orgánica De Educación Superior, establece los requisitos para aprobación de cursos y carreras y señala que los requisitos de carácter académico y disciplinario necesarios para la aprobación de cursos y carreras, constaran en el Reglamento de Régimen Académico, en los respectivos estatutos, reglamentos y demás normas que rigen al Sistema de Educación Superior. Solamente en casos establecidos excepcionalmente en el estatuto de cada institución, un estudiante podrá matricularse hasta por tercera ocasión en una misma materia o en el mismo ciclo, curos o nivel académico. En la tercera matrícula de la materia, curso o nivel académico no existirá opción a examen de gracia o de mejoramiento. Que, el Art. 33 de la Ley Orgánica De Educación Superior, señala que la matrícula es el acto de carácter académico-administrativo, mediante el cual una persona adquiere la condición de estudiante, a través del registro de las asignaturas, cursos o sus equivalentes, en un periodo académico determinado y conforme a los procedimientos internos de una IES. La condición de estudiante se mantendrá hasta el inicio del nuevo periodo académico ordinario o hasta su titulación. 24 Que, el Art. 34 del reglamento ibidem establece los tipos de matrícula y señala que dentro del Sistema de Educación Superior, se establecen los siguientes tipos de matrícula: a. Matrícula ordinaria.- Es aquella que se realiza en el plazo establecido por la IES para el proceso de matriculación, que en ningún caso podrá ser mayor a 15 días. B. Matricula extraordinaria.- Es aquella que se realiza en el plazo máximo de 15 días posteriores a la culminación del periodo de matrícula ordinaria. C. Matrícula Especial.- Es aquella que, en casos individuales excepcionales, otorga el órgano colegiado académico superior de las universidades y escuelas politécnicas, así como el organismo de gobierno de los institutos y conservatorios superiores, para quien, por circunstancias de caso fortuito o fuerza mayor debidamente documentadas, no se haya podido matricular de manera ordinaria o extraordinaria. Esta matrícula se podrá realizar hasta dentro de 15 días posteriores a la culminación del periodo de matrícula extraordinaria. Para los programas de postgrado, las Universidades y Escuelas Politécnicas establecerán únicamente periodos de matrícula ordinaria y extraordinaria. Se considera como inicio de la carrera o programa la fecha de la matriculación de la primera cohorte de los mismos. Que, es necesario que la normativa de matrículas y tasas vele por el principio de igualdad de oportunidades y garantice a todos los estudiantes las mismas posibilidades en el acceso, permanencia, movilidad y egreso del sistema de educación. 25 REGLAMENTO DE MATRICULAS Y TASAS DE LA UNIVERSIDAD DE GUAYAQUIL CAPITULO I OBJETO Y ÁMBITO DE LA APLICACIÓN Art. 1.- Objeto.- Este reglamento tiene por objeto establecer las normas y procedimientos de las matrículas, además las tasas y los rubros cubiertos por la gratuidad en la Universidad de Guayaquil. Art. 2.- Ámbito de Aplicación.- El presente reglamento es de obligatoria aplicación para los postulantes y para los estudiantes de la Universidad de Guayaquil. CAPITULO II DE LA MATRÍCULA Art. 3.- Definición de matrícula.- La matrícula es el acto administrativo y legal, con el cual una persona adquiere la condición de estudiante y se vincula académicamente con la Universidad de Guayaquil, accede al registro de las asignaturas, cursos o sus equivalentes, para el periodo académico determinado que va a cursar. La condición de estudiante se mantendrá hasta el inicio del nuevo periodo académico ordinario o hasta su titulación. En cada matrícula el estudiante se somete a la normativa que se encuentre vigente a la fecha de su matriculación y los procedimientos internos que mantenga la Universidad de Guayaquil para formalizar dicho vínculo. Art. 4.- Los tipos de matrícula.- La universidad de Guayaquil cuenta con los siguientes tipos de matrícula: a) Matrícula Ordinaria.- Es aquella que se realiza de conformidad al calendario académico de la institución durante los meses de abril y octubre, respectivamente, durará 10 días laborables. 26 b) Matrícula extraordinaria.- Es Aquella que se realiza luego de finalizado el plazo para el periodo de matrícula ordinaria, durará 10 días laborables. c) Matrícula especial.- Es aquella que en casos individuales excepcionales la otorga el Consejo Universitario, debido a circunstancias de caso fortuito o fuerza mayores debidamente documentadas. Esta matrícula se podrá realizar hasta dentro de los 10 días laborables posteriores a la culminación del periodo de matrícula extraordinaria. Se considera inicio de la carrera la fecha de matriculación de la primera cohorte. Las unidades académicas que presenten problemas académicos o administrativos no imputables al estudiante, que dificulten la gestión de matriculación, podrán solicitar la prórroga del periodo de matrículas ordinarias, siempre que lo argumenten antes de que concluya el periodo de matriculación ordinaria. El Vicerrectorado Académico de considerarlos pertinente, concederá la prórroga del periodo de matrículas ordinarias hasta por 5 días laborables posteriores a dicho periodo. Art. 5.- Tipos de matrícula en los programas de postgrado.- Los programas de postgrado tendrán únicamente periodos de matrícula ordinaria y extraordinaria. Se considera como inicio del programa la fecha de matriculación de la primera cohorte. La matrícula y colegiatura en los programas de postgrado se fijarán en la aprobación del proyecto del curso de postgrado, el mismo contendrá los requisitos que deben cumplir los aspirantes y las formas en las que se receptará el pago de los dividendos. Los rubros y los valores a cobrar por los programas de postgrado lo establecerá la Institución en la oferta académica de cada programa. 27 Art. 6.- Anulación de la matrícula.- El Consejo Universitario podrá declarar nula una matrícula cuando esta haya sido realizada violando la Ley y la normativa pertinente, previo informe de la autoridad competente que contendrá las formalidades legales y reglamentarias aplicables en cada caso. Art. 7.- Del retiro de una asignatura o programa.- Un estudiante podrá retirarse de una o varias asignaturas en un periodo académico en situaciones de caso fortuito o fuerza mayor debidamente documentadas, que le impidan continuar sus estudios. El plazo para este retiro serpa de 30 días contados a partir de la fecha de inicio de actividades académicas. Estos casos serán conocidos y aprobados por la Comisión Académica. En caso de retiro la matrícula correspondiente a esta asignatura quedará sin efecto y no se contabilizará para efectos del cumplimiento de los requisitos para aprobación de cursos y carreras establecidos en el artículo 84 de la LOES. CAPITULO III DE LOS PERIODOS ACADÉMICOS Art. 8.- Del periodo académico ordinario.- El inicio de las actividades de cada periodo académico ordinario, se realizará en los meses de abril y octubre, respectivamente. Los programas de postgrado podrán planificar sus periodos académicos de modo diferente. Art. 9.- Del periodo académico extraordinario.- La Universidad de Guayaquil podrá implementar, adicionalmente periodos académicos extraordinarios de conformidad a lo establecido en el Reglamento de Régimen Académico CES. CAPITULO IV DEL POSTULANTE A LA MATRÍCULA Art. 10.- De los requisitos para los postulantes al primer semestre.- Para ser estudiante de la Universidad de Guayaquil se requiere: 28 • Haber aprobado la prueba de admisión, el curso de nivelación o haber exonerado. • Copia de cedula a color. • 2 fotos tamaño carnet. • Copia del certificado de votación (mayores de 18 años). • Copia certificado por el Ministerio de Educación o copia notariada del Título de Bachiller (previamente debe estar refrendado), se podrá aceptar transitoriamente por un semestre copia certificada o notariada del acta de grado refrendada por el Ministerio de Educación. La entrega de esta información no parte de los coordinadores del Curso de Nivelación de cada Facultad a Vicerrector Académico de la Institución para su verificación será hasta la fecha en que indique el Vicerrectorado Académico y validado a Centro de Computo a los siete días de la verificación. Como un proceso de control de ingreso de información de las facultades, según los literales anteriores, el Sistema Académico Institucional se bloqueará en las fechas establecidas por el Vicerrectorado Académico. La división de Cómputo establecerá un cronograma anual para la capacitación del Sistema Académico Institucional, el cual va a estar dirigido al personal de Secretaría encargado del proceso de matriculación, el mismo que será dado semestralmente a los diferentes grupos de las facultades. Art.11.- De los requisitos para los postulantes a partir del segundo semestre.Para matricularse por primera vez, a partir del segundo semestre, y, por segunda vez o, excepcionalmente, por tercera ocasión, en una o varias asignaturas, se requiere la orden de matriculación extendida por el secretario de cada Unidad Académica, previa presentación del os siguientes documentos: • Solicitud de matrícula dirigida al Decano de la Facultad; • Ficha de asignaturas en las que se matriculará; y • Recibo de pago de la tasa por concepto de segunda o tercera matrícula. (Para el caso de tercera matricula deberá tener informe favorable de la comisión Académica de la Universidad). 29 Art.12.- De los requisitos para los postulantes a postgrados.- Para el ingreso a los programas de postgrado se deberán cumplir los requisitos, contenidos en el programa del curso de postgrado y los establecidos en el reglamento de régimen académico. Art.13.- De los aspirantes de otras Universidades.- Los aspirantes a ingresar a cualquiera de las Unidades Académicas que provengan de otra Universidad, previo el pago de las tasas correspondientes, deberán presentar la solicitud de cambio con toda la documentación original contenida en el artículo 11 de este Reglamento, además deberán presentar record académico original ( calificaciones, obtenidas, el año en que aprobó cada asignatura y el sistema de calificación), programas de estudios o syllabus de las materias aprobadas debidamente certificadas por la Universidad de origen, copia de cédula de ciudadanía y papeleta de votación actualizada. Las solicitudes deberán presentarse 60 días antes del inicio del periodo de matriculación. Art.14.-De los aspirantes de otras Unidades Académicas.- En el caso de cambio de Facultad, dentro de la Universidad de Guayaquil, el estudiante presentará la solicitud dirigida al director(a) de la carrera, record académico original (calificaciones obtenidas, en el año en que aprobó cada asignatura y el Sistema de calificación). Los documentos deberán estar certificados por la Secretaría de la Facultad de origen y las originales quedarán en la Unidad Académica de procedencia. Las solicitudes deberán presentarse 15 días antes del inicio del periodo de matrículas ordinarias. Estos postulantes no deberán someterse al SNNA y deberán cumplir con las normas de reconocimiento u homologación de estudios contempladas en el artículo 61 del Reglamento de Régimen Académico. Art.15.-De los requisitos para los postulantes extranjeros.- Para el caso de los postulantes extranjeros se observaran los mismos requisitos que para los postulantes nacionales. Y además deberán cumplir con los siguientes: 30 Título de bachiller apostillado o refrendado en el Ministerio de Educación y en el Ministerio de Relaciones Exteriores; y, Copia notariada del visado por estudio. El postulante extranjero que está imposibilitado, de cumplir con los requisitos prescritos en este artículo, debido a sus necesidades específicas de protección. Tales como: refugio, asilo. etc. no perderá el derecho a la matricula. La institución le dará un trato favorable al encontrarse en un estado de protección especial prorrogándole el plazo de presentación de los documentos hasta el inicio del siguiente periodo académico. Art.16.- De la condición de estudiante regular.- la condición de estudiante regular de la Universidad de Guayaquil se la adquiere cuando se entrega la constancia de matrícula en la Secretaria de cada Unidad Académica y se haya matriculado en al menos el 60% de las asignaturas, cursos o sus equivalentes, que permite su plan de estudios en el periodo académico ordinario correspondiente. También se consideran estudiantes regulares aquellos que se encuentran cursando el periodo académico de culminación de estudios; es decir, aquel en el que el estudiante se matriculo en todas las actividades académicas que requiere aprobar para concluir su carrera. CAPITULO VI DE LA GRATUIDAD Art.20.- Ámbito de la gratuidad.- La gratuidad beneficiara a los estudiantes que cumplan los siguientes requisitos: a) Ser estudiante regular de la Universidad de Guayaquil, de conformidad a lo estipulado en el artículo 16 de este reglamento. b) Cursar por primera vez una sola carrera en la universidad. También será beneficiarios los estudiantes que cambien de carrera por primera vez, siempre que hayan aprobado una o barias asignaturas, cursos o sus equivalentes del periodo académico ordinario o extraordinario de carácter obligatorio, que puedan ser homologadas de conformidad a lo establecido en el reglamento de Régimen Académico. 31 Si un estudiante se retira de una carrera y se reincorpora cómo estudiante regular dentro del tiempo máximo establecido en el reglamento de Régimen Académico, continuara gozando del derecho de la gratuidad de la educación superior. c) Cursar las asignaturas, cursos o sus equivalentes del periodo académico en el tiempo y en las condiciones ordinarias establecidas en el programa de la carrera correspondiente. Art.21.- De los rubros cubiertos por la gratuidad.- Los estudiantes que gocen del derecho a la gratuidad, así como aquellos que paguen los aranceles correspondientes por tasas y otros durante el periodo académico al que corresponda la misma, gozaran de los derechos o servicios que la escolaridad en cada periodo académico abarca entre estos: a) Las asignaturas, cursos o sus equivalentes que, en el correspondiente periodo académico ordinario o extraordinario, el estudiante puede cursar, independientemente de sus avances de aprobación del respectivo plan de estudios; b) Las asignaturas, cursos sus equivalentes que forman parte del plan de estudios y que un estudiante debe aprobar en una institución de educación superior para acceder al título de la respectiva carrera, incluyendo los cursos de lengua extranjera, cursos de computación, itinerarios académicos, seminarios u otras actividades académicas obligatorias; c) El acceso y uso de bibliotecas, laboratorios especializados, servicios informáticos, de lengua extranjera, infraestructura científica y tecnológica, recursos bibliográficos, hemerotecas, servicios básicos, utilización de bienes y servicios institucionales relacionados al bienestar estudiantil, así como aquellos que garanticen desarrollo efectivo de actividades de aprendizaje que conlleven riesgo, al igual que aquellos bienes, insumos, materiales, reactivos para prácticas de laboratorio y servicios necesarios para el ejercicio de practica de 32 laboratorio y servicios necesarios para el ejercicio de la actividad académica, con excepción de bienes de uso exclusivamente personal e individual; d) Seguro de vida y accidente, la Universidad de Guayaquil está obligada al a provisión de este servicio para los estudiantes; y, e) Rubros correspondientes a las actividades de aprendizaje que tienen que ver con formación integral, itinerarios académicos, actividades de investigación formativa, las practicas pre profesionales y actividades de vinculación con la sociedad debidamente planificadas. Las matriculas de carácter extraordinario o especial, estarán exentas de pagos en las circunstancias de caso fortuito o fuerza mayor debidamente documentadas. Art.22.- Perdida parcial y temporal de la gratuidad.- Los estudiantes de la Universidad de Guayaquil perderán solamente de manera parcial y temporal la gratuidad cuando repruebe una o varias asignaturas, cursos o sus equivalentes. Los estudiantes que pierdan la gratuidad de manera parcial y temporal deberán pagar únicamente la parte correspondiente al valor de la matrícula, y la parte relativa al arancel por las asignaturas, cursos o sus equivalentes que hubiere reprobado. Cuando en estudiante no sea regular; es decir, no se matricule en por lo menos el 60% de las asignaturas, cursos o sus equivalentes que el plan de estudio le permite tomar en el periodo académico respectivo deberá pagar los valores correspondientes a las matriculas, aranceles y derechos de las asignaturas, cursos o sus equivalentes que tome en el respectivo periodo académico. Se exceptúan de lo establecido en el presente inciso los casos de imposibilidad física o mental temporal. En caso de pérdida de una o varias asignaturas, cursos o sus equivalentes, a causa de situaciones de caso fortuito o fuerza mayor, enfermedad, discapacidad, 33 embarazo de alto riesgo u otra similares debidamente documentadas, que le impidan al estudiante dar continuidad sus estudios, el Consejo Universitario podrá declarar que esta pérdida no se contabilizará por efectos del derecho a la gratuidad. Art.23.- Perdida definitiva de la gratuidad.- El estudiante regular pierde definitivamente el beneficio de gratuidad al reprobar, en términos acumulativos, más de 30% de los créditos correspondientes a las asignaturas, cursos o sus equivalentes, constante en el respectivo plan de estudios de la carrera que se encuentren cursando, incluyendo aquellas asignaturas, cursos o sus equivalentes que haya reprobado en la carrera que se para determinar matriculo por primera vez. Para determinar la pérdida definitiva de la gratuidad se debe hacer relación entre número de crédito correspondientes a las asignaturas, cursos o sus equivalentes reprobadas y el número total de créditos correspondientes a las asignaturas, cursos o sus equivalentes del plan de estudios en los que el estudiante se matriculo desde el inicio de su carrera. DISPOSICIONES GENERALES TERCERA.- El número máximo de asignaturas, cursos o sus equivalentes que puede matricularse en estudiante regular en un periodo académico será la cantidad total de materias que están asignadas en cada nivel o semestre más una materia adicional y el nivel del estudiante será en el que se encuentre cursando la mayor cantidad de asignaturas, cursos o sus equivalentes Cuarta.- Si el estudiante se matricula en diferentes niveles podrá tomar un máximo de 6 asignaturas, cursos o sus equivalentes y el nivel del estudiante será en el que se encuentre cursando la mayor cantidad de asignaturas, cursos o sus equivalentes. RESOLUCIÓN CU 42-04-14 APROBACION DE MATRICULA POR TERCERA VEZ El órgano Colegiado Académico Superior, en sesión extraordinaria celebrada el 19 de marzo del año en curso, respecto de la petición de otorgar tercera 34 matricula a los estudiantes de la Universidad de Guayaquil, en el periodo lectivo 2014-2015, resolvió que, de manera transitoria, hasta que se apruebe el Estatuto Orgánico de la Universidad de Guayaquil se otorgue tercera matricula a bs estudiantes que lo soliciten, debiendo fundamentar su solicitud en las siguientes excepciones: a) Calamidad doméstica debidamente comprobada. b) Enfermedad debidamente comprobada con certificado médico del IESS o del Ministerio de Salud Pública. c) Maternidad: segundo y tercer trimestre de gestación, embarazo patológico y puerperio inmediato. d) Problemas académicos y administrativos no imputables al estudiante. e) Cuando no se hayan asentado calificaciones en la materia al menos en una de las dos matriculas anteriores f) Si un estudiante por representar deportiva, cultural y científicamente a la Institución o a alguna institución del país hubiese perdido una matrícula en la materia en cuestión. g) Si el estudiante presenta un registro de asistencia general igual o superior al 75% durante toda la carrera. h) Si el estudiante presenta un promedio general igual o superior al 8.5 en el ciclo inmediato anterior. i) Si el estudiante presenta un promedio general igual o superior al 7,5 durante toda la carrera. j) Si el estudiante presenta un certificado laboral que demuestre el impedimento para asistir normalmente a clases en la materia que perdió la segunda matricula, k) Si el estudiante ha debido salir del país o a otra ciudad a capacitarse laboralmente. l) Que en circunstancias en que la argumentación para obtener tercera matricula no quepa en ninguna de estas excepcionalidades, la solicitud, desde el Decanato que incorpora la solicitud del estudiante, vaya directamente al Vicerrectorado Académico que presentará el informe respectivo, para decisión del H. Consejo Universitario. 35 m) Que el estudiante declare que conoce que es su última oportunidad de estudiar esa materia, que es la tercera matricula, y que sabiendo que es su última oportunidad la va a aprovechar como corresponde. La resolución antes citada cuenta con visto bueno condicionado, en oficio No. CES-ClFlUG-2014-0184-O, de abril 8 del 2014, suscrito por el Ec. Jorge Kalil Barreiro, Presidente de la Comisión Interventora, con la siguiente indicación: Dicho visto bueno está condicionado para su aplicación, a la observancia exclusiva de las siguientes excepciones para el otorgamiento de tercera matrícula: "Los estudiantes que tengan un registro de asistencia general igual o superior al 75% durante toda la carrera o que presenten un promedio general igual o superior a 8.5 en el período académico inmediato anterior o que presenten un promedio general igual o superior a 7.5 durante toda la carrera, podrán solicitar de manera debidamente fundamentada, el otorgamiento de tercera matrícula de una materia, en los siguientes casos: a) El o la estudiante que se haya encontrado impedido de cumplir sus actividades académicas, a causa de una calamidad doméstica grave debidamente comprobada; b) El o la estudiante que se haya encontrado impedido de cumplir sus actividades académicas a causa de una enfermedad grave debidamente comprobada con certificado médico del IESS, certificado médico privado validado por IESS o certificado del Ministerio de Salud Pública; c) La estudiante que se haya encontrado impedida de cumplir sus actividades académicas a causa de su estado riesgoso debidamente comprobado con certificado médico del IESS, certificado médico privado validado por IESS o certificado del Ministerio de Salud Pública; d) El o la estudiante que se haya encontrado impedido de cumplir sus actividades académicas a causa de representar deportiva, cultural y científicamente a la Institución o alguna institución del país; e) El o la estudiante que se haya encontrado impedido de asistir normalmente a clases debido a causa laboral, siempre que se acredite 36 con el respectivo certificado del empleador en el que conste el estudiante como afiliado de dicho empleador; f) El o la estudiante que se haya encontrado impedido de cumplir sus actividades académicas a causa de su capacitación laboral en la ciudad, fuera de la ciudad o del país, siempre que dicha capacitación se acredite: i.-Con el certificado del empleador en el que conste su autorización para tal capacitación; y, ii.-Con el certificado extendido por la institución o empresa capacitadora respecto al tiempo y asistencia del estudiante. Además de las excepciones señaladas, todo estudiante podrá también solicitar de manera debidamente fundamentada, el otorgamiento de tercera matricula de una materia, en los siguientes casos: a.-) Si el estudiante o la estudiante ha perdido la segunda matricula por problemas académicos y administrativos no imputables a él. 2.-) Cuando por razones no imputables al estudiante, no se hayan asentado calificaciones en la materia, al menos en una de las dos matriculas anteriores. El Órgano Colegiado Académico Superior, en sesión ordinaria de abril 10 del año en curso (continuación de la sesión de abril 2 del 2014), conoció y resolvió lo siguiente: 1) Allanarse al visto bueno condicionado, participado por la Comisión Interventora, sobre la tercera matrícula. y, 2) Enviar al Ec. Jorge Kalil Barreiro, Presidente de la Comisión Interventora, el posicionamiento de los miembros del H. Consejo Universitario, respecto del visto bueno condicionado, para que sean analizados, revisados y/o modificados los puntos de vista que continuación se detallan, con la finalidad que se tomen en consideración y se flexibilice la postura sobre el tema. a) Se señala el otorgamiento de tercera matricula de una materia, contraviniendo Io establecido en el inciso primero del Art. 34 de la LOES, que dispone IO Siguiente, "podrá matricularse hasta por tercera ocasión en la misma materia o en el mismo curso, ciclo o nivel académico", es decir que se puede otorgar tercera matricula en más de una materia Se solicita la revisión de esta condicionante. b) Se plantea la ampliación, revisión o aclaración de esta resolución debiendo fundamentarse la decisión en disposiciones legales. 37 c) Se considera que el porcentaje de asistencia a clases debería ser 70% por así señalarlo el Reglamento interno de la Universidad de Guayaquil sobre el porcentaje de asistencia a clases. d) Se considera que es exagerado el promedio general igual o superior a 8.5 en el periodo académico inmediato anterior ya que la nota con la cual se aprueba asignaturas en la Universidad de Guayaquil es 7/10aproximado de 65.1 ll 00-, e) Que se incluya a los estudiantes que realizan actividades comerciales informales que no tienen relación laboral formal con una empresa establecida y no están afiliados al IESS. Posteriormente, el Órgano Colegiado Académico Superior, en sesión de abril 21 del 2014, considerando que, habiéndose allanado el H. Consejo Universitario el visto bueno condicionado de la Comisión Interventora, respecto a la tercera matricula, resolvió su aplicación inmediata. HIPÓTESIS PREGUNTAS A CONTESTARSE ¿Con el desarrollo del nuevo módulo de Ingreso de Solicitudes y Certificados se solucionarán todos los problemas que existen en el proceso actual de Trámites de los estudiantes en las facultades de Ciencias Matemáticas y Físicas, y Ciencias Administrativas? VARIABLES DE LA INVESTIGACIÓN Variable Independiente Desarrollo del Módulo de Tramites, perfil de Estudiantes, del Prototipo Sistema Académico de la Universidad de Guayaquil. Variable Dependiente Ayudar a controlar el ingreso y seguimiento de Trámites, de las facultades de Ciencias Matemáticas y Físicas, y Ciencias Administrativas de la Universidad de Guayaquil. 38 CAPÍTULO III METODOLOGÍA DISEÑO DE LA INVESTIGACIÓN METODOLOGÍA DEL DISEÑO DE INVESTIGACIÓN Introducción del capítulo El presente prototipo el cual se desarrolló, se analizó y se investigó, fue fundamentado por la necesidad de crear una herramienta que brinde fiabilidad y seguridad al momento de realizar el proceso de trámites, se llegó a la conclusión que es factible porque la solución brindada es 25% investigativo, 25% bibliográfico y 50% de la propuesta. La propuesta presentada indica la pronta puesta en marcha para cubrir con las necesidades presentadas por el problema. Los resultados obtenidos en el análisis de campo realizado, corresponden a un periodo de 3 meses, desde el mes de enero del año 2015 hasta el mes de marzo del año 2015. Se presentara conceptos básicos de algunos métodos estadísticos para el análisis del problema planteado, se desarrolla una encuesta de 15 preguntas, de donde se puede extraer 12 variables cualitativas y 3 variables cuantitativas, con su respectiva descripción y codificación. 39 DEFINICIONES BÁSICAS Antes de continuar con los procesos estadísticos en este capítulo, se definirán algunos conceptos básicos de metodologías utilizadas para el desarrollo del mismo. Espacio Muestral Según la web (Thales.cica.es, 2010), el conjunto de todos los resultados posibles diferentes de un determinado experimento aleatorio se denomina Espacio Muestral asociado a dicho experimento y se suele representar por Ω. A los elementos de Ω se les denomina sucesos elementales. Así por ejemplo, el espacio muestral asociado al experimento aleatorio consistente en el lanzamiento de una moneda es Ω= {Cara, Cruz}; el espacio muestral asociado al lanzamiento de un dado es Ω={1, 2, 3, 4, 5, 6}, siendo Cara y Cruz los sucesos elementales asociados al primer experimento aleatorio y 1, 2, 3, 4, 5 y 6 los seis sucesos elementales del segundo experimento aleatorio.” (Thales.cica.es, 2010) Variable Aleatoria Según el libro (Fundamentos de Estadística, 2008), una variable aleatoria es una función, que asigna eventos (p.e., los posibles resultados de tirar un dado dos veces: (1, 1), (1, 2), etc.) a números reales (p.e., su suma). Una variable aleatoria o variable estocástica es una variable estadística cuyos valores se obtienen de mediciones en experimento aleatorio. Los valores posibles de una variable aleatoria pueden representar los posibles resultados de un experimento aún no realizado, o los posibles valores de una cantidad cuyo valor actualmente existente es incierto (p.e., como resultado de medición incompleta o imprecisa). Intuitivamente, una variable aleatoria puede tomarse como una cantidad cuyo valor no es fijo pero puede tomar diferentes valores; una distribución de probabilidad se usa para describir la probabilidad de que se den los diferentes valores.” (Fundamentos de Estadística, 2008) 40 Variable Aleatoria Discreta Según el libro (Fundamentos de Estadística, 2008), una Variable aleatoria es discreta si su recorrido es un conjunto discreto. Sus probabilidades se recogen en la función de cuantía.” (Fundamentos de Estadística, 2008) Variable Aleatoria Continua Según el manual de estadística empresarial (2009), una variable aleatoria es continua si su recorrido no es un conjunto numerable. Intuitivamente esto significa que el conjunto de posibles valores de la variable abarca todo un intervalo de números reales. Por ejemplo, la variable que asigna la estatura a una persona extraída de una determinada población es una variable continua ya que, teóricamente, todo valor entre, pongamos por caso, 0 y 2,50 m, es posible.” (Manual de estadística empresarial, 2009) Población objetivo Según (Walpole R. , 1999) Menciona que, “Son agrupaciones de todos los individuos o elementos individuales de un tipo particular” Población Investigada Según (Morales, 2012) es el “Conjunto completo de individuos, objetos, o medidas los cuales poseen una característica común observable y que serán considerados en un estudio” (p.4) (Morales, 2012). Concepto de Muestreo La (Real Académia Española, 2015) lo define como “Selección de una pequeña parte estadísticamente determinada, utilizada para inferir el valor de una o varias características del conjunto” Muestra Según Sáez, A (2012). “Se denomina muestra a cualquier subconjunto de datos seleccionados de una población”. (Sáez, A ,2012) 41 Marco Muestral Según Anna Franco (2006), el marco muestral es un instrumento que simboliza la “Población Objetivo“, sirve para determinar qué elementos de la población deben integrar la muestra. El marco muestral para esta investigación consta de una listado de los nombres de las escuelas primarias incluyendo la dirección donde se encuentra ubicada, véase el anexo II. Dicho listado, correspondiente al periodo 2005 – 2006, ha sido proporcionado por la Dirección Provincial de Educación del Guayas en el mes de julio del 2006.” (Anna Franco, 2006) Muestra Aleatoria Según Anna Franco (2006), una muestra aleatoria es cualquier subconjunto de tamaño n, tomando de la población objetivo, usando técnicas de muestreo probabilístico.” (Anna Franco, 2006) Tipos de muestreo Según Anna Franco (2006), las técnicas de muestreo a revisarse son: Muestreo Aleatorio Simple, Muestreo Estratificado y Muestreo de Conglomerados.” (Anna Franco, 2006) Muestreo Aleatorio Simple Según Anna Franco (2006), el Muestreo Aleatorio simple es la técnica usada para seleccionar n unidades de una población de tamaño N, de tal manera que N n cada uno de los subconjuntos de tamaño n en la población, tengan igual probabilidad de constituir la muestra.” (Anna Franco, 2006) Muestreo Aleatorio Estratificado Según Anna Franco (2006), el Muestreo estratificado es la técnica con la cual se divide la población en subpoblaciones o estratos. Cada estrato debe ser mutuamente excluyente, es decir que cada elemento de la población debe asignarse a un solo estrato; y colectivamente exhaustivo o en otras palabras que no debe omitirse elementos de la población. Para la selección de los elemento 42 en cada estrato se utiliza el concepto de “afinación”, y un procedimiento aleatorio que por lo general es Muestreo Aleatorio Simple.” (Anna Franco, 2006) Análisis Univariado Según Mendoza, H, Bautista, G. (2002), es un análisis básico, primario, en el cual, las características o propiedades de las personas o cosas han de medirse una a una, de modo univariado. Los tipos de medidas que se utilizan en los análisis univariados son, medidas de tendencia central, medidas de dispersión y distribución de frecuencias. (Mendoza, H, Bautista, G. ,2002) Análisis Bivariado Según Ferrán, A. (1996), el interés en el análisis de tablas de contingencia reside en resumir la información contenida en la tabla midiendo la asociación entre las dos variables que forman la tabla y nunca la relación entre las categorías de las variables, habitualmente estas variables son de naturaleza cualitativa, el objetivo es determinar la independencia que existe entre las variables de estudio para ello lo analizaremos a través de la prueba de independencia de Chi-cuadrado, la cual contrasta la hipótesis de que las variables son independientes frente a una hipótesis alternativa de que una variable se distribuye de modo diferente para diversos niveles de la otra. Si el p-valor asociado al estadístico de contraste es menor que , se rechazará la hipótesis nula al nivel de significancia (Ferrán, A. 1996). POBLACIÓN Y MUESTRA Diseño Muestral Según Alfredo Aliaga (2012), el Diseño Muestral se caracteriza por ser probabilístico, por lo cual los resultados obtenidos de la encuesta se generalizan a toda la población. A su vez es polietápico, estratificado y por conglomerados, donde la unidad última de selección es la vivienda y la unidad de observación es la persona.” (Alfredo Aliaga, 2012) 43 Población Objetivo. La población establecida para el actual proceso de automatización del módulo de Trámites corresponde a la Facultad de Ciencias Matemáticas y Físicas, y a la Facultad de Ciencias Administrativas, donde la cantidad de estudiantes es de 20242, estos datos fueron obtenidos de la página de la universidad de Guayaquil, esta población objetivo se escogió porque los estudiantes son las personas que interactúan directamente con el proceso de ingreso de tramites en las dos facultades. Cuadro 04. Población Objetivo. POBLACIÓN DE ESTUDIANTES N Facultad de Ciencias Matemáticas y Físicas 5188 Facultad de Ciencias Administrativas 15054 TOTAL 20242 Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Marco Muestral. El marco muestral escogido para este proyecto de prototipo del módulo de ingreso de solicitudes y petición de certificados, fueron estudiantes al azar de la facultad de Ciencias Matemáticas y de la facultad de Ciencias Administrativas, ya que son los principales actores en este proceso. El tamaño de la muestra Para nuestro análisis hemos obtenido el tamaño de la muestra con la siguiente formula: 44 n= 0.50 x 0.50 x 20242____ (20242-1)0.052 /22 + 0.50x0.50 n= 5060,5__________ (20241)(0.0025) /4 + 0.25 n= 5060,5________ (20241)(0.000625) + 0.25 n= 5060,5_____ 12.650625 + 0.25 n= 5060,5 _ 12.900625 n=377 P = Probabilidad de éxito (0.50) Q = Probabilidad de fracaso (0.50) N= Tamaño de la población (20242) E= error de estimación (5%) K= # de desviac. Típicas “Z” (1: 68%, 2: 95,5%, 3: 99.7%) n = Tamaño de la muestra (377) Desviación estándar de la población: p= 0,5 q=0.5. Z = Valor obtenido mediante niveles de confianza. Es un valor constante que, si no se tiene su valor, se lo toma en relación al 95% de confianza equivale a 1,96 d = Límite aceptable de error muestral que, generalmente cuando no se tiene su valor, suele utilizarse un valor de 0.05 (5%). INSTRUMENTO DE RECOLECCIÓN DE DATOS LA TÉCNICA En conjunto de reglas de sistematización mejoramiento, facilitación y seguridad en el trabajo. Conjunto de mecanismos y de máquinas, sistemas y medios de dirigir, recolectar, conservar, reelaborar y transmitir datos, información, energía. Es la estructura del proceso de Investigación. Técnicas: Documentales De Campo Documentales De Campo - Fichaje - Observación - Lectura Científica - Entrevista - Análisis de Contenido - Encuesta - Gramaticales - Psicometría - De redacción y estilo - Sociometría - Antropometría 45 LOS INSTRUMENTOS. -Herramientas que se utilizan para producir información o datos. -Empleados para tener un resultado. Cuando se selecciona una técnica para la recolección de la información que requiere una investigación; ésta, le determina el o los instrumentos que se debe utilizar. Por ejemplo: Técnica Instrumento - Observación - Registro de observación - Entrevista - Guion de entrevista - Encuesta - Cuestionario Instrumentos de la Investigación El instrumento utilizado para la recolección de datos es El cuestionario que está compuesto por 15 preguntas, 12 de las cuales son cualitativas y 3 cuantitativas, con una sola pregunta de SI o No. DISEÑO DEL CUESTIONARIO El cuestionario que está compuesto por 4 secciones, la primera sección obtiene la información básica del encuestado, como edad y sexo, la segunda sección tiene como contenido la situación estudiantil del encuestado, la tercera sección corresponde a preguntas relacionadas con el problema, y la cuarta sección obtiene la información sobre la posible solución que ofreceremos. DESCRIPCIÓN Y CODIFICACIÓN DE VARIABLES Las variables que se utilizaran en este prototipo serán cuantitativas y cualitativas. 46 DESCRIPCIÓN DE VARIABLES Cuadro 05. Descripción de Variables. # VARIABLE DESCRIPCION Es una variable cuantitativa que obtendrá la 1 Edad información del encuestado en años. Es una variable cualitativa que obtendrá el género 2 Sexo del encuestado. Variable cualitativa que obtendrá la información de la 3 Facultad facultad a encuestada, la que pertenece siendo esta la persona Matemáticas o Administración. Variable cuantitativa que obtendrá información del 4 Semestre nivel de estudio actual del encuestado, información que será de Primero a Octavo Semestre. Variable cualitativa que obtiene la frecuencia con la 5 Ingreso_Solicitud que el encuestado ha realizado solicitudes en sus correspondientes Facultades. Variable cualitativa que indica la manera como se 6 Tipo_Solicitud lleva a cabo el proceso de solicitudes en las respectivas facultades del encuestado. Variable cuantitativa que obtiene el valor del 7 tiempo que demora el proceso actual de ingreso de Tiempo_Solicitud solicitudes en las facultades respectivas de cada encuestado, medido en días. Variable cualitativa que obtiene la frecuencia con la 8 que las secretarias de sus respectivas facultades Perdida_Solicitud les hayan perdido la hoja de solicitud al encuestado. Variable cualitativa que obtiene información sobre 9 Acuerdo_Solicitud qué tan de acuerdo está el encuestado sobre el proceso actual de ingreso de solicitudes en sus 47 respectivas facultades. Variable cualitativa que obtiene información sobre 10 Peticion_Certificado la frecuencia con la que el encuestado realiza peticiones de certificados en su respectiva facultad. Variable cualitativa que obtiene el tipo de proceso 11 que se lleva actualmente en la respectiva facultad Tipo_Certificado del encuestado, siendo las opciones, manual o vía web. Variable cualitativa que obtiene información sobre 12 qué tan de acuerdo está el encuestado sobre el Acuerdo_Certificado proceso actual de emisión de certificados que se lleva a cabo en su respectiva facultad. Variable cualitativa que obtiene información sobre 13 Automatizar_Tramite s si el encuestado está o no de acuerdo con automatizar el proceso de ingreso de solicitudes y petición de certificados. Variable cualitativa que obtiene información sobre 14 Cert_Digital qué tan de acuerdo está el encuestado en recibir sus solicitudes de manera digital. Variable cualitativa que obtiene información sobre 15 qué tan de acuerdo está el encuestado sobre Solic_Web realizar las solicitudes desde la página web de la carrera sin necesidad de salir de su casa. Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. 48 CODIFICACIÓN DE VARI ABLES Variable Edad 1. ¿Cuál es su edad? Cuadro 06. Variable Edad. Descripción [18 - 21) Valor 1 [22 - 25) 2 [26- 29) 3 [30- 33] 4 [34- 35] 5 Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Variable Sexo 2. Sexo: Cuadro 07. Variable Sexo Descripción Valor Masculino 1 Femenino 2 Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Variable Facultad 3. ¿A qué facultad pertenece? Cuadro 08. Variable Facultad Descripción Valor Matemáticas 1 Administración 2 Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. 49 Variable Semestre 4. ¿A qué semestre pertenece? Cuadro 09. Variable Semestre Descripción Primero Valor 1 Segundo 2 Tercero 3 Cuarto 4 Quinto 5 Sexto 6 Séptimo 7 Octavo 8 Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Variable Ingreso_Solicitud 5. ¿Con que frecuencia usted realiza ingreso de solicitudes? Cuadro 10. Variable Ingreso_Solicitud Valor Descripción 1 Siempre 2 Casi Siempre 3 Frecuentemente 4 Rara Vez 5 Nunca Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Variable Tipo_Solicitud 6. El proceso de ingreso de Solicitudes que usted realiza es: Cuadro 11. Variable Tipo_Solicitud Descripción Valor Manual 1 Automatizado 2 Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. 50 Variable Perdida_Solicitud 8. ¿Con que frecuencia se le han perdido las solicitudes a las secretarias después de usted habérselas entregado? Cuadro 12. Variable Perdida_Solicitud Valor Descripción 1 Siempre 2 Casi Siempre 3 Frecuentemente 4 Rara Vez 5 Nunca Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Variable Acuerdo_Solicitud 9. ¿Está usted de acuerdo con el actual proceso ingreso de Solicitudes? Cuadro 13. Variable Acuerdo_Solicitud Valor Descripción 1 Totalmente De Acuerdo 2 Parcialmente De Acuerdo 3 Ni De Acuerdo Ni Desacuerdo 4 Parcialmente En Desacuerdo 5 Totalmente En Desacuerdo Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Variable Peticion_Certificado 10. ¿Con que frecuencia usted realiza peticiones de certificados? Cuadro 14. Variable Peticion_Solicitud Valor 1 2 3 Descripción Siempre Casi Siempre Frecuentemente 51 4 Rara Vez 5 Nunca Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Variable Tipo_Certificado 11. El proceso de petición de Certificados que usted realiza es: Cuadro 15. Variable Tipo_Certificado Descripción Valor Manual 1 Via Web 2 Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Variable Acuerdo_Certificado 12. ¿Qué tan de acuerdo está usted con el actual proceso de emisión de certificados? Cuadro 16. Variable Acuerdo_Certificado Valor Descripción 1 Totalmente De Acuerdo 2 Parcialmente De Acuerdo 3 Ni De Acuerdo Ni Desacuerdo 4 Parcialmente En Desacuerdo 5 Totalmente En Desacuerdo Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Variable Automatizar_Tramites 13. ¿Está usted de acuerdo con la creación de un proceso automatizado de ingreso de solicitudes y petición de certificados? Cuadro 17. Variable Automizar_Tramites Descripción Valor No 1 Si 2 Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. 52 Variable Cert_Digital 14. ¿Estad usted de acuerdo con recibir los certificados de manera digital? Cuadro 18. Variable Cert_Digital Valor Descripción 1 Totalmente De Acuerdo 2 Parcialmente De Acuerdo 3 Ni De Acuerdo Ni Desacuerdo 4 Parcialmente En Desacuerdo 5 Totalmente En Desacuerdo Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Variable Solic_Web 15. ¿Qué tan de acuerdo está usted en realizar las solicitudes desde la página web de la carrera sin necesidad de salir de su casa? Cuadro 19. Variable Solic_Web Valor Descripción 1 Totalmente De Acuerdo 2 Parcialmente De Acuerdo 3 Ni De Acuerdo Ni Desacuerdo 4 Parcialmente En Desacuerdo 5 Totalmente En Desacuerdo Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. 53 INTERPRETACIÓN Y ANÁLISIS DE LOS RESULTADOS Análisis Univariado De Los Datos Cuantitativos Metodologías estadísticas Se ha tomado en consideración realizarlo mediante procedimientos y técnicas estadísticas tales como, Estadística Descriptiva Univariada, Bivariado Estadística Descriptiva Univariada Se llama univariada cuando de cada elemento en estudio se toma una sola variable. Por ejemplo se estudian personas y se toma solo su edad. La Estadística que se aplicará será la univariada en contraposición a la multivariada que aparece cuando se toma más de una variable por elemento del universo. VARIABLE: EDAD DEL ENTREVISTADO Cuadro 20. Tabla de Frecuencia - Edad Frecuencia Frecuencia Absoluta Relativa [18 – 21] 35 9,28% [22 – 25] [26 - 29] [30 - 33] [34 - 35] Total 118 112 84 28 377 31,30% 29,71% 22,28% 7,43% 100% Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. 54 Gráfico 03. Histograma de Frecuencia Relativa - Edad Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Cuadro 21. Análisis Estadístico - Edad EDAD Media 2,87 Mediana 3,00 Moda 2 Desviación estándar 1,091 Varianza 1,191 Asimetría ,168 Curtosis -,723 Rango 4 Mínimo 1 Máximo 5 Cuartiles 25% 2 50% 3 75% 4 Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. 55 Gráfico 04. Diagrama de Cajas y Bigotes - Edad Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Análisis: De una muestra de 377 estudiantes de la facultad de Matemáticas y Administración encuestados al azar, observamos una edad promedio de 25.89 años, una mediana de 26 años y una moda de 26 años, analizando estos valores podemos observar que la edad que más se repite es la de 26 años, con respecto al valor máximo, 17 años, y valor mínimo, 35 años, obtenemos un rango de 18 años entre los encuestados, con una desviación estándar de 5,44 lo que indica la distancia desde la media 25.89 +- 5.44 a cada punto de la curva. Analizando la Curtósis, podemos observar que es menor a 0, lo que nos indica que la curva de Gauss es poco elevada, es decir tiene una distribución platicurtica. Analizando el diagrama de cajas o Bigotes, podemos observar Con el valor de asimetría positivo podemos llegar a la conclusión que es una distribución simétrica con tendencia hacia el lado derecho, lo cual da a entender que la mayoría de las edades están distribuidas del lado izquierdo. 56 VARIABLE: SEMESTRE DEL ENTREVISTADO Cuadro 22. Tabla de Frecuencia - Semestre Frecuencia Frecuencia Semestre Absoluta Relativa 1er 50 13,3% 2do 3ero 4to 5to 6to 7mo 8vo Total 59 46 37 39 59 42 45 377 15,6% 12,2% 9,8% 10,3% 15,6% 11,1% 11,9% 100% Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Gráfico 05. Histograma de Frecuencia Relativa - Semestre Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Cuadro 23. Análisis Estadístico - Semestre SEMESTRE Media 4,40 Mediana 4,00 57 2a Moda Desviación estándar 2,333 Varianza 5,442 Asimetría ,044 Curtosis -1,319 Rango 7 Mínimo 1 Máximo 8 Percentiles 25% 2 50% 4 75% 6 Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Gráfico 06. Diagrama de Cajas y Bigotes - Semestre Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Análisis: De la muestra de 377 encuestados tomados aleatoriamente en la universidad, podemos observar que para el primer semestre corresponden al 13.3% de la muestra, para segundo semestre 15.6%, para tercer semestre 12.2%, para cuarto semestre 9.8%, quinto semestre 10.3%, sexto semestre 15.6%, séptimo semestre corresponde al 11.1% y finalmente para octavo semestre obtuvimos el 11.9% de los encuestados, dándonos como conclusión que la mayoría de los encuestados estaban en sexto semestre. 58 VARIABLE: TIEMPO_SOLICITUD Cuadro 24. Tabla de Frecuencia - Tiempo_Solicitud Frecuencia Frecuencia DIAS Absoluta Relativa <= 1 31 8,2 2–5 109 28,9 6–9 92 24,4 10 - 13 42 11,1 14+ 103 27,3 Total 377 100,0 Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Gráfico 07. Histograma de Frecuencia Relativa - Tiempo_Solicitud Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Cuadro 25. Análisis Estadístico - Tiempo_Solicitud Tiempo_Solicitud Media 3,20 Mediana 3,00 Moda 2 Desviación estándar 1,336 Varianza 1,785 Asimetría ,106 59 Curtosis Rango Mínimo Máximo Cuartiles -1,287 4 1 5 25% 2 50% 3 75% 5 Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Gráfico 08. Diagrama de Cajas y Bigotes - Tiempo_Solicitud Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Análisis: Analizando el grafico podemos observar que la moda obtenida es de 1 día de tiempo de espera para que le atiendan las solicitudes, pero solo corresponde a un 8.2% de la muestra que equivalen a 31 estudiantes, de acuerdo al cuadro relacional, observamos que existe una media 7.81 días, y una mediana de 8 días, lo que nos indica que el proceso actual en ambas facultades no es óptimo, también obtuvimos la cantidad máxima de días de espera que es de 15 días, y la mínima de 1 día en el mejor de los casos. Podemos observar una curtosis negativa, lo que nos indica que la curva de Gauss tiene una picudez muy baja, lo que indica que la mayor cantidad de datos están cerca al cero. 60 ANÁLISIS UNIVARIADO DE LOS DATOS CUALITATIVOS VARIABLE: SEXO DEL ENCUESTADO Cuadro 26. Tabla de Frecuencia - Sexo Frecuencia Frecuencia Absoluta Relativa MASCULINO 205 54,4% FEMENINO 172 45,6% Total 377 100% Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Gráfico 09. Frecuencia Relativa - Sexo Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Análisis: Para esta variable cualitativa podemos observar en la tabla, el 54.4% corresponde a encuestados del sexo masculino, lo que equivale a 205 estudiantes, y el 45.6% corresponde a encuestados del sexo femenino, con 172 estudiantes, concluyendo así que se obtuvo mayor apertura a la encuesta de parte de los estudiantes de sexo masculino, aunque la diferencia entre ambos es mínima. 61 VARIABLE: FACULTAD DEL ENTREVISTADO Cuadro 27. Tabla de Frecuencia - Facultad Frecuencia Frecuencia Absoluta Relativa MATEMATICAS 203 53,8% ADMINISTRACION 174 46,2% Total 377 100% Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Gráfico 10. Frecuencia Relativa - Facultad Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Análisis: Para esta variable cualitativa podemos observar en la tabla, el 53.8% corresponde a encuestados de la Facultad de Matemáticas, lo que equivale a 203 estudiantes, y el 46.2% corresponde a encuestados de la facultad de Administración, con 174 estudiantes, de manera que con un porcentaje casi igual, los encuestados en su mayoría fueron de la facultad de Matemáticas. 62 VARIABLE: INGRESO_SOLICITUD Cuadro 28. Tabla de Frecuencia - Ingreso_Solicitud Frecuencia Frecuencia Absoluta Relativa SIEMPRE 54 14,3% CASI SIEMPRE 76 20,2% FRECUENTEMENTE 83 22% RARA VEZ 75 19,9% NUNCA 89 23,6% Total 377 100% Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Gráfico 11. Frecuencia Relativa - Ingreso_Solicitud Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Análisis: De la muestra de 377 encuestados tomados aleatoriamente en la universidad, podemos observar que el mayor porcentaje equivalente al 23.6% nunca han realizado un proceso de solicitudes, el porcentaje menor que equivale al 14.3% siempre realizan procesos de solicitudes. 63 VARIABLE: TIPO_SOLICITUD Cuadro 29. Tabla de Frecuencia - Tipo_Solicitud Frecuencia Frecuencia Absoluta Relativa MANUAL 372 98,7% AUTOMATIZADO 5 1,3% Total 377 100% Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Gráfico 12. Frecuencia Relativa - Tipo_Solicitud Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Análisis: La tabla de frecuencia relativa de la variable Tipo_Solicitud indica que un 98.7% de la muestra de 377 que corresponde a 372 estudiantes encuestados, realizan sus solicitudes de manera manual actualmente, mientras que se obtuvo el 1.3% de datos aberrantes que indican que realizan el proceso de manera automatizada. 64 VARIABLE: PERDIDA_SOLICITUD Cuadro 30. Tabla de Frecuencia - Perdida_Solicitud Frecuencia Frecuencia FRECUENCIA Absoluta Relativa SIEMPRE 58 15,4% CASI SIEMPRE 83 22,0% FRECUENTEMENTE 80 21,2% RARA VEZ 84 22,3% NUNCA 72 19,1% Total 377 100% Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Gráfico 13. Frecuencia Relativa - Perdida_Solicitud Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Análisis: El grafico de frecuencia relativa de la variable Perdida_Solicitud indica con qué frecuencia a los estudiantes encuestados se les han perdido las solicitudes en manos de las secretarias, esto nos indica que el proceso actual es desordenado, al punto tal que los estudiantes deben perder mucho tiempo realizando más de una vez el proceso. 65 VARIABLE: ACUERDO_SOLICITUD Cuadro 31. Tabla de Frecuencia - Acuerdo_Solicitud Frecuenci Frecuenci a Absoluta a Relativa TOTALMENTE DE ACUERDO 67 17,8 PARCIALMENTE DE ACUERDO 72 19,1 NI DE ACUERDO NI DESACUERDO 69 18,3 PARCIALMENTE EN DESACUERDO 89 23,6 TOTALMENTE EN DESACUERDO 80 21,2 Total 377 100,0 Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Gráfico 14. Frecuencia Relativa - Acuerdo_Solicitud Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Análisis: La encuesta de la variable Acuerdo_Solicitud indica que tan de acuerdo están los estudiantes encuestados con respecto al proceso actual de ingreso de solicitudes. Se observa un 17.8% de estudiantes que están totalmente de acuerdo con el proceso actual, lo que corresponde a 67 estudiantes de 377. 66 VARIABLE: PETICION_CERTIFICADO Cuadro 32. Tabla de Frecuencia - Peticion_Certificado Frecuencia Frecuencia FRECUENCIA Absoluta Relativa SIEMPRE 66 17,5% CASI SIEMPRE 78 20,7% FRECUENTEMENTE 71 18,8% RARA VEZ 74 19,6% NUNCA 88 23,3% Total 377 100% Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Gráfico 15. Frecuencia Relativa - Peticion_Certificado Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Análisis: El grafico de Frecuencia relativa de la variable Peticion_Certificado indica la frecuencia con la que los estudiantes encuestados realizan el proceso de petición de certificados. De los cuales se observa que 88 estudiantes nunca han realizado este proceso, mientras que 289 estudiantes lo han realizado por lo menos una vez. 67 VARIABLE: TIPO_CERTIFICADO Cuadro 33. Tabla de Frecuencia - Tipo_Certificado Frecuencia Frecuencia Absoluta Relativa MANUAL 194 51,5% VIA WEB 183 48,5% Total 377 100% Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Gráfico 16. Frecuencia Relativa - Tipo_Certificado Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Análisis: La variable Tipo_Certificado indica que los estudiantes realizan su proceso de petición de certificados actualmente de manera manual y vía web, donde se presume que los estudiantes que realizan vía web que corresponde al 51.5% de la muestra de 377 estudiantes, son de la Facultad de Administración donde el proceso es semi automático, mientras que los que realizan el proceso de manera manual son estudiantes de la Faculta de Matemáticas. 68 VARIABLE: ACUERDO_CERTIFICADO Cuadro 34. Tabla de Frecuencia - Acuerdo_Certificado FRECUENCIA TOTALMENTE DE ACUERDO Frecuencia Frecuencia Absoluta Relativa 86 22,8% PARCIALMENTE DE ACUERDO NI DE ACUERDO NI DESACUERDO 69 80 18,3% 21,2% PARCIALMENTE EN DESACUERDO TOTALMENTE EN DESACUERDO 69 73 18,3% 19,4% 377 Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. 100% Total Gráfico 17. Frecuencia Relativa - Acuerdo_Certificado Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Análisis: El grafico de frecuencia relativa de la variable Acuerdo_Certificado indica que tan de acuerdo están los estudiantes encuestados con respecto al proceso actual de emisión de Certificados que se llevan a cabo en la Facultad de Matemáticas y Administración. Donde se puede observar un 22.8% de estudiantes que están totalmente de acuerdo con el proceso actual, lo cual nos indica que hay estudiantes conformes con el proceso semi-automatizado, y no ven la necesidad de mejorar este proceso, mientras que 291 estudiantes encuestados de la muestra de 377 no están totalmente de acuerdo con el proceso actual. 69 VARIABLE: AUTOMATIZAR_TRAMITES Cuadro 35. Tabla de Frecuencia - Automatizar_Tramites Frecuencia Frecuencia Absoluta Relativa 377 100% SI NO Total 0 377 Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. 0% 100% Gráfico 18. Frecuencia Relativa - Automatizar_Tramites Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Análisis: En la encuesta a los estudiantes, la variable Automatizar_Tramites nos indica que el 100% de los estudiantes están de acuerdo con automatizar completamente este proceso de emisión de certificados. 70 VARIABLE: CERT_DIGITAL Cuadro 36. Tabla de Frecuencia - Cert_Digital Frecuencia Frecuencia FRECUENCIA Absoluta Relativa TOTALMENTE DE ACUERDO 69 18,3% PARCIALMENTE DE ACUERDO NI DE ACUERDO NI DESACUERDO 69 92 18,3% 24,4% PARCIALMENTE EN DESACUERDO TOTALMENTE EN DESACUERDO 74 73 19,6% 19,4% 377 Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. 100% Total Gráfico 19. Frecuencia Relativa - Cert_Digital Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Análisis: La variable Cert_Digital indica que tan de acuerdo están los estudiantes encuestados con respecto a recibir sus certificados de manera digital, donde se encuentra un 19.3% de la muestra indicaron que están totalmente en desacuerdo, ya que necesitan sus certificados de manera física para su trabajo o currículo, etc. 71 VARIABLE: SOLIC_WEB Cuadro 37. Tabla de Frecuencia - Solic_Web Frecuencia Frecuencia FRECUENCIA Absoluta Relativa TOTALMENTE DE ACUERDO 72 19,1% PARCIALMENTE DE ACUERDO 83 22,0% NI DE ACUERDO NI DESACUERDO 69 18,3% PARCIALMENTE EN DESACUERDO 68 18,0% TOTALMENTE EN DESACUERDO 85 22,5% Total 377 100% Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Gráfico 20. Frecuencia Relativa Var. Solic_Web Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Análisis: La variable Solic_Web nos indica que tan de acuerdo están los estudiantes encuestados en realizar el proceso de Tramites vía web, donde se puede observar un 19.1% de los encuestados que no están totalmente de acuerdo, ya que opinan que sus solicitudes nunca serán atendidas. 72 ANÁLISIS BIVARIADO DE LAS VARIABLES CUALITATIVAS TABLAS CRUZADAS Y ANÁLISIS DE CONTINGENCIA Estadística Descriptiva Bivariado Según Dr. José Supo (2012), representa el análisis bivariado más básico con una variable fija y una variable aleatoria. Su finalidad es identificar las diferencias entre los grupos participantes; se puede comparar dos o más grupos. La comparación inicial es a dos colas; si hay varios grupos la variable de agrupación debe dicotomizarse y complementarse con un test de una sola cola. Estadísticos de prueba: Si variable aleatoria es categórica se usa Chi cuadrado de homogeneidad y si la variable aleatoria es numérica t de Student para grupos independientes. Ho: No existen diferencias entre los grupos evaluados. H1: Existen diferencias entre los grupos evaluados.” (Dr. José Supo, 2012) En el análisis bivariado se va analizar dos variables cualitativas para obtener el grado de dependencia lineal que tienen entre sí, realizando el cálculo de chicuadrado, para determinar la hipótesis nula planteada Ho, podemos encontrar si se rechaza o se acepta la hipótesis planteada. El análisis de la variable se realizara solo si su valor P es menor a 0.05. En este análisis se va a realizar tablas Cruzadas y Análisis de contingencia. SEXO VS TIPO_CERTIFICADO Cuadro 38. Tabla Cruzada Sexo Vs Tipo_Certificado SEXO TIPO_CERTIFICADO MASCULIN O MANUAL VIA WEB Total FEMENIN O 92 Total 102 194 113 70 205 172 Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. 183 377 Cuadro 39. Pruebas de chi-cuadrado Sexo Vs Tipo_Certificado X2 Chi-cuadrado de Pearson 7,790 gl P N 1 ,005 377 73 Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Gráfico 21. Barras de Tablas Cruzadas Sexo Vs Tipo_Certificado Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Ho: Los criterios de las variables Sexo y Tipo_Certificado son independientes entre sí. H1: Los criterios no son independientes. Análisis: Se realizó la relación de las variables tipo_certificado vs Sexo, el cuadro 38 muestra que p= 0.005, por lo que es menor a 0.5, se rechaza H0, se acepta H1 lo que demuestra que las dos variables son dependientes entre sí. ACUERDO_SOLICITUD VS TIPO_SOLICITUD Cuadro 40. Tabla Cruzada Acuerdo_Solicitud Vs Tipo_Solicitud MANUAL AUTOMATIZADO total 67 Totalmente De Acuerdo Parcialmente De Acuerdo 71 69 Ni De Acuerdo Ni Desacuerdo 89 Parcialmente En Desacuerdo 76 Totalmente En Desacuerdo 372 Total Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. 0 1 0 0 4 5 67 72 69 89 80 377 74 Cuadro 41. Pruebas de chi-cuadrado Tipo_Solicitud Vs Acuerdo_Solicitud 2 X Chi-cuadrado de Pearson gl a 11,277 P 4 ,024 Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Gráfico 22. Barras de Tablas Cruzadas Tipo_Solicitud Vs Acuerdo_Solicitud Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Ho: Los criterios de las variables Sexo y Tipo_Certificado son independientes entre sí. H1: Los criterios no son independientes. Análisis: En el análisis Bivariado de las variables Tipo_Solicitud y Acuerdo_Solicitud, se contempló que el valor P es 0.024, siendo menor a 0.5, lo cual indica que se rechaza Ho en favor de H1. Y se observar que las variables son dependientes. 75 DIAGNOSTICO ACTUAL DE LA ORGANIZACIÓN La facultad de Administración en la actualidad maneja un sistema semiautomatizado del proceso de solicitudes, y un proceso manual de emisión de certificados. Los estudiantes de la facultad de administración deben ir personalmente a las ventanillas de secretaria de cada carrera correspondiente, donde no solo se atienden procesos de solicitudes sino también de otros procesos correspondientes a temas educativos como administrativos, las cuales no siempre están para brindar una atención ágil y amable. Los estudiantes deben ingresar a la página web de la facultad y mediante su usuario y clave deben realizar la solicitud que necesiten, pero en la página web no realizan ninguna consulta a la base de datos, solo es un ingreso sencillo de una solicitud, y después deberán acercarse directamente a la facultad a retirarla, si es que esta lista, la cual de igual modo que un proceso manual, demora hasta que esta sea atendida por algún personal administrativo. Los estudiantes de la facultad de matemáticas, tienen dos instalaciones en dos ubicaciones diferentes, una está ubicada en la ciudadela universitaria, donde se aloja la carrera de Ingeniería Civil, la otra está ubicada en el centro de la ciudad de Guayaquil que atiende a los estudiantes de las carreras de Ingeniería en Sistemas Computacionales, e Ingeniería en Networking, lugar donde habita el tráfico a toda hora del día, lo cual para una gran cantidad de estudiantes es una molestia ya que les toma demasiado tiempo en llegar. El proceso en ambas instalaciones de la facultad de matemáticas es manual, los estudiantes deben imprimir una solicitud donde indicarían los requerimientos que necesitan solicitar, así mismo como los certificados que deseen que les emitan, luego de esto los estudiantes deberán esperar un plazo no establecido para retirarlo, el cual dependiendo del tipo de solicitud puede demorar hasta 15 días o más en ser atendido. 76 ANALISIS DE PROCESOS En ambas facultades el proceso de solicitudes y certificados no es óptimo, ya que los estudiantes pierden tiempo y dinero, por tal motivo se realizó este proyecto del módulo de Solicitudes y Certificados del prototipo de Sistema Académico de las Facultades de Administración y Matemáticas. SOLICITUDES Los estudiantes no deberían acercarse a las instalaciones de la Universidad para realizar un proceso que puede ser atendido de manera automatizada, mediante un módulo especializado solo para atender estas dos opciones, las cuales se denominan trámites. 77 CERTIFICADOS Los estudiantes actualmente deben hacer fila en las instalaciones de sus facultades respectivas, y esperar mucho tiempo para ser atendidos, muchas veces les niegan la solicitud a los estudiantes después de haber esperado por horas en la fila, lo cual genera indignación y malestar para el personal estudiantil. 78 PROPUESTAS DE MEJORAS DE PROCESOS Se propone realizar un módulo para el prototipo de Sistema Académico de la Universidad de Guayaquil que atienda solicitudes y certificados que los estudiantes requieran, denominado Trámites, el cual tendrá dos perfiles principales, uno es para los estudiantes donde los estudiantes podrán realizar el trámite requerido, y el otro perfil es de administrador, donde la persona encargada atiende dichos tramites. SOLICITUDES Los estudiantes tendrán disponibles las siguientes opciones de solicitudes: Inclusión de Materias Dejar sin efecto una Materia Cambio de Paralelo Cambio de Jornada Cambio de Modalidad Cambio de Veces Anulación de Matricula Inscripción por Tercera Vez Inclusión de Materias Para realizar esta solicitud los estudiantes tendrán a su disposición un listado de todas las materias que puede incluir en el periodo actual, evitando así perder tiempo realizando solicitudes de inclusión de materias que no debe ver, según los reglamentos de la Universidad, ya sean estos por flujo, por superar el número de semestres permitido entre materias, o por cruce de horarios. Los estudiantes tendrán acceso a realizar solicitudes de materias sin cupo, se tomó esta decisión porque hay la posibilidad dependiendo del número de solicitudes existentes, de que las autoridades tomen decisiones de abrir un nuevo paralelo para dicha materia sin cupo en el mismo horario, lo cual es denominado clonación de paralelos. 79 Dejar sin efecto una Materia Los estudiantes tendrán la capacidad de dejar sin efecto una materia, o comúnmente llamado anulación de materias, en esta pantalla el estudiante podrá escoger las materias inscritas en el periodo actual, y solicitar su anulación sin necesidad de enviar algún justificativo. Los estudiantes tendrán restricciones al solicitar la anulación de las materias que este viendo por 2da vez, según el reglamento de la universidad de Guayaquil, ningún estudiante podrá dejar sin efecto una materia por 2da vez, por tal motivo el modulo evita perder tiempo al estudiante como al personal administrativo encargado de procesar las solicitudes. Cambio de Paralelo Esta opción incluye los dos procesos anteriores en uno solo, evitando así realizar dos solicitudes al estudiante que requería realizar el cambio del paralelo de una misma materia inscrita, con las mismas restricciones de los procesos anteriores, a excepción de las materias por segunda vez, que en este caso si está permitido realizar solicitud de cambio de paralelo. Cambio de Jornada Para este tipo de solicitud el estudiante podrá realizar el cambio de la jornada del periodo actual, esta opción es validad para la facultad de Administración, que manejan su inscripción por jornada, ya sean estas matutinas, vespertinas y nocturnas. El estudiante al realizar la solicitud de cambio de jornada, no tendrá la posibilidad de solicitar algún curso específico, el sistema asignara el curso que tenga menos estudiantes registrados en la jornada solicitada por el estudiante. Cambio de Modalidad Se propone esta opción de cambio de modalidad como una opción abierta para la Facultad que lo requiera, en esta opción se presentará 2 tipos de modalidad: Presencial Distancia. 80 Cambio de Veces Se propone esta opción de cambio de veces, para los estudiantes que requieran solicitar un reclamo por tener una materia por 2da vez, cuando su situación actual no es así, o por tener materias por 3era vez por no haber realizado una solicitud de dejar sin efecto dicha materia anteriormente. El estudiante tiene la posibilidad de enviar un justificativo que permita al administrador poder aceptar la solicitud de cambio de vez. Anulación de Matricula Los estudiantes tendrán la opción de dejar sin efecto todas las materias inscritas en el periodo lectivo, hasta un mes y medio después del comienzo de las matriculas del periodo actual, al realizar esta solicitud el sistema automáticamente anulara la inscripción, y se enviará al módulo de pagos la notificación de no emitir una orden de pago, o si ya está emitida, anularla para evitar tener deudas pendientes inexistentes. Inscripción por Tercera Vez Se propone la opción de Solicitud de Inscripción por tercera vez para los estudiantes que no tengan la posibilidad de matricularse al periodo lectivo actual por tener una o más materias por tercera vez, según la Resolución CU 42-04-14 de la universidad, especificado en el marco legal, se puede permitir la matriculación por tercera vez a los estudiantes que cumplan con las siguientes excepciones: a) Calamidad doméstica debidamente comprobada. b) Enfermedad debidamente comprobada con certificado médico del IESS o del Ministerio de Salud Pública. c) Maternidad: segundo y tercer trimestre de gestación, embarazo patológico y puerperio inmediato. d) Problemas académicos y administrativos no imputables al estudiante. e) Cuando no se hayan asentado calificaciones en la materia al menos en una de las dos matriculas anteriores f) Si un estudiante por representar deportiva, cultural y científicamente a la Institución o a alguna institución del país hubiese perdido una matrícula en la materia en cuestión. 81 g) Si el estudiante presenta un registro de asistencia general igual o superior al 75% durante toda la carrera. h) Si el estudiante presenta un promedio general igual o superior al 8.5 en el ciclo inmediato anterior. i) Si el estudiante presenta un promedio general igual o superior al 7,5 durante toda la carrera. j) Si el estudiante presenta un certificado laboral que demuestre el impedimento para asistir normalmente a clases en la materia que perdió la segunda matricula, k) Si el estudiante ha debido salir del país o a otra ciudad a capacitarse laboralmente. l) Que en circunstancias en que la argumentación para obtener tercera matricula no quepa en ninguna de estas excepcionalidades, la solicitud, desde el Decanato que incorpora la solicitud del estudiante, vaya directamente al Vicerrectorado Académico que presentará el informe respectivo, para decisión del H. Consejo Universitario. m) Que el estudiante declare que conoce que es su última oportunidad de estudiar esa materia, que es la tercera matricula, y que sabiendo que es su última oportunidad la va a aprovechar como corresponde Estas excepciones están disponibles a escoger en la pantalla del módulo, donde el estudiante debe adjuntar en formato de imagen la justificación correspondiente, de manera obligatoria. Esta solicitud será procesada por el administrador de manera manual, ya que deberá realizar todas las operaciones correspondientes a este caso, como análisis e investigación de la situación. El estudiante podría ser solicitado en las instalaciones de la Facultad correspondiente para tratar de manera más personal el caso. 82 MAPA DE PROCESOS El mapa de procesos es la representación gráfica de los procesos que están presentes en una organización, mostrando la relación entre ellos y sus relaciones con el exterior. MAPA DE PROCESOS SOLICITUDES El siguiente mapa de procesos representa el proceso actual que se lleva a cabo en la Facultad de Ciencias Matemáticas y Físicas, y en la Facultad de Ciencias Administrativas. Gráfico 23. Mapa de Procesos de Solicitudes Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. 83 PANTALLAS MODULO TRAMITES Pantalla principal de ingreso de trámites, para el perfil de estudiante. Tipos de Tramites Puede seleccionar el tipo de trámite deseado. Certificados 84 Se despliegan los diferentes tipos de certificados para seleccionar. Bandeja de trámites ingresados Una vez ingresado el trámite lo puede revisar en la bandeja del estudiante. 85 Dejar sin efecto una materia Se le presentan las materias inscritas en el periodo actual, de los cuales podrá escoger una materia para dejarla sin efecto. Cambio de modalidad Se despliega las diferentes modalidades para seleccionar. 86 Cambio de veces Esta opción se deja planteada cuando existen inconvenientes a la hora de anular una materia, y la materia queda como 2da o 3era vez, el estudiante podrá solicitar la materia que tiene un número de vez que no representa a la situación real, y podrá solicitar su cambio. Inscripción por tercera vez Para realizar una solicitud de inscripción por tercera vez se despliegan las excepciones disponibles según la ley, para seleccionarla. 87 Luego el estudiante deberá ingresar un justificativo de dicha excepción. Y finalmente se ingresa la solicitud. 88 Cambio de jornada El estudiante puede realizar la solicitud de cambio de jornada si la facultad lo permita, se deja planteada esta solicitud por el levantamiento de información que se realizó en la facultad de Ciencias Administrativas. 89 DESARROLLO DE SOFTWARE /******************************************************************************************************** * Clase : IngresoTramites.java * Autor : Marlon Israel Carangui Herrera * Descripción : Clase principal de la pantalla de la opción Genera Tramite, IngresoTramites.zul, * del modulo Tramites del Sistema Academico, * contiene metodos que cargan materias inscritas, * paralelos de cada materia seleccionada, tipos de tramites, solicitudes, certificados, * validaciones correspondientes de acuerdo a la ley estudiantil. * Creación : 10/06/2015 *********************************************************************************************************/ package ug.sistema.academico.controladores.tramites; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.Sessions; import org.zkoss.zk.ui.event.UploadEvent; import org.zkoss.zk.ui.select.SelectorComposer; import org.zkoss.zk.ui.select.annotation.Listen; import org.zkoss.zk.ui.select.annotation.Wire; import org.zkoss.zul.Button; import org.zkoss.zul.Combobox; import org.zkoss.zul.Div; import org.zkoss.zul.Image; import org.zkoss.zul.Listbox; import org.zkoss.zul.Messagebox; import org.zkoss.zul.Textbox; import org.zkoss.zul.Window; import ug.sistema.academico.service.ruteador.IRuteadorSRV; import ug.sistema.academico.service.ruteador.RuteadorSOAP; import ug.sistema.clases.ToastMessage; import ug.sistema.clases.TramitesHeaderView; import ug.sistema.libs.Utils; import com.google.gson.Gson; import ec.edu.ug.academico.type.MensajesGenericos; public class IngresoTramites extends SelectorComposer<Component> { private static final long serialVersionUID = 1L; private Utils objUtils,objUtilsConstants; ArrayList<Object> objArrayTransporteParametros; IRuteadorSRV portTramites; @Wire Div pSolcitidudes, pCertificados, btSolicitud, btCertificado, pEmail, divMatInsc, divMatDisp, divParalelo, divVeces, pics, div_upload, divModalidad, divJornada, divExcepciones; @Wire Combobox cmbCertificados, cmbTipoTramite, cmbSolicitudes, cmbExcepciones,cmbParalelos,cmbVeces,cmbJornadas,cmbModalidades; @Wire Window winAdminCertificados; @Wire Textbox objTxtCodPersona,objTxtUsuario,objTxtCedula,objTxtCarrera,objTxtEmail,txtEmail; @Wire Button btnNuevoC, btnNuevoS, btnAnular; @Wire Listbox lstRegistros, lstMatInsc, lstMatDisp; String lv_carrera, lv_userID, lv_mensajeOK, id_excepciones,id_paralelos,id_imagen, id_veces,id_modalidad,id_jornada,id_tramite,id_certificado,id_solicitud, id_matInsc, id_lstMatDisp,id_lstRegistros,email; @Wire Image image; byte[] bFile; 90 /******************************************************************************************************** * Método : doAfterCompose. * Acceso : público. * Descripción : metodo de inicializacion de pantalla * Tipo de retorno : no retorna valor * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 * Modificacion : 19/06/2015 * ********************************************************************************************************/ @Override public void doAfterCompose(Component objComp) { objUtils = new Utils(); objUtilsConstants=new Utils(); try { objUtilsConstants.setProperties("/resources/constants.properties"); objUtils.setProperties("/resources/mensajes.properties"); if ((String) Executions.getCurrent().getAttribute("mainPage") != null) { portTramites =RuteadorSOAP.getIRuteadorSOAP("tramites"); objArrayTransporteParametros=new ArrayList<>(); super.doAfterCompose(objComp); this.setDatosUsuario(); this.getTipoTramite(); this.getSolicitudes(); this.getCertificados(); this.getExcepciones(); this.getRegistros(); //this.getMatInsc(); //this.getMatDisp(); this.getJornada(); //this.getVeces(); this.getModalidad(); } else { Sessions.getCurrent().removeAttribute("objGlobalInformation"); Executions.sendRedirect("../SegLoginForm.zul"); } }catch (Exception e) { System.out.println(getClass() + " " + e.getMessage()); } } /******************************************************************************************************** * Método : setDatosUsuario. * Acceso : Privado. * Descripción : Obtiene datos de la sesion y los almacena en variables, * cedula, carrera, nombre y apellidos del usuario. * Tipo de retorno : no retorna valor * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 * ********************************************************************************************************/ private void setDatosUsuario() throws Exception { objTxtCedula.setValue(objUtils.getInformacionSession().getvStrGlobalIdentificacion()); objTxtCarrera.setValue(objUtils.getInformacionSession().getvStrGlobalNombreCarrera()); objTxtUsuario.setValue(objUtils.getInformacionSession().getvStrGlobalPrimerNombre() +" "+ objUtils.getInformacionSession().getvStrGlobalApellidoPaterno() +" "+ objUtils.getInformacionSession().getvStrGlobalApellidoMaterno()); } /******************************************************************************************************** * Método : getTipoTramite. * Acceso : Privado. * Descripción : Obtiene de la base de datos los tipos de Tramites, * y los guarda en el ComboBox cmbTipoTramite * Tipo de retorno : no retorna valor * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 * ********************************************************************************************************/ private void getTipoTramite() throws Exception { String vStrTraza ="ACTIVO"; objArrayTransporteParametros=new ArrayList<>(); objArrayTransporteParametros.add("HQL_TRAMITES_TIPO_TRAMITE"); objArrayTransporteParametros.add(vStrTraza); objArrayTransporteParametros.add(false); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add(objUtilsConstants.getInformacionSession().getvStrGlobalUserID()); 91 MensajesGenericos objMensGenericos = new Gson().fromJson(portTramites.getGsonFromRoute("tramites", "ug.sistema.academico.bo.tramites.IngresoTramitesBO","getTipoTramite", new Gson().toJson(objArrayTransporteParametros), objUtilsConstants.getInformacionSession().getvStrGlobalUserID()),MensajesGenericos.class); if (objMensGenericos.getvStrCode().equals(objUtils.getObjProperties().getProperty("fStrSUCCESS"))) { cmbTipoTramite.getChildren().clear(); if (objMensGenericos.getObjContenido().size() > 1) { int vIntCabecera = 0; for (ArrayList<String> objRegister : objMensGenericos.getObjContenido()) { if (vIntCabecera > 0) { cmbTipoTramite.appendChild(objUtilsConstants.getComboItem(objRegister)); } vIntCabecera++; } } } else { ToastMessage.showNotify(objMensGenericos.getvStrMessage(),"alertify." + objMensGenericos.getvStrCode()); } } /******************************************************************************************************** * Método : clearAll. * Acceso : Privado. * Descripción : Limpia las selecciones en los comboBox, el textbox Email, * y borra la imagen cargada de justificativo. * Tipo de retorno : no retorna valor * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 * ********************************************************************************************************/ private void clearAll() throws Exception{ cmbExcepciones.setSelectedIndex(-1); cmbParalelos.setSelectedIndex(-1); cmbVeces.setSelectedIndex(-1); cmbJornadas.setSelectedIndex(-1); cmbModalidades.setSelectedIndex(-1); image.setContent((org.zkoss.image.Image) null); txtEmail.setValue(""); } /******************************************************************************************************** * Método : getJornada. * Acceso : Privado. * Descripción : Obtiene de la base de datos las jornadas, y las guarda en el comboBox cmbJornadas. * Tipo de retorno : no retorna valor * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 * ********************************************************************************************************/ private void getJornada() { String vStrTraza ="A"; objArrayTransporteParametros=new ArrayList<>(); objArrayTransporteParametros.add("HQL_TRAMITES_GET_JORNADA"); objArrayTransporteParametros.add(vStrTraza); objArrayTransporteParametros.add(false); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add(objUtilsConstants.getInformacionSession().getvStrGlobalUserID()); MensajesGenericos objMensGenericos = new Gson().fromJson(portTramites.getGsonFromRoute( "Tramites", "ug.sistema.academico.bo.tramites.IngresoTramitesBO", "getJornadas", new Gson().toJson(objArrayTransporteParametros), objUtilsConstants.getInformacionSession().getvStrGlobalUserID()), MensajesGenericos.class); //si la consulta no fue satisfactoria termina proceso if (objMensGenericos.getvStrCode().equals(objUtils.getObjProperties().getProperty("fStrSUCCESS"))) { cmbJornadas.getChildren().clear(); if (objMensGenericos.getObjContenido().size() > 1) { int vIntCabecera = 0; for (ArrayList<String> objRegister : objMensGenericos.getObjContenido()) { if (vIntCabecera > 0) { 92 cmbJornadas.appendItem(objRegister.get(1)).setValue(objRegister.get(0)); } vIntCabecera++; } } } else { ToastMessage.showNotify(objMensGenericos.getvStrMessage(),"alertify." + objMensGenericos.getvStrCode()); } } /******************************************************************************************************** * Método : getModalidad. * Acceso : Privado. * Descripción : Guarda en el comboBox las modalidades propuestas. * Tipo de retorno : no retorna valor * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 *********************************************************************************************************/ private void getModalidad() { cmbModalidades.appendItem("PRESENCIAL").setValue("E337BA1A-736F-4A59-8DD5460F9F60BC6B"); cmbModalidades.appendItem("DISTANCIA").setValue("E337BA1A-736F-4A59-8DD5-460F9F60BC6C"); } /******************************************************************************************************** * Método : getParalelos. * Acceso : Privado. * Descripción : Obtiene de la base de datos los paralelos y los almacena en el comboBox cmbParalelos * Tipo de retorno : no retorna valor * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 * ********************************************************************************************************/ private void getParalelos() { setVariables(); //String vStrTraza =vStrIdMateria; objArrayTransporteParametros=new ArrayList<>(); objArrayTransporteParametros.add(""); objArrayTransporteParametros.add(id_matInsc); objArrayTransporteParametros.add(false); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add(objUtilsConstants.getInformacionSession().getvStrGlobalUserID()); System.out.println("mich3"); MensajesGenericos objMensGenericos = new Gson().fromJson(portTramites.getGsonFromRoute( "Tramites", "ug.sistema.academico.bo.tramites.IngresoTramitesBO", "getParalelos", new Gson().toJson(objArrayTransporteParametros), objUtilsConstants.getInformacionSession().getvStrGlobalUserID()), MensajesGenericos.class); System.out.println("mich4 "+objMensGenericos.getvStrCode().toString()); //si la consulta no fue satisfactoria termina proceso if (objMensGenericos.getvStrCode().equals(objUtils.getObjProperties().getProperty("fStrSUCCESS"))) { System.out.println("mich5"); cmbParalelos.getChildren().clear(); System.out.println("mich6"); if (objMensGenericos.getObjContenido().size() > 0) { System.out.println("mich7"); //cmbParalelos.appendItem("si").setValue("vale"); //int vIntCabecera = 0; for (ArrayList<String> objRegister : objMensGenericos.getObjContenido()) { //if (vIntCabecera > 0) { System.out.println("mich8"); 93 cmbParalelos.appendItem(objRegister.get(1)).setValue(objRegister.get(0)); //} // vIntCabecera++; } } } else { ToastMessage.showNotify(objMensGenericos.getvStrMessage(),"alertify." + objMensGenericos.getvStrCode()); } } /******************************************************************************************************** * Método : getMatDisp. * Acceso : Privado. * Descripción : Obtiene de la base de datos todas las materias disponibles * que el estudiante puede escoger para realizar una inclusion, * y las guarda en el ListBox lstMatDisp. * Tipo de retorno : no retorna valor * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 * ********************************************************************************************************/ private void getMatDisp() { String Estado= "A"; String IdPersona = objUtils.getInformacionSession().getvStrGlobalIdPersona(); String vStrSeparador = objUtilsConstants.getObjProperties().getProperty("fStrSeparadorParametros"); String vStrTraza= IdPersona + vStrSeparador + Estado; //vStrTraza=""; objArrayTransporteParametros=new ArrayList<>(); objArrayTransporteParametros.add("HQL_TRAMITES_MATERIAS_INSCRITAS"); objArrayTransporteParametros.add(vStrTraza); objArrayTransporteParametros.add(false); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add(objUtilsConstants.getInformacionSession().getvStrGlobalUserID()); MensajesGenericos objMensGenericos = new Gson().fromJson(portTramites.getGsonFromRoute( "tramites", "ug.sistema.academico.bo.tramites.IngresoTramitesBO", "getMatInsc", new Gson().toJson(objArrayTransporteParametros), objUtilsConstants.getInformacionSession().getvStrGlobalUserID()), MensajesGenericos.class ); lstMatInsc.getChildren().clear(); lstMatInsc.appendChild(TramitesHeaderView.getHeaderMateriasInscritas()); if (objMensGenericos.getvStrCode().equals(objUtils.getObjProperties().getProperty("fStrSUCCESS"))) { if (objMensGenericos.getObjContenido().size() > 1) { int vIntCabecera = 0; for (ArrayList<String> objRegister : objMensGenericos.getObjContenido()) { if (vIntCabecera != 0) { lstMatInsc.appendChild(objUtilsConstants.getListItem(objRegister)); } vIntCabecera++; } } } else { ToastMessage.showNotify(objMensGenericos.getvStrMessage(),"alertify." + objMensGenericos.getvStrCode()); } 94 } /******************************************************************************************************** * Método : getSolicitudes. * Acceso : Privado. * Descripción : Obtiene de la base de datos todas las solicitudes * y las guarda en el comboBox cmbSolicitudes. * Tipo de retorno : no retorna valor * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 * ********************************************************************************************************/ private void getSolicitudes() throws Exception { //String estado ="A"; String tipoTram ="S"; //String vStrSeparador = objUtilsConstants.getObjProperties().getProperty("fStrSeparadorParametros"); String vStrTraza= "ACTIVO"; objArrayTransporteParametros=new ArrayList<>(); objArrayTransporteParametros.add("HQL_TRAMITES_ESPECIFICACION"); objArrayTransporteParametros.add(vStrTraza); objArrayTransporteParametros.add(tipoTram); objArrayTransporteParametros.add(false); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add(objUtilsConstants.getInformacionSession().getvStrGlobalUserID()); MensajesGenericos objMensGenericos = new Gson().fromJson(portTramites.getGsonFromRoute("tramites", "ug.sistema.academico.bo.tramites.IngresoTramitesBO","getEspecificacionTramite", new Gson().toJson(objArrayTransporteParametros), objUtilsConstants.getInformacionSession().getvStrGlobalUserID()),MensajesGenericos.class); if (objMensGenericos.getvStrCode().equals(objUtils.getObjProperties().getProperty("fStrSUCCESS"))) { cmbSolicitudes.getChildren().clear(); if (objMensGenericos.getObjContenido().size() > 1) { int vIntCabecera = 0; for (ArrayList<String> objRegister : objMensGenericos.getObjContenido()) { if (vIntCabecera > 0) { //cmbSolicitudes.appendChild(objUtilsConstants.getComboItem(objRegister)); cmbSolicitudes.appendItem(objRegister.get(1)).setValue(objRegister.get(0)); } vIntCabecera++; } } } else { ToastMessage.showNotify(objMensGenericos.getvStrMessage(), "alertify." + objMensGenericos.getvStrCode()); } } /******************************************************************************************************** * Método : getCertificados. * Acceso : Privado. * Descripción : Obtiene de la base de datos todas los Certificados * y las guarda en el comboBox cmbCertificados. * Tipo de retorno : no retorna valor * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 * ********************************************************************************************************/ private void getCertificados() throws Exception { String tipoTram ="C"; String vStrTraza= "ACTIVO"; objArrayTransporteParametros=new ArrayList<>(); objArrayTransporteParametros.add("HQL_TRAMITES_ESPECIFICACION"); objArrayTransporteParametros.add(vStrTraza); objArrayTransporteParametros.add(tipoTram); objArrayTransporteParametros.add(false); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add(objUtilsConstants.getInformacionSession().getvStrGlobalUserID()); MensajesGenericos objMensGenericos = new Gson().fromJson(portTramites.getGsonFromRoute("Tramites", 95 "ug.sistema.academico.bo.tramites.IngresoTramitesBO","getEspecificacionTramite", new Gson().toJson(objArrayTransporteParametros), objUtilsConstants.getInformacionSession().getvStrGlobalUserID()),MensajesGenericos.class); if (objMensGenericos.getvStrCode().equals(objUtils.getObjProperties().getProperty("fStrSUCCESS"))) { cmbCertificados.getChildren().clear(); if (objMensGenericos.getObjContenido().size() > 1) { int vIntCabecera = 0; for (ArrayList<String> objRegister : objMensGenericos.getObjContenido()) { if (vIntCabecera > 0) { //cmbCertificados.appendChild(objUtilsConstants.getComboItem(objRegister)); cmbCertificados.appendItem(objRegister.get(1)).setValue(objRegister.get(0)); } vIntCabecera++; } } } else { ToastMessage.showNotify(objMensGenericos.getvStrMessage(), "alertify." + objMensGenericos.getvStrCode()); } } /******************************************************************************************************** * Método : getExcepciones. * Acceso : Privado. * Descripción : Obtiene de la base de datos todas las excepciones * y las guarda en el comboBox cmbExcepciones. * Tipo de retorno : no retorna valor * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 * ********************************************************************************************************/ private void getExcepciones() throws Exception { String vStrTraza ="ACTIVO"; objArrayTransporteParametros=new ArrayList<>(); objArrayTransporteParametros.add("HQL_TRAMITES_EXCEPCIONES"); objArrayTransporteParametros.add(vStrTraza); objArrayTransporteParametros.add(false); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add(objUtilsConstants.getInformacionSession().getvStrGlobalUserID()); MensajesGenericos objMensGenericos = new Gson().fromJson(portTramites.getGsonFromRoute("tramites", "ug.sistema.academico.bo.tramites.IngresoTramitesBO","getExcepciones", new Gson().toJson(objArrayTransporteParametros), objUtilsConstants.getInformacionSession().getvStrGlobalUserID()),MensajesGenericos.class); if (objMensGenericos.getvStrCode().equals(objUtils.getObjProperties().getProperty("fStrSUCCESS"))) { cmbExcepciones.getChildren().clear(); if (objMensGenericos.getObjContenido().size() > 1) { int vIntCabecera = 0; for (ArrayList<String> objRegister : objMensGenericos.getObjContenido()) { if (vIntCabecera > 0) { //cmbExcepciones.appendChild(objUtilsConstants.getComboItem(objRegister)); cmbExcepciones.appendItem(objRegister.get(1)).setValue(objRegister.get(0)); } vIntCabecera++; } } } else { ToastMessage.showNotify(objMensGenericos.getvStrMessage(),"alertify." + objMensGenericos.getvStrCode()); } } 96 /******************************************************************************************************** * Método : tipoTramite. * Acceso : Privado. * Descripción : Al realizar una seleccion en el comboBox cmbTipoTramite, * se ocultan botones, comboBox, Divs y TextBoxs, y llama al metodo clearAll. * Tipo de retorno : no retorna valor * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 * ********************************************************************************************************/ @Listen("onChange = #cmbTipoTramite") public void tipoTramite() throws Exception{ //value_s=cmbTipoTramite.getSelectedItem().getValue().toString(); //System.out.println ("value del combobox de Tipo_Tramite: "+ value_s); if (cmbTipoTramite.getSelectedItem().getValue().toString().equals("SOLICITUD")){ pSolcitidudes.setVisible(true); pCertificados.setVisible(false); btSolicitud.setVisible(false); btCertificado.setVisible(false); pEmail.setVisible(false); divMatInsc.setVisible(false); divExcepciones.setVisible(false); divMatDisp.setVisible(false); cmbCertificados.setSelectedIndex(-1); clearAll(); } if (cmbTipoTramite.getSelectedItem().getValue().toString().equals("CERTIFICADO")){ pSolcitidudes.setVisible(false); pCertificados.setVisible(true); btSolicitud.setVisible(false); btCertificado.setVisible(false); pEmail.setVisible(false); divMatInsc.setVisible(false); divExcepciones.setVisible(false); divMatDisp.setVisible(false); divJornada.setVisible(false); divModalidad.setVisible(false); cmbSolicitudes.setSelectedIndex(-1); clearAll(); } } /******************************************************************************************************** * Método : opSolicitudes. * Acceso : Privado. * Descripción : Al realizar una seleccion en el comboBox cmbSolicitudes, * se ocultan botones, comboBox, Divs y TextBoxs, y llama al metodo clearAll. * Tipo de retorno : no retorna valor * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 *********************************************************************************************************/ @Listen("onChange = #cmbSolicitudes") public void opSolicitudes() throws Exception{ lstMatDisp.setSelectedIndex(-1); lstMatInsc.setSelectedIndex(-1); div_upload.setVisible(false); divExcepciones.setVisible(false); divMatDisp.setVisible(false); divMatInsc.setVisible(false); divParalelo.setVisible(false); divVeces.setVisible(false); divModalidad.setVisible(false); divJornada.setVisible(false); cmbSolicitudes.setVisible(false); cmbParalelos.getChildren().clear(); btnAnular.setVisible(false); btSolicitud.setVisible(false); btCertificado.setVisible(false); clearAll(); //inclusion de materia if (cmbSolicitudes.getSelectedItem().getValue().toString().equals("E432AE9C-0EC2-486F-9085-7AB0AD153009")){ divMatInsc.setVisible(true); getMatDisp(); }//dejar sin efecto 97 if (cmbSolicitudes.getSelectedItem().getValue().toString().equals("C64C412F-09DD-47FF-BA05263A2E066740")){ divMatInsc.setVisible(true); getMatInsc(); }//cambio de paralelo if (cmbSolicitudes.getSelectedItem().getValue().toString().equals("894D1727-A507-489D-B1318DDF3BD2017D")){ divMatInsc.setVisible(true); //divParalelo.setVisible(true); getMatInsc(); }//cambio de veces if (cmbSolicitudes.getSelectedItem().getValue().toString().equals("D18853C6-10A4-44E8-997A-86145C5C3C0D")){ divMatInsc.setVisible(true); //divVeces.setVisible(true); getMatInsc2daVez(); }//cambio de modalidad if (cmbSolicitudes.getSelectedItem().getValue().toString().equals("4C3259BF-3806-43E3-86F9-352D0C6A8D58")){ divModalidad.setVisible(true); }//cambio de jornada if (cmbSolicitudes.getSelectedItem().getValue().toString().equals("080E8414-3C2E-4C1E-B943-E16385BBCB82")){ divJornada.setVisible(true); }//anular Inscripcion if (cmbSolicitudes.getSelectedItem().getValue().toString().equals("3FF47371-CC75-4528-B136-F816328ACBCE")){ //btSolicitud.setVisible(true); divMatInsc.setVisible(true); getInscripcion(); }//3era vez if (cmbSolicitudes.getSelectedItem().getValue().toString().equals("FD50640A-315A-45D5-9617-D3A9213DE237")){ divExcepciones.setVisible(true); } } /******************************************************************************************************** * Método : getRegistros. * Acceso : Privado. * Descripción : Obtiene de la base de datos todas Registros de la tabla RegistrosTramites * y las guarda en el ListBox lstRegistros. * Tipo de retorno : no retorna valor * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 * ********************************************************************************************************/ public void getRegistros() throws Exception{ String vStrTraza= objUtils.getInformacionSession().getvStrGlobalUserID(); objArrayTransporteParametros=new ArrayList<>(); objArrayTransporteParametros.add("HQL_TRAMITES_REGISTROS_TRAMITES"); objArrayTransporteParametros.add(vStrTraza+"<|>"+"ACTIVO"); objArrayTransporteParametros.add(false); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add(objUtilsConstants.getInformacionSession().getvStrGlobalUserID()); MensajesGenericos objMensGenericos = new Gson().fromJson(portTramites.getGsonFromRoute("Tramites", "ug.sistema.academico.bo.tramites.IngresoTramitesBO","cargarRegistros", new Gson().toJson(objArrayTransporteParametros), objUtilsConstants.getInformacionSession().getvStrGlobalUserID()),MensajesGenericos.class); System.out.println("getRegistros WS:"+objMensGenericos.getvStrCode()+ " = "+objUtils.getObjProperties().getProperty("fStrSUCCESS")); if (objMensGenericos.getvStrCode().equals(objUtils.getObjProperties().getProperty("fStrSUCCESS"))) { lstRegistros.getChildren().clear(); lstRegistros.appendChild(TramitesHeaderView.getHeaderRegistrosTramites()); if (objMensGenericos.getObjContenido().size() > 1) { int vIntCabecera = 0; for (ArrayList<String> objRegister : objMensGenericos.getObjContenido()) { if (vIntCabecera != 0) { lstRegistros.appendChild(objUtilsConstants.getListItem(objRegister)); } vIntCabecera++; } } 98 } else { ToastMessage.showNotify(objMensGenericos.getvStrMessage(), "alertify." + objMensGenericos.getvStrCode()); } btnAnular.setVisible(false); } /******************************************************************************************************** * Método : getMatInsc. * Acceso : Privado. * Descripción : Obtiene de la base de datos todas las materias Inscritas en el periodo actual * de Matriculacion que el estudiante puede escoger para realizar una anulación y * cambio de paralelo y las guarda en el ListBox lstMatInsc. * Tipo de retorno : no retorna valor * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 * ********************************************************************************************************/ public void getMatInsc() throws Exception{ String Estado= "A"; String IdPersona = objUtils.getInformacionSession().getvStrGlobalIdPersona(); String vStrSeparador = objUtilsConstants.getObjProperties().getProperty("fStrSeparadorParametros"); String vStrTraza= IdPersona + vStrSeparador + Estado; //vStrTraza=""; objArrayTransporteParametros=new ArrayList<>(); objArrayTransporteParametros.add("HQL_TRAMITES_MATERIAS_INSCRITAS"); objArrayTransporteParametros.add(vStrTraza); objArrayTransporteParametros.add(false); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add(objUtilsConstants.getInformacionSession().getvStrGlobalUserID()); MensajesGenericos objMensGenericos = new Gson().fromJson(portTramites.getGsonFromRoute( "tramites", "ug.sistema.academico.bo.tramites.IngresoTramitesBO", "getMatInsc", new Gson().toJson(objArrayTransporteParametros), objUtilsConstants.getInformacionSession().getvStrGlobalUserID()), MensajesGenericos.class ); lstMatInsc.getChildren().clear(); lstMatInsc.appendChild(TramitesHeaderView.getHeaderMateriasInscritas()); if (objMensGenericos.getvStrCode().equals(objUtils.getObjProperties().getProperty("fStrSUCCESS"))) { if (objMensGenericos.getObjContenido().size() > 1) { int vIntCabecera = 0; for (ArrayList<String> objRegister : objMensGenericos.getObjContenido()) { if (vIntCabecera != 0) { lstMatInsc.appendChild(objUtilsConstants.getListItem(objRegister)); } vIntCabecera++; } } } else { ToastMessage.showNotify(objMensGenericos.getvStrMessage(),"alertify." + objMensGenericos.getvStrCode()); } } /******************************************************************************************************** * Método : getMatInsc2daVez. * Acceso : Privado. 99 * Descripción : Obtiene de la base de datos todas las materias Inscritas en el periodo actual * de Matriculacion que sean por 2da vez, para que el estudiante pueda realizar * un cambio de vez y las guarda en el ListBox lstMatInsc. * Tipo de retorno : no retorna valor * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 * ********************************************************************************************************/ public void getMatInsc2daVez() throws Exception{ String Estado= "A"; String IdPersona = objUtils.getInformacionSession().getvStrGlobalIdPersona(); String vStrSeparador = objUtilsConstants.getObjProperties().getProperty("fStrSeparadorParametros"); String vStrTraza= IdPersona + vStrSeparador + Estado; //vStrTraza=""; objArrayTransporteParametros=new ArrayList<>(); objArrayTransporteParametros.add("HQL_TRAMITES_MATERIAS_INSCRITAS2"); objArrayTransporteParametros.add(vStrTraza); objArrayTransporteParametros.add(false); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add(objUtilsConstants.getInformacionSession().getvStrGlobalUserID()); MensajesGenericos objMensGenericos = new Gson().fromJson(portTramites.getGsonFromRoute( "tramites", "ug.sistema.academico.bo.tramites.IngresoTramitesBO", "getMatInsc", new Gson().toJson(objArrayTransporteParametros), objUtilsConstants.getInformacionSession().getvStrGlobalUserID()), MensajesGenericos.class ); lstMatInsc.getChildren().clear(); lstMatInsc.appendChild(TramitesHeaderView.getHeaderMateriasInscritas()); if (objMensGenericos.getvStrCode().equals(objUtils.getObjProperties().getProperty("fStrSUCCESS"))) { if (objMensGenericos.getObjContenido().size() > 1) { int vIntCabecera = 0; for (ArrayList<String> objRegister : objMensGenericos.getObjContenido()) { if (vIntCabecera != 0) { lstMatInsc.appendChild(objUtilsConstants.getListItem(objRegister)); } vIntCabecera++; } } } else { ToastMessage.showNotify(objMensGenericos.getvStrMessage(),"alertify." + objMensGenericos.getvStrCode()); } } /******************************************************************************************************** * Método : getInscripcion. * Acceso : Privado. * Descripción : Obtiene de la base de datos todas la inscripcion del periodo actual, * para que el estudiante puede seleccionarla y anular la inscripcion, * y las guarda en el ListBox lstMatInsc. * Tipo de retorno : no retorna valor * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 *********************************************************************************************************/ public void getInscripcion() throws Exception{ String Estado= "A"; String IdPersona = objUtils.getInformacionSession().getvStrGlobalIdPersona(); 100 String vStrSeparador = objUtilsConstants.getObjProperties().getProperty("fStrSeparadorParametros"); String vStrTraza= IdPersona + vStrSeparador + Estado; //vStrTraza=""; objArrayTransporteParametros=new ArrayList<>(); objArrayTransporteParametros.add("HQL_TRAMITES_INSCRIPCION_MATRICULA"); objArrayTransporteParametros.add(vStrTraza); objArrayTransporteParametros.add(false); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add("0"); objArrayTransporteParametros.add(objUtilsConstants.getInformacionSession().getvStrGlobalUserID()); MensajesGenericos objMensGenericos = new Gson().fromJson(portTramites.getGsonFromRoute( "tramites", "ug.sistema.academico.bo.tramites.IngresoTramitesBO", "getInscripcion", new Gson().toJson(objArrayTransporteParametros), objUtilsConstants.getInformacionSession().getvStrGlobalUserID()), MensajesGenericos.class ); lstMatInsc.getChildren().clear(); lstMatInsc.appendChild(TramitesHeaderView.getHeaderInscripcion()); if (objMensGenericos.getvStrCode().equals(objUtils.getObjProperties().getProperty("fStrSUCCESS"))) { if (objMensGenericos.getObjContenido().size() > 1) { int vIntCabecera = 0; for (ArrayList<String> objRegister : objMensGenericos.getObjContenido()) { if (vIntCabecera != 0) { lstMatInsc.appendChild(objUtilsConstants.getListItem(objRegister)); } vIntCabecera++; } } } else { ToastMessage.showNotify(objMensGenericos.getvStrMessage(),"alertify." + objMensGenericos.getvStrCode()); } } /******************************************************************************************************** * Método : refreshWindow. * Acceso : Privado. * Descripción : Realiza un refresh de todos los elementos de la pantala ingresoTramites. * Tipo de retorno : no retorna valor * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 ********************************************************************************************************/ public void refreshWindow() throws Exception{ cmbTipoTramite.setSelectedIndex(-1); cmbCertificados.setSelectedIndex(-1); cmbSolicitudes.setSelectedIndex(-1); pSolcitidudes.setVisible(false); pCertificados.setVisible(false); btSolicitud.setVisible(false); btCertificado.setVisible(false); pEmail.setVisible(false); divMatInsc.setVisible(false); divMatDisp.setVisible(false); divParalelo.setVisible(false); divVeces.setVisible(false); 101 div_upload.setVisible(false); divModalidad.setVisible(false); divJornada.setVisible(false); divExcepciones.setVisible(false); btnAnular.setVisible(false); this.clearAll(); this.setDatosUsuario(); this.getTipoTramite(); this.getSolicitudes(); this.getCertificados(); this.getExcepciones(); this.getRegistros(); this.getMatInsc(); this.getJornada(); } /******************************************************************************************************** * Método : setVariables. * Acceso : Privado. * Descripción : Almacena todos los valores de los comboBox, ListBox y TextBox en variables * para realizar el ingreso de Solicitudes y Certificados. * Tipo de retorno : no retorna valor * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 ********************************************************************************************************/ public void setVariables(){ //byte[] bFile = image.getContent().getByteData(); // String vByteImagenByte = new Gson().toJson(bFile); /* if(image.getContent() == null) id_imagen=""; else id_imagen=new Gson().toJson(image.getContent().getByteData()); */ if(cmbExcepciones.getValue().equals("")) id_excepciones=""; else id_excepciones=cmbExcepciones.getSelectedItem().getValue().toString(); try{ if(cmbParalelos.getValue().equals("")) id_paralelos=""; else id_paralelos=cmbParalelos.getSelectedItem().getValue().toString(); }catch(Exception e){ id_paralelos=""; } if(cmbVeces.getValue().equals("")) id_veces=""; else id_veces=cmbVeces.getSelectedItem().getValue().toString(); if(cmbModalidades.getValue().equals("")) id_modalidad=""; else id_modalidad=cmbModalidades.getSelectedItem().getValue().toString(); if(cmbJornadas.getValue().equals("")) id_jornada=""; else id_jornada=cmbJornadas.getSelectedItem().getValue().toString(); if(cmbTipoTramite.getValue().equals("")) id_tramite=""; else id_tramite=cmbTipoTramite.getSelectedItem().getValue().toString(); if(cmbCertificados.getValue().equals("")) id_certificado=""; else id_certificado=cmbCertificados.getSelectedItem().getValue().toString(); 102 if(txtEmail.getValue().equals("")) email=""; else email=txtEmail.getValue().toString(); if(cmbSolicitudes.getValue().equals("")) id_solicitud=""; else id_solicitud=cmbSolicitudes.getSelectedItem().getValue().toString(); try{ if(lstMatInsc.getSelectedItem().getValue().equals("")) id_matInsc=""; else id_matInsc=lstMatInsc.getSelectedItem().getValue().toString(); }catch(Exception e){ id_matInsc=""; } try{ if(lstRegistros.getSelectedItem().getValue().equals("")) id_lstRegistros=""; else id_lstRegistros=lstRegistros.getSelectedItem().getValue().toString(); }catch(Exception e){ id_lstRegistros=""; } try{ if(lstMatDisp.getSelectedItem().getValue().equals("")) id_lstMatDisp=""; else id_lstMatDisp=lstMatDisp.getSelectedItem().getValue().toString(); }catch(Exception e){ id_lstMatDisp=""; } } /******************************************************************************************************** * Método : mostrarBtSolic. * Acceso : Privado. * Descripción : Si los comboBox cmbParalelos, cmbVeces, cmbJornadas o cmbModalidades son seleccionados * muestra el boton de guardar solicitud, btSolicitud. * Tipo de retorno : no retorna valor * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 ********************************************************************************************************/ @Listen("onChange = #cmbParalelos, #cmbVeces, #cmbJornadas, #cmbModalidades") public void mostrarBtSolic(){ btSolicitud.setVisible(true); //btCertificado.setVisible(false); } /******************************************************************************************************** * Método : mostrarBtSolic2. * Acceso : Privado. * Descripción : Si los ListBox lstMatInsc o lstMatDisp son seleccionados * muestra el boton de guardar solicitud, btSolicitud. * Tipo de retorno : no retorna valor * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 ********************************************************************************************************/ @Listen("onClick = #lstMatInsc, #lstMatDisp") public void mostrarBtSolic2() throws Exception{ clearAll(); if (cmbSolicitudes.getSelectedItem().getValue().toString().equals("894D1727-A507-489D-B1318DDF3BD2017D")){ getParalelos(); divParalelo.setVisible(true); btSolicitud.setVisible(false); }else{ btSolicitud.setVisible(true); } } /******************************************************************************************************** 103 * Método : mostrarUploadImagen. * Acceso : Privado. * Descripción : Si el comboBox cmbExcepciones es seleccionado, muestra el * div div_upload para cargar el justificativo. * muestra el boton de guardar solicitud, btSolicitud. * Tipo de retorno : no retorna valor * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 ********************************************************************************************************/ @Listen("onChange = #cmbExcepciones") public void mostrarUploadImagen(){ div_upload.setVisible(true); //btCertificado.setVisible(false); } /******************************************************************************************************** * Método : mostrarBtCertif. * Acceso : Privado. * Descripción : Si el comboBox cmbCertificados es seleccionado, muestra el * boton btCertificado y pEmail. * Tipo de retorno : no retorna valor * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 ********************************************************************************************************/ @Listen("onChange = #cmbCertificados") public void mostrarBtCertif(){ btSolicitud.setVisible(false); btCertificado.setVisible(true); pEmail.setVisible(true); } /******************************************************************************************************** * Método : mostrarAnular. * Acceso : Privado. * Descripción : Si el ListBox lstRegistros" es seleccionado, llama al metodo llamarPantalla(), * y luego a refreshWindow(). * Tipo de retorno : no retorna valor * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 *********************************************************************************************************/ @Listen("onDoubleClick = #lstRegistros") public void mostrarAnular() throws Exception{ //btnAnular.setVisible(true); llamarPantalla(); this.refreshWindow(); } /******************************************************************************************************** * Método : upload. * Acceso : Privado. * Descripción : Carga una imagen en la variable image. * Tipo de retorno : no retorna valor * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 ********************************************************************************************************/ public void upload(UploadEvent event) { int vIntMinHeightFoto = Integer.valueOf(objUtilsConstants.getObjProperties() .getProperty("fStrMinHeighImagenesX")); int vIntMaxHeightFoto = Integer.valueOf(objUtilsConstants.getObjProperties() .getProperty("fStrMaxHeightImagenesX")); int vIntMinWidthFoto = Integer.valueOf(objUtilsConstants.getObjProperties() .getProperty("fStrMinWidthImagenesX")); int vIntMaxWidthFoto = Integer.valueOf(objUtilsConstants.getObjProperties() .getProperty("fStrMaxWidthImagenesX")); org.zkoss.util.media.Media media = event.getMedia(); boolean lbError = false; if (media instanceof org.zkoss.image.Image) { if (((org.zkoss.image.Image) media).getHeight() > vIntMinHeightFoto && ((org.zkoss.image.Image) media).getHeight() < vIntMaxHeightFoto) { if (((org.zkoss.image.Image) media).getWidth() > vIntMinWidthFoto && ((org.zkoss.image.Image) media).getWidth() < vIntMaxWidthFoto) { lbError = true; } } 104 if (lbError) { btSolicitud.setVisible(true); image.setContent((org.zkoss.image.Image) media); pics.getChildren().clear(); image.setParent(pics); bFile = image.getContent().getByteData(); id_imagen = new Gson().toJson(bFile); System.out.println("byte de imagen MC: "+id_imagen); } else { Messagebox.show( objUtils.getObjProperties() .getProperty("fStrMessageTamanioImagen") .replace("@(content)", String.valueOf(vIntMinHeightFoto)) .replace("@(content2)", String.valueOf(vIntMaxHeightFoto)) .replace("@(content3)", String.valueOf(vIntMinWidthFoto)) .replace("@(content4)", String.valueOf(vIntMaxWidthFoto)), "Error", Messagebox.OK, Messagebox.EXCLAMATION); } } else { Messagebox.show("El Archivo Cargado no es una Imagen: " + media, "Error", Messagebox.OK, Messagebox.ERROR); } } /******************************************************************************************************** * Método : ingresarCertificado. * Acceso : Privado. * Descripción : Guarda el certificado a la base de datos, enviando las * variables que el metodo setVariables() guardo en primer lugar. * Tipo de retorno : no retorna valor * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 ************************************************************************************************** *******/ @Listen("onClick = #btnNuevoC") public void ingresarCertificado() throws Exception { setVariables(); boolean vBoolResult = false; if(cmbCertificados.getValue().equals("")) { ToastMessage.showNotify("Debe seleccionar un Certificado", "alertify." + objUtils.getObjProperties().getProperty("fStrWARNING")); vBoolResult = true; } else { /*alert("id de excepcion : "+id_excepciones+ "\n"+ "id de paralelos : "+id_paralelos+ "\n"+ "id de veces : "+id_veces+ "\n"+ "id de modalidad : "+id_modalidad+ "\n"+ "id de jornada : "+id_jornada+ "\n"+ "id de tipo tramite : "+id_tramite+ "\n"+ "id de solicitud : "+id_solicitud+ "\n"+ "id de imagen : "+id_imagen+ "\n"+ "id de certificado : "+id_certificado);*/ if(!vBoolResult){ try{ objArrayTransporteParametros=new ArrayList<>(); //PARA PRIMERA TABLA objArrayTransporteParametros.add(objUtils.getInformacionSession().getvStrGlobalUserID()); objArrayTransporteParametros.add(objUtilsConstants.getInformacionSession().getvStrGlobalCarrera()); objArrayTransporteParametros.add(objUtils.getInformacionSession().getvStrGlobalPeriodoActivo()); objArrayTransporteParametros.add(cmbCertificados.getSelectedItem().getValue().toString()); //SEGUNDA TABLA 105 objArrayTransporteParametros.add(id_excepciones); objArrayTransporteParametros.add(id_paralelos); objArrayTransporteParametros.add(id_veces); objArrayTransporteParametros.add(id_modalidad); objArrayTransporteParametros.add(id_jornada); objArrayTransporteParametros.add(email); MensajesGenericos objMensGenericos = new Gson().fromJson(portTramites.getGsonFromRoute("Tramites", "ug.sistema.academico.bo.tramites.IngresoTramitesBO","GuardarCertificado", new Gson().toJson(objArrayTransporteParametros), objUtilsConstants.getInformacionSession().getvStrGlobalUserID()),MensajesGenericos.class); ToastMessage.showNotify(objMensGenericos.getvStrMessage(), "alertify." + objMensGenericos.getvStrCode()); if (objMensGenericos.getvStrCode().equals(objUtils.getObjProperties().getProperty("fStrSUCCESS"))) { this.refreshWindow(); } } catch(Exception e) { e.printStackTrace(); ToastMessage.showNotify(objUtils.getObjProperties().getProperty("fStrMessageErrorServices") + " " + e.getMessage(), objUtils.getObjProperties().getProperty("fStrERROR")); } } } } /******************************************************************************************************** * Método : ingresarSolicitud. * Acceso : Privado. * Descripción : Guarda las solicitudes a la base de datos, enviando las * variables que el metodo setVariables() guardo en primer lugar. * Tipo de retorno : no retorna valor * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 *********************************************************************************************************/ @Listen("onClick = #btnNuevoS") public void ingresarSolicitud() throws Exception { setVariables(); boolean vBoolResult = false; if(cmbSolicitudes.getValue().equals("")) { ToastMessage.showNotify("Debe seleccionar una solicitud", "alertify." + objUtils.getObjProperties().getProperty("fStrWARNING")); vBoolResult = true; } else { //alert("id de MatInsc : "+lstMatInsc.getSelectedItem().getValue()); /*alert("id de excepcion : "+id_excepciones+ "\n"+ "id de paralelos : "+id_paralelos+ "\n"+ "id de veces : "+id_veces+ "\n"+ "id de modalidad : "+id_modalidad+ "\n"+ "id de jornada : "+id_jornada+ "\n"+ "id de tipo tramite : "+id_tramite+ "\n"+ "id de solicitud : "+id_solicitud+ "\n"+ "id de imagen : "+id_imagen.substring(0, 10)+ "\n"+ "id de certificado : "+id_certificado);*/ if(!vBoolResult){ try{ objArrayTransporteParametros=new ArrayList<>(); //PARA PRIMERA TABLA objArrayTransporteParametros.add(objUtils.getInformacionSession().getvStrGlobalUserID()); objArrayTransporteParametros.add(objUtilsConstants.getInformacionSession().getvStrGlobalCarrera()); objArrayTransporteParametros.add(objUtils.getInformacionSession().getvStrGlobalPeriodoActivo()); objArrayTransporteParametros.add(id_solicitud); //SEGUNDA TABLA 106 objArrayTransporteParametros.add(id_excepciones); objArrayTransporteParametros.add(id_paralelos); objArrayTransporteParametros.add(id_veces); objArrayTransporteParametros.add(id_modalidad); objArrayTransporteParametros.add(id_jornada); objArrayTransporteParametros.add(id_imagen); objArrayTransporteParametros.add(id_matInsc); objArrayTransporteParametros.add(id_lstMatDisp); MensajesGenericos objMensGenericos = new Gson().fromJson(portTramites.getGsonFromRoute("Tramites", "ug.sistema.academico.bo.tramites.IngresoTramitesBO","GuardarSolicitud", new Gson().toJson(objArrayTransporteParametros), objUtilsConstants.getInformacionSession().getvStrGlobalUserID()),MensajesGenericos.class); ToastMessage.showNotify(objMensGenericos.getvStrMessage(), "alertify." + objMensGenericos.getvStrCode()); if (objMensGenericos.getvStrCode().equals(objUtils.getObjProperties().getProperty("fStrSUCCESS"))) { this.refreshWindow(); } } catch(Exception e) { e.printStackTrace(); ToastMessage.showNotify(objUtils.getObjProperties().getProperty("fStrMessageErrorServices") + " " + e.getMessage(), objUtils.getObjProperties().getProperty("fStrERROR")); } } } } /******************************************************************************************************** * Método : llamarPantalla. * Acceso : Privado. * Descripción : Crea una ventana modal, llamando al zul ModalDetalleTramite.zul, * envia mediante HashMap el id del Tramite seleccionado del ListBox lstRegistros. * Tipo de retorno : no retorna valor * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 * ********************************************************************************************************/ private void llamarPantalla(){ Map<String, Object> map = new HashMap<String, Object>(); map.put("idPersona", objUtils.getInformacionSession().getvStrGlobalIdPersona()); map.put("idTramite", lstRegistros.getSelectedItem().getValue().toString()); //map.put("tipUsr", intParTipPan.getValue()); try { Window objWinModal = (Window) Executions.createComponents("tramites/ModalDetalleTramite.zul", winAdminCertificados, map); objWinModal.doModal(); // onClick$btnBuscar(); //this.chargeView("","null"); } catch (Exception e) { e.printStackTrace(); } } } /******************************************************************************************************** * Clase : IngresoTramitesBO.java * Autor : Marlon Israel Carangui Herrera * Descripción : Clase BO para la clase IngresoTramites.java que contiene metodos de consulta a * la base de datos, utilizando el ORM Hibernate. * Creación : 18/06/2015 ************************************************************************************************ *********/ package ug.sistema.academico.bo.tramites; import java.awt.Image; import java.sql.CallableStatement; 107 import java.sql.PreparedStatement; import java.sql.ResultSet; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Set; import org.hibernate.JDBCException; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import ug.sistema.academico.eao.extcalendario.EventosCalendarioEAO; import ug.sistema.academico.eao.horario.DetHorarioClaseEAO; import ug.sistema.academico.eao.horario.JornadaEAO; import ug.sistema.academico.eao.matriculacion.DetalleMatriculacionEAO; import ug.sistema.academico.eao.matriculacion.MatriculacionEAO; //import ug.sistema.academico.eao.certificados.CertificadosRegistroEAO; import ug.sistema.academico.eao.seguridad.UsuariosLoginControlEAO; import ug.sistema.academico.eao.tramites.DetalleRegistroEAO; import ug.sistema.academico.eao.tramites.EspecificacionTramiteEAO; import ug.sistema.academico.eao.tramites.EstadoGeneralEAO; import ug.sistema.academico.eao.tramites.EstadoProcesoEAO; import ug.sistema.academico.eao.tramites.ExcepcionesEAO; import ug.sistema.academico.eao.tramites.ProcesosEAO; import ug.sistema.academico.eao.tramites.RegistroTramitesEAO; import ug.sistema.academico.utils.ListaGenerica; import ug.sistema.academico.utils.Utils; import ug.sistema.academico.models.horario.CabHorarioClase; import ug.sistema.academico.models.horario.DetHorarioClase; import ug.sistema.academico.models.horario.Jornada; import ug.sistema.academico.models.horario.Paralelo; import ug.sistema.academico.models.malla.Carrera; import ug.sistema.academico.models.malla.CarreraImpl; import ug.sistema.academico.models.malla.MateriaImpl; import ug.sistema.academico.models.matriculacion.DetalleMatriculacion; import ug.sistema.academico.models.matriculacion.Matriculacion; import ug.sistema.academico.models.notificaciones.EventosCalendario; import ug.sistema.academico.models.tramites.DetalleRegistro; //import ug.sistema.academico.models.certificados.Registros; import ug.sistema.academico.models.tramites.EspecificacionTramite; import ug.sistema.academico.models.tramites.EstadoGeneral; import ug.sistema.academico.models.tramites.EstadoProceso; import ug.sistema.academico.models.tramites.Excepciones; import ug.sistema.academico.models.tramites.Procesos; import ug.sistema.academico.models.tramites.RegistroTramites; import ug.sistema.academico.models.tramites.TipoTramite; import com.google.gson.Gson; import ec.edu.ug.academico.type.MensajesGenericos; public class IngresoTramitesBO { MensajesGenericos objMsjGenerico = new MensajesGenericos("",""); /******************************************************************************************************** * Método : getEspecificacionTramite. * Acceso : Publico. * Descripción : Obtiene de la base de datos todas las solicitudes * y las retorna * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 * ********************************************************************************************************/ public String getEspecificacionTramite(String vStrQuery, String vStrParametros, String tipoTram, boolean vBoolPaginador, String vIntMinimo, String vIntMaximo, String vIntPagina, String vStrUsuario) { String vStrResultado = ""; 108 Utils objUtils = new Utils(); EspecificacionTramiteEAO objTramitesEAO = new EspecificacionTramiteEAO(); ArrayList<ArrayList<String>> objContenido = new ArrayList<ArrayList<String>>(); objTramitesEAO.setearConexion("sistemaacademico"); Session objSession = objTramitesEAO.getSession(); objSession.flush(); objUtils.setProperties("/resources/constants.properties"); String vStrSeparador = objUtils.getObjProperties().getProperty("fStrSeparadorParametros"); if(tipoTram.equals("S")){ vStrParametros= vStrParametros + vStrSeparador + "SOLICITUD"; } if(tipoTram.equals("C")){ vStrParametros= vStrParametros + vStrSeparador + "CERTIFICADO"; } try { ArrayList<Object> vArrayParameters = objUtils.getArrayListObject(vStrParametros,objUtils.getObjProperties().getProperty("fStrSeparadorParametros")); ListaGenerica objListaGenerica = objTramitesEAO.getResultListCustomAcademico(vStrQuery, vArrayParameters,vBoolPaginador, vIntMinimo, vIntMaximo, vIntPagina); ArrayList<String> arrayfilas = new ArrayList<String>(); arrayfilas.add(String.valueOf(objListaGenerica.getvIntMaximo())); arrayfilas.add(String.valueOf(objListaGenerica.getvIntMinimo())); arrayfilas.add(String.valueOf(objListaGenerica.getvIntPagina())); arrayfilas.add(String.valueOf(objListaGenerica.getvNumPaginas())); objContenido.add(arrayfilas); ArrayList<Object> objArrayContenido = objListaGenerica.getArrayContenido(); for (Object object : objArrayContenido) { arrayfilas = new ArrayList<String>(); EspecificacionTramite objSolicitud = (EspecificacionTramite) object; arrayfilas.add(objSolicitud.getId()); arrayfilas.add(objSolicitud.getNombre()); arrayfilas.add(objSolicitud.getNemonico()); //arrayfilas.add(objSolicitud.getUsuarioCreacion()); //arrayfilas.add(objSolicitud.getUsuarioModificacion()); //arrayfilas.add(objSolicitud.getFechaCreacion().toString()); //arrayfilas.add(objSolicitud.getFechaModificacion().toString()); //arrayfilas.add(objSolicitud.getEstadoGeneral().getNombre()); //arrayfilas.add(objSolicitud.getRutaArchivo()); objContenido.add(arrayfilas); } objUtils.setProperties("/resources/mensajes.properties"); objMsjGenerico.setvStrMessage(objUtils.getMessage("","fStrMessageOK")); objMsjGenerico.setvStrCode(objUtils.getObjProperties().getProperty("fStrSUCCESS")); } catch (Exception e) { objMsjGenerico.setvStrMessage(objUtils.getMessage("","fStrMessageErrorDatabase") + "---" + e.getLocalizedMessage()); objMsjGenerico.setvStrCode(objUtils.getObjProperties().getProperty("fStrERROR")); } finally { objSession.close(); } objMsjGenerico.setObjContenido(objContenido); vStrResultado = new Gson().toJson(objMsjGenerico); return vStrResultado; } /******************************************************************************************************** * Método : getTipoTramite. * Acceso : Publico. * Descripción : Obtiene de la base de datos los tipos de Tramites, * y los retorna * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 * ********************************************************************************************************/ public String getTipoTramite(String vStrQuery, String vStrParametros, boolean vBoolPaginador, String vIntMinimo, String vIntMaximo, String vIntPagina, String vStrUsuario) { String v_error="1"; 109 String vStrResultado = ""; //DateFormat formato = new SimpleDateFormat("dd/mm/yyyy"); EspecificacionTramiteEAO objTramitesEAO = new EspecificacionTramiteEAO(); v_error="2"; objTramitesEAO.setearConexion("sistemaacademico"); Session objSession = objTramitesEAO.getSession(); objSession.flush(); Utils objUtils = new Utils(); objUtils.setProperties("/resources/constants.properties"); ArrayList<ArrayList<String>> objContenido = new ArrayList<ArrayList<String>>(); v_error="3"; try { ArrayList<Object> vArrayParameters = objUtils.getArrayListObject( vStrParametros, objUtils.getObjProperties().getProperty( "fStrSeparadorParametros")); v_error="4"; ListaGenerica objListaGenerica = objTramitesEAO.getResultListCustomAcademico(vStrQuery, vArrayParameters, vBoolPaginador, vIntMinimo, vIntMaximo, vIntPagina); v_error="5"; ArrayList<String> arrayfilas = new ArrayList<String>(); v_error="6"; arrayfilas.add(String.valueOf(objListaGenerica.getvIntMaximo())); arrayfilas.add(String.valueOf(objListaGenerica.getvIntMinimo())); arrayfilas.add(String.valueOf(objListaGenerica.getvIntPagina())); arrayfilas.add(String.valueOf(objListaGenerica.getvNumPaginas())); objContenido.add(arrayfilas); v_error="7"; ArrayList<Object> objArrayContenido = objListaGenerica.getArrayContenido(); for (Object object : objArrayContenido) { arrayfilas = new ArrayList<String>(); TipoTramite objTipoTramite = (TipoTramite) object; arrayfilas.add(objTipoTramite.getId()); arrayfilas.add(objTipoTramite.getNombre()); objContenido.add(arrayfilas); } v_error="7"; objUtils.setProperties("/resources/mensajes.properties"); objMsjGenerico.setvStrMessage(objUtils.getMessage("", "fStrMessageOK")); objMsjGenerico.setvStrCode(objUtils.getObjProperties().getProperty( "fStrSUCCESS")); v_error="8"; } catch (Exception e) { System.out.println ("ERROR MC: "+ v_error + " Query: "+vStrQuery); objMsjGenerico.setvStrMessage(objUtils.getMessage("", "fStrMessageErrorDatabase") + "---" + e.getLocalizedMessage()); objMsjGenerico.setvStrCode(objUtils.getObjProperties().getProperty( "fStrERROR")); } finally { objSession.close(); } objMsjGenerico.setObjContenido(objContenido); vStrResultado = new Gson().toJson(objMsjGenerico); return vStrResultado; } /******************************************************************************************************** * Método : cargarRegistros. * Acceso : Publico. * Descripción : Obtiene de la base de datos todas Registros de la tabla RegistrosTramites 110 * y los retorna. * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 * ********************************************************************************************************/ public String cargarRegistros(String vStrQuery, String vStrParametros,boolean vBoolPaginador, String vIntMinimo, String vIntMaximo, String vIntPagina, String vStrUsuario) { String vStrResultado = ""; RegistroTramitesEAO objRegTramEAO = new RegistroTramitesEAO(); objRegTramEAO.setearConexion("sistemaacademico"); Session objSession = objRegTramEAO.getSession(); objSession.flush(); Utils objUtils = new Utils(); objUtils.setProperties("/resources/constants.properties"); ArrayList<ArrayList<String>> objContenido = new ArrayList<ArrayList<String>>(); try { ArrayList<Object> vArrayParameters = objUtils.getArrayListObject( vStrParametros, objUtils.getObjProperties().getProperty("fStrSeparadorParametros")); ListaGenerica objListaGenerica = objRegTramEAO.getResultListCustomAcademico(vStrQuery, vArrayParameters, vBoolPaginador, vIntMinimo, vIntMaximo, vIntPagina); ArrayList<String> arrayfilas = new ArrayList<String>(); arrayfilas.add(String.valueOf(objListaGenerica.getvIntMaximo())); arrayfilas.add(String.valueOf(objListaGenerica.getvIntMinimo())); arrayfilas.add(String.valueOf(objListaGenerica.getvIntPagina())); arrayfilas.add(String.valueOf(objListaGenerica.getvNumPaginas())); objContenido.add(arrayfilas); ArrayList<Object> objArrayContenido = objListaGenerica.getArrayContenido(); for (Object object : objArrayContenido) { arrayfilas = new ArrayList<String>(); RegistroTramites objRegistros = (RegistroTramites) object; arrayfilas.add(objRegistros.getId()); arrayfilas.add(String.format("%03d",objRegistros.getNumeroRegistro())); arrayfilas.add(objRegistros.getEspecificacionTramite().getTipoTramite().getNombre()); arrayfilas.add(objRegistros.getEspecificacionTramite().getNombre()); //arrayfilas.add(objRegistros.getIdCarrera().getNombre()); arrayfilas.add(objRegistros.getFechaCreacion().toString()); arrayfilas.add(objRegistros.getProcesos().getDescripcion()); arrayfilas.add(objRegistros.getEstadoProceso().getDescripcion()); arrayfilas.add(objRegTramEAO.getObservacion(objRegistros.getId())); objContenido.add(arrayfilas); } objUtils.setProperties("/resources/mensajes.properties"); objMsjGenerico.setvStrMessage(objUtils.getMessage("", "fStrMessageOK")); objMsjGenerico.setvStrCode(objUtils.getObjProperties().getProperty( "fStrSUCCESS")); } catch (Exception e) { objMsjGenerico.setvStrMessage(objUtils.getMessage("", "fStrMessageErrorDatabase") + "---" + e.getLocalizedMessage()); objMsjGenerico.setvStrCode(objUtils.getObjProperties().getProperty( "fStrERROR")); } finally { objSession.close(); 111 } objMsjGenerico.setObjContenido(objContenido); vStrResultado = new Gson().toJson(objMsjGenerico); return vStrResultado; } /******************************************************************************************************** * Método : getExcepciones. * Acceso : Publico. * Descripción : Obtiene de la base de datos todas las excepciones * y las retorna. * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 * ********************************************************************************************************/ public String getExcepciones(String vStrQuery, String vStrParametros, boolean vBoolPaginador, String vIntMinimo, String vIntMaximo,String vIntPagina, String vStrUsuario) { String vStrResultado = ""; Utils objUtils = new Utils(); ExcepcionesEAO objTramitesEAO = new ExcepcionesEAO(); ArrayList<ArrayList<String>> objContenido = new ArrayList<ArrayList<String>>(); objTramitesEAO.setearConexion("sistemaacademico"); Session objSession = objTramitesEAO.getSession(); objSession.flush(); objUtils.setProperties("/resources/constants.properties"); try { ArrayList<Object> vArrayParameters = objUtils.getArrayListObject(vStrParametros,objUtils.getObjProperties().getProperty("fStrSeparadorParametros")); ListaGenerica objListaGenerica = objTramitesEAO.getResultListCustomAcademico(vStrQuery, vArrayParameters,vBoolPaginador, vIntMinimo, vIntMaximo, vIntPagina); ArrayList<String> arrayfilas = new ArrayList<String>(); arrayfilas.add(String.valueOf(objListaGenerica.getvIntMaximo())); arrayfilas.add(String.valueOf(objListaGenerica.getvIntMinimo())); arrayfilas.add(String.valueOf(objListaGenerica.getvIntPagina())); arrayfilas.add(String.valueOf(objListaGenerica.getvNumPaginas())); objContenido.add(arrayfilas); ArrayList<Object> objArrayContenido = objListaGenerica.getArrayContenido(); for (Object object : objArrayContenido) { arrayfilas = new ArrayList<String>(); Excepciones objExcepciones = (Excepciones) object; arrayfilas.add(objExcepciones.getId()); arrayfilas.add(objExcepciones.getDescripcion()); arrayfilas.add(objExcepciones.getNemonico()); objContenido.add(arrayfilas); } objUtils.setProperties("/resources/mensajes.properties"); objMsjGenerico.setvStrMessage(objUtils.getMessage("","fStrMessageOK")); objMsjGenerico.setvStrCode(objUtils.getObjProperties().getProperty("fStrSUCCESS")); } catch (Exception e) { objMsjGenerico.setvStrMessage(objUtils.getMessage("","fStrMessageErrorDatabase")+ "---"+ e.getLocalizedMessage()); objMsjGenerico.setvStrCode(objUtils.getObjProperties().getProperty("fStrERROR")); } finally { objSession.close(); } objMsjGenerico.setObjContenido(objContenido); 112 vStrResultado = new Gson().toJson(objMsjGenerico); return vStrResultado; } /******************************************************************************************************** * Método : GuardarSolicitud. * Acceso : Publico. * Descripción : Guarda las solicitudes a la base de datos, en las tablas RegistroTramites y DetalleRegistro * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 * ********************************************************************************************************/ public String GuardarSolicitud( String vStrPersona, String vStrCarrera, String vStrPeriodo, String vSTrSolicitudes, String vStrExcepcion, String cmbParalelos, String cmbVeces, String cmbModalidades, String cmbJornadas, String vByteImagen, String lstMatInsc, String lstMatDisp) throws ParseException { Utils objUtils = new Utils(); RegistroTramites objCertificadosR = new RegistroTramites(); Procesos objProcesos = new Procesos(); EspecificacionTramite objEspTram = new EspecificacionTramite(); EstadoGeneral objEstGeneral = new EstadoGeneral(); EstadoProceso objEstProceso = new EstadoProceso(); CarreraImpl objCarrera = new CarreraImpl(); DetalleRegistro objDetalleRegistro = new DetalleRegistro(); String vStrResultado = ""; String idMateriaFinal = ""; byte[] vByteImagenByte = new Gson().fromJson(vByteImagen, byte[].class); int validaTramite = 0; //instancia EAO RegistroTramitesEAO objRegistrosEAO = new RegistroTramitesEAO(); DetalleRegistroEAO objDetalleRegistroEAO = new DetalleRegistroEAO(); EstadoGeneralEAO objEstadoGeneralEAO = new EstadoGeneralEAO(); EstadoProcesoEAO objEstadoProcesoEAO = new EstadoProcesoEAO(); //Setea conexion objRegistrosEAO.setearConexion("sistemaacademico"); objDetalleRegistroEAO.setearConexion("sistemaacademico"); objEstadoGeneralEAO.setearConexion("sistemaacademico"); objEstadoProcesoEAO.setearConexion("sistemaacademico"); //Abre conexion Session objSession = objRegistrosEAO.getSession(); objUtils.setProperties("/resources/mensajes.properties"); //Instancia clase Transaction Transaction objTransaction = null; System.out.println ("id de excepcion : "+vStrExcepcion+ "\n"+ "id de periodo : "+vStrPeriodo+ "\n"+ "id de paralelos : "+cmbParalelos+ "\n"+ "id de veces : "+cmbVeces+ "\n"+ "id de modalidad : "+cmbModalidades+ "\n"+ "id de Materia : "+lstMatInsc+ "\n"+ "id de jornada : "+cmbJornadas+ "\n"+ "id de solicitud : "+vSTrSolicitudes+ "\n"+ "Imagen MC : "+vByteImagen+ "\n"+ "id de carrera : "+vStrCarrera); if ( cmbJornadas.equals("") ) {cmbJornadas=null;} if ( vStrPeriodo.equals("") ) {vStrPeriodo=null;} if ( cmbModalidades.equals("") ) {cmbModalidades=null;} if ( cmbParalelos.equals("") ) {cmbParalelos=null;} if ( lstMatDisp.equals("") ) { 113 idMateriaFinal=null; }else{ idMateriaFinal=lstMatDisp; } if ( lstMatInsc.equals("") ) { idMateriaFinal=null; }else{ idMateriaFinal=lstMatInsc; } if ( vStrExcepcion.equals("") ) {vStrExcepcion=null;} System.out.println ("\nid de excepcion : "+vStrExcepcion+ "\n"+ "id de periodo : "+vStrPeriodo+ "\n"+ "id de paralelos : "+cmbParalelos+ "\n"+ "id de veces : "+cmbVeces+ "\n"+ "id de modalidad : "+cmbModalidades+ "\n"+ "id de Materia : "+lstMatInsc+ "\n"+ "id de jornada : "+cmbJornadas+ "\n"+ "id de solicitud : "+vSTrSolicitudes+ "\n"+ "Imagen MC : "+vByteImagenByte+ "\n"+ "id de carrera : "+vStrCarrera); try { String estadoGen=objEstadoGeneralEAO.getRegistroIdentificador("ACTIVO", "nombre").getId(); //Activo validaTramite=Integer.parseInt(objRegistrosEAO.validaTramite(vStrPersona, vSTrSolicitudes,idMateriaFinal,estadoGen)); if(validaTramite == 0){ String id_Rtramite = objRegistrosEAO.getGenerateID(); int cod = Integer.parseInt(objRegistrosEAO.getSecuencia(vStrPersona)); cod++; objProcesos.setId(objRegistrosEAO.getIdProceso(vSTrSolicitudes)); objEspTram.setId(vSTrSolicitudes); //objCarrera.setId(vStrCarrera); //objEstGeneral.setId("E2C80F95-D602-4954-9B00-A8332E001F95");//Activo //objEstProceso.setId("E2C80F95-D602-4954-9B00-A8332E001F95");//Generado objCertificadosR.setId(id_Rtramite); objCertificadosR.setNumeroRegistro(cod); objCertificadosR.setEspecificacionTramite(objEspTram); objCertificadosR.setIdusuario(vStrPersona); objCertificadosR.setIdCarrera(vStrCarrera); objCertificadosR.setFechaCreacion(objUtils.getTodayTimestamp()); objCertificadosR.setProcesos(objProcesos); objCertificadosR.setEstadoGeneral(objEstadoGeneralEAO.getRegistroIdentificador("ACTIVO", "nombre"));//Activo objCertificadosR.setEstadoProceso(objEstadoProcesoEAO.getRegistroIdentificador("GENERADO", "descripcion"));//Generado System.out.println(); objDetalleRegistro.setJutificativo(vByteImagenByte); objDetalleRegistro.setId(objRegistrosEAO.getGenerateID()); objDetalleRegistro.setRegistroTramites(objCertificadosR);//MCcr objDetalleRegistro.setIdPeriodo(null); objDetalleRegistro.setIdMateria(idMateriaFinal); objDetalleRegistro.setIdParalelo(cmbParalelos); objDetalleRegistro.setIdJornada(cmbJornadas); objDetalleRegistro.setIdModalidad(cmbModalidades); objDetalleRegistro.setIdExcepcion(vStrExcepcion); if ( cmbVeces.equals("") ) { System.out.println("No existe data de numero de veces"); }else{ objDetalleRegistro.setNumVeces(Integer.parseInt(cmbVeces)); } //objDetalleRegistro.setVesAnterior(Integer.getInteger(cmbVeces)); //objDetalleRegistro.setDatoAnterior(""); 114 //ejecuta insert objRegistrosEAO.guardar(objCertificadosR); objDetalleRegistroEAO.guardar(objDetalleRegistro); objTransaction = objSession.beginTransaction(); objTransaction.commit(); objMsjGenerico.setvStrMessage(objUtils.getMessage("","fStrMessageOK")); objMsjGenerico.setvStrCode(objUtils.getObjProperties().getProperty("fStrSUCCESS")); }else{ objMsjGenerico.setvStrMessage("Ya realizo este tramite."); objMsjGenerico.setvStrCode(objUtils.getObjProperties().getProperty("fStrERROR")); } } catch(JDBCException objEx){ if (objTransaction != null) { objTransaction.rollback(); } String vStrError = ""; if (objEx.getErrorCode() == 2627) { vStrError = objUtils.getMessage("", "fStrMessageErrorUNK"); } objMsjGenerico.setvStrMessage(objUtils.getMessage("","fStrMessageErrorDatabase") + "---" + vStrError); objMsjGenerico.setvStrCode(objUtils.getObjProperties().getProperty("fStrERROR")); } finally { //Cierra Conexion objSession.close(); } vStrResultado = new Gson().toJson(objMsjGenerico); return vStrResultado; } /******************************************************************************************************** * Método : GuardarCertificado. * Acceso : Publico. * Descripción : Guarda los Certificados a la base de datos, en las tablas RegistroTramites y DetalleRegistro * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 * ********************************************************************************************************/ public String GuardarCertificado( String vStrPersona, String vStrCarrera, String vStrPeriodo, String vSTrSolicitudes, String vStrExcepcion, String cmbParalelos, String cmbVeces, String cmbModalidades, String cmbJornadas, String email ) throws ParseException { Utils objUtils = new Utils(); RegistroTramites objCertificadosR = new RegistroTramites(); Procesos objProcesos = new Procesos(); EstadoGeneral objEstGeneral = new EstadoGeneral(); DetalleRegistro objDetalleRegistro = new DetalleRegistro(); EspecificacionTramite objEspTram = new EspecificacionTramite(); CarreraImpl objCarrera = new CarreraImpl(); String vStrResultado = ""; int validaCertificado = 0; //instancia EAO RegistroTramitesEAO objRegistrosEAO = new RegistroTramitesEAO(); DetalleRegistroEAO objDetalleRegistroEAO = new DetalleRegistroEAO(); ProcesosEAO objProcesosEAO = new ProcesosEAO(); EstadoGeneralEAO objEstadoGeneralEAO = new EstadoProcesoEAO objEstadoProcesoEAO = new EstadoGeneralEAO(); EstadoProcesoEAO(); //Setea conexion objRegistrosEAO.setearConexion("sistemaacademico"); objDetalleRegistroEAO.setearConexion("sistemaacademico"); 115 objProcesosEAO.setearConexion("sistemaacademico"); objEstadoGeneralEAO.setearConexion("sistemaacademico"); objEstadoProcesoEAO.setearConexion("sistemaacademico"); //Abre conexion Session objSession = objRegistrosEAO.getSession(); objUtils.setProperties("/resources/mensajes.properties"); //Instancia clase Transaction Transaction objTransaction = null; Transaction objTransaction2 = null; if ( email.equals("") ) {email=null;} try { String estadoGen=objEstadoGeneralEAO.getRegistroIdentificador("ACTIVO", "nombre").getId(); //Activo validaCertificado=Integer.parseInt(objRegistrosEAO.validaTramite(vStrPersona, vSTrSolicitudes,null,estadoGen)); if(validaCertificado == 0){ String id_Rtramite = objRegistrosEAO.getGenerateID(); int cod = Integer.parseInt(objRegistrosEAO.getSecuencia(vStrPersona)); cod++; //cod = objUtils.getDateNow("yyyyMMddHHmmss"); objProcesos.setId(objRegistrosEAO.getIdProceso(vSTrSolicitudes)); objEspTram.setId(vSTrSolicitudes); //objCarrera.setId(vStrCarrera); //objEstGeneral.setId("C03AB7DA-A408-4731-A28ACD0E5636A82D");//Generado System.out.println("EstadoGenaral: "+objEstadoGeneralEAO.getRegistroIdentificador("ACTIVO", "nombre").getId()); System.out.println("EstadoProceso: "+objEstadoProcesoEAO.getRegistroIdentificador("GENERADO", "descripcion").getId()); objCertificadosR.setId(id_Rtramite); objCertificadosR.setNumeroRegistro(cod); objCertificadosR.setEspecificacionTramite(objEspTram); objCertificadosR.setIdusuario(vStrPersona); objCertificadosR.setIdCarrera(vStrCarrera); objCertificadosR.setFechaCreacion(objUtils.getTodayTimestamp()); objCertificadosR.setProcesos(objProcesos); objCertificadosR.setEstadoGeneral(objEstadoGeneralEAO.getRegistroIdentificador("ACTIVO", "nombre"));//Activo objCertificadosR.setEstadoProceso(objEstadoProcesoEAO.getRegistroIdentificador("GENERADO", "descripcion"));//Generado objRegistrosEAO.guardar(objCertificadosR); objTransaction = objSession.beginTransaction(); objTransaction.commit(); objDetalleRegistro.setId(objRegistrosEAO.getGenerateID()); objDetalleRegistro.setRegistroTramites(objCertificadosR);//MCcr objDetalleRegistro.setEmail(email); //ejecuta insert objDetalleRegistroEAO.guardar(objDetalleRegistro); objTransaction2 = objSession.beginTransaction(); objTransaction2.commit(); objMsjGenerico.setvStrMessage(objUtils.getMessage("","fStrMessageOK")); objMsjGenerico.setvStrCode(objUtils.getObjProperties().getProperty("fStrSUCCESS")); }else{ objMsjGenerico.setvStrMessage("Ya realizo este tramite."); objMsjGenerico.setvStrCode(objUtils.getObjProperties().getProperty("fStrERROR")); } 116 } catch(JDBCException objEx){ if (objTransaction != null) { objTransaction.rollback(); } String vStrError = ""; if (objEx.getErrorCode() == 2627) { vStrError = objUtils.getMessage("", "fStrMessageErrorUNK"); } objMsjGenerico.setvStrMessage(objUtils.getMessage("","fStrMessageErrorDatabase") + "---" + vStrError); objMsjGenerico.setvStrCode(objUtils.getObjProperties().getProperty("fStrERROR")); } finally { //Cierra Conexion objSession.close(); } vStrResultado = new Gson().toJson(objMsjGenerico); return vStrResultado; } /******************************************************************************************************** * Método : getJornadas. * Acceso : Publico. * Descripción : Obtiene de la base de datos las jornadas, y las retorna. * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 * ********************************************************************************************************/ public String getJornadas(String vStrQuery, String vStrParametros, boolean vBoolPaginador, String vIntMinimo, String vIntMaximo, String vIntPagina, String vStrUsuario) { String vStrResultado = ""; //DateFormat formato = new SimpleDateFormat("dd/mm/yyyy"); JornadaEAO objJornadaEAO = new JornadaEAO(); objJornadaEAO.setearConexion("sistemaacademico"); Session objSession = objJornadaEAO.getSession(); objSession.flush(); Utils objUtils = new Utils(); objUtils.setProperties("/resources/constants.properties"); ArrayList<ArrayList<String>> objContenido = new ArrayList<ArrayList<String>>(); try { ArrayList<Object> vArrayParameters = objUtils.getArrayListObject( vStrParametros, objUtils.getObjProperties().getProperty( "fStrSeparadorParametros")); ListaGenerica objListaGenerica = objJornadaEAO.getResultListCustomAcademico(vStrQuery, vArrayParameters, vBoolPaginador, vIntMinimo, vIntMaximo, vIntPagina); ArrayList<String> arrayfilas = new ArrayList<String>(); arrayfilas.add(String.valueOf(objListaGenerica.getvIntMaximo())); arrayfilas.add(String.valueOf(objListaGenerica.getvIntMinimo())); arrayfilas.add(String.valueOf(objListaGenerica.getvIntPagina())); arrayfilas.add(String.valueOf(objListaGenerica.getvNumPaginas())); objContenido.add(arrayfilas); ArrayList<Object> objArrayContenido = objListaGenerica.getArrayContenido(); for (Object object : objArrayContenido) { arrayfilas = new ArrayList<String>(); Jornada objJornada = (Jornada) object; arrayfilas.add(objJornada.getId()); arrayfilas.add(objJornada.getDescripcion()); objContenido.add(arrayfilas); } objUtils.setProperties("/resources/mensajes.properties"); objMsjGenerico.setvStrMessage(objUtils.getMessage("", "fStrMessageOK")); objMsjGenerico.setvStrCode(objUtils.getObjProperties().getProperty( "fStrSUCCESS")); 117 } catch (Exception e) { objMsjGenerico.setvStrMessage(objUtils.getMessage("", "fStrMessageErrorDatabase") + "---" + e.getLocalizedMessage()); objMsjGenerico.setvStrCode(objUtils.getObjProperties().getProperty( "fStrERROR")); } finally { objSession.close(); } objMsjGenerico.setObjContenido(objContenido); vStrResultado = new Gson().toJson(objMsjGenerico); return vStrResultado; } /******************************************************************************************************** * Método : getInscripcion. * Acceso : Publico. * Descripción : Obtiene de la base de datos la Inscripcion del usuario, y las retorna. * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 * ********************************************************************************************************/ public String getInscripcion(String vStrQuery, String vStrParametros,boolean vBoolPaginador, String vIntMinimo, String vIntMaximo, String vIntPagina, String vStrUsuario) { String vStrResultado = ""; MatriculacionEAO objMatricEAO = new MatriculacionEAO(); objMatricEAO.setearConexion("sistemaacademico"); Session objSession = objMatricEAO.getSession(); objSession.flush(); Utils objUtils = new Utils(); objUtils.setProperties("/resources/constants.properties"); ArrayList<ArrayList<String>> objContenido = new ArrayList<ArrayList<String>>(); try { ArrayList<Object> vArrayParameters = objUtils.getArrayListObject( vStrParametros, objUtils.getObjProperties().getProperty("fStrSeparadorParametros")); ListaGenerica objListaGenerica = objMatricEAO.getResultListCustomAcademico(vStrQuery, vArrayParameters, vBoolPaginador, vIntMinimo, vIntMaximo, vIntPagina); ArrayList<String> arrayfilas = new ArrayList<String>(); arrayfilas.add(String.valueOf(objListaGenerica.getvIntMaximo())); arrayfilas.add(String.valueOf(objListaGenerica.getvIntMinimo())); arrayfilas.add(String.valueOf(objListaGenerica.getvIntPagina())); arrayfilas.add(String.valueOf(objListaGenerica.getvNumPaginas())); objContenido.add(arrayfilas); ArrayList<Object> objArrayContenido = objListaGenerica.getArrayContenido(); for (Object object : objArrayContenido) { arrayfilas = new ArrayList<String>(); //RegistroTramites objRegistros = (RegistroTramites) object; Matriculacion objMatriculacion = (Matriculacion) object; /*MateriaImpl objMateria = (MateriaImpl) object; Paralelo objParalelo = (Paralelo) object; objMateria.setId(objDetalleMatriculacion.getIdMateria()); objParalelo.setId(objDetalleMatriculacion.getIdParalelo()); */ 118 //System.out.println(objDetalleMatriculacion.getMatriculacion().getPeriodo().getPeriodoLectivo().toString()); //arrayfilas.add(objDetalleMatriculacion.getId()); arrayfilas.add(objMatriculacion.getId()); //arrayfilas.add(objMatriculacion.getPeriodo().getDescripcion()); arrayfilas.add(objMatricEAO.getCarrera(objMatriculacion.getIdCarrera().toString())); arrayfilas.add(objMatricEAO.getPeriodoCiclo(objMatriculacion.getIdPeriodo())); //arrayfilas.add(objMatriculacion.getPeriodo().getDescripcion()); arrayfilas.add(String.valueOf(objMatriculacion.getFechaCreacion())); arrayfilas.add(objMatriculacion.getEstado()); //System.out.println("Periodo:"+objMatriculacion.getPeriodo().getId()); // System.out.println("PeriodoId:"+objMatricEAO.getPeriodo(objMatriculacion.getPeriodo().getId())); //arrayfilas.add("2015-2016"); //arrayfilas.add(objMatricEAO.getPeriodo(objMatriculacion.getId())); objContenido.add(arrayfilas); } objUtils.setProperties("/resources/mensajes.properties"); objMsjGenerico.setvStrMessage(objUtils.getMessage("", "fStrMessageOK")); objMsjGenerico.setvStrCode(objUtils.getObjProperties().getProperty( "fStrSUCCESS")); } catch (Exception e) { objMsjGenerico.setvStrMessage(objUtils.getMessage("", "fStrMessageErrorDatabase") + "---" + e.getLocalizedMessage()); objMsjGenerico.setvStrCode(objUtils.getObjProperties().getProperty( "fStrERROR")); } finally { objSession.close(); } objMsjGenerico.setObjContenido(objContenido); vStrResultado = new Gson().toJson(objMsjGenerico); return vStrResultado; } /******************************************************************************************************** * Método : getMatInsc. * Acceso : Publico. * Descripción : Obtiene de la base de datos la Materias inscritas del usuario, y las retorna. * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 * ********************************************************************************************************/ public String getMatInsc(String vStrQuery, String vStrParametros,boolean vBoolPaginador, String vIntMinimo, String vIntMaximo, String vIntPagina, String vStrUsuario) { String vStrResultado = ""; DetalleMatriculacionEAO objDetMatricEAO = new DetalleMatriculacionEAO(); objDetMatricEAO.setearConexion("sistemaacademico"); Session objSession = objDetMatricEAO.getSession(); objSession.flush(); Utils objUtils = new Utils(); objUtils.setProperties("/resources/constants.properties"); ArrayList<ArrayList<String>> objContenido = new ArrayList<ArrayList<String>>(); try { ArrayList<Object> vArrayParameters = objUtils.getArrayListObject( vStrParametros, objUtils.getObjProperties().getProperty("fStrSeparadorParametros")); 119 ListaGenerica objListaGenerica = objDetMatricEAO.getResultListCustomAcademico(vStrQuery, vArrayParameters, vBoolPaginador, vIntMinimo, vIntMaximo, vIntPagina); ArrayList<String> arrayfilas = new ArrayList<String>(); arrayfilas.add(String.valueOf(objListaGenerica.getvIntMaximo())); arrayfilas.add(String.valueOf(objListaGenerica.getvIntMinimo())); arrayfilas.add(String.valueOf(objListaGenerica.getvIntPagina())); arrayfilas.add(String.valueOf(objListaGenerica.getvNumPaginas())); objContenido.add(arrayfilas); ArrayList<Object> objArrayContenido = objListaGenerica.getArrayContenido(); for (Object object : objArrayContenido) { arrayfilas = new ArrayList<String>(); //RegistroTramites objRegistros = (RegistroTramites) object; DetalleMatriculacion objDetalleMatriculacion = (DetalleMatriculacion) object; /*MateriaImpl objMateria = (MateriaImpl) object; Paralelo objParalelo = (Paralelo) object; objMateria.setId(objDetalleMatriculacion.getIdMateria()); objParalelo.setId(objDetalleMatriculacion.getIdParalelo()); */ //System.out.println(objDetalleMatriculacion.getMatriculacion().getPeriodo().getPeriodoLectivo().toStr ing()); //arrayfilas.add(objDetalleMatriculacion.getId()); arrayfilas.add(objDetalleMatriculacion.getIdBancoMateria().getId()); arrayfilas.add(objDetalleMatriculacion.getIdBancoMateria().getCodMateria()); arrayfilas.add(objDetalleMatriculacion.getIdBancoMateria().getNombreMateria()); //arrayfilas.add(objDetalleMatriculacion.getIdParalelo().getParaleloId()); //arrayfilas.add("PARALELO"); arrayfilas.add(objDetMatricEAO.getParalelo(objDetalleMatriculacion.getIdBancoMateria().getId())); arrayfilas.add(String.valueOf(objDetalleMatriculacion.getNumeroVeces())); //arrayfilas.add("JORNADA"); arrayfilas.add(objDetMatricEAO.getJornada(objDetalleMatriculacion.getIdBancoMateria().getId())); //arrayfilas.add(objDetalleMatriculacion.getMatriculacion().getPeriodo().getPeriodoLectivo().toString()); //arrayfilas.add("2015-2016"); arrayfilas.add(objDetMatricEAO.getPeriodo(objDetalleMatriculacion.getId())); arrayfilas.add("PRESENCIAL"); arrayfilas.add(objDetalleMatriculacion.getMatriculacion().getEstado()); /* arrayfilas.add(objRegistros.getId()); arrayfilas.add(objRegistros.getNemonico()); arrayfilas.add(objRegistros.getIdEspecificacionTramite().getTipoTramite().getNombre()); arrayfilas.add(objRegistros.getIdEspecificacionTramite().getNombre()); arrayfilas.add(objRegistros.getIdCarrera().getNombre()); arrayfilas.add(objRegistros.getFechaCreacion().toString()); arrayfilas.add(objRegistros.getProcesos().getEstadoProceso().getDescripcion());*/ objContenido.add(arrayfilas); } objUtils.setProperties("/resources/mensajes.properties"); objMsjGenerico.setvStrMessage(objUtils.getMessage("", "fStrMessageOK")); objMsjGenerico.setvStrCode(objUtils.getObjProperties().getProperty( "fStrSUCCESS")); } catch (Exception e) { 120 objMsjGenerico.setvStrMessage(objUtils.getMessage("", "fStrMessageErrorDatabase") + "---" + e.getLocalizedMessage()); objMsjGenerico.setvStrCode(objUtils.getObjProperties().getProperty( "fStrERROR")); } finally { objSession.close(); } objMsjGenerico.setObjContenido(objContenido); vStrResultado = new Gson().toJson(objMsjGenerico); return vStrResultado; } /******************************************************************************************************** * Método : getParalelos. * Acceso : Publico. * Descripción : Obtiene de la base de datos los paralelos del usuario, y las retorna. * Autor : Marlon Israel Carangui Herrera * Creación : 10/05/2015 * ********************************************************************************************************/ public String getParalelos(String vStrQuery, String vStrParametros,boolean vBoolPaginador, String vIntMinimo, String vIntMaximo, String vIntPagina, String vStrUsuario) { String vStrResultado = ""; DetalleMatriculacionEAO objDetMatricEAO = new DetalleMatriculacionEAO(); objDetMatricEAO.setearConexion("sistemaacademico"); Session objSession = objDetMatricEAO.getSession(); objSession.flush(); Utils objUtils = new Utils(); objUtils.setProperties("/resources/constants.properties"); ArrayList<ArrayList<String>> objContenido = new ArrayList<ArrayList<String>>(); try { /* ArrayList<Object> vArrayParameters = objUtils.getArrayListObject( vStrParametros, objUtils.getObjProperties().getProperty("fStrSeparadorParametros")); ListaGenerica objListaGenerica = objDetMatricEAO.getResultListCustomAcademico(vStrQuery, vArrayParameters, vBoolPaginador, vIntMinimo, vIntMaximo, vIntPagina); */ ArrayList<String> arrayfilas = new ArrayList<String>(); /* arrayfilas.add(String.valueOf(objListaGenerica.getvIntMaximo())); arrayfilas.add(String.valueOf(objListaGenerica.getvIntMinimo())); arrayfilas.add(String.valueOf(objListaGenerica.getvIntPagina())); arrayfilas.add(String.valueOf(objListaGenerica.getvNumPaginas())); objContenido.add(arrayfilas); */ // ArrayList<Object> objArrayContenido = objListaGenerica.getArrayContenido(); ArrayList<String> objArrayContenido = objDetMatricEAO.getCambioParalelo(vStrParametros); System.out.println("Se encontraron: "+objArrayContenido); for (String linea : objArrayContenido) { arrayfilas = new ArrayList<String>(); for ( String campo: linea.split(";")){ System.out.println(campo); arrayfilas.add(campo); } objContenido.add(arrayfilas); 121 } objUtils.setProperties("/resources/mensajes.properties"); objMsjGenerico.setvStrMessage(objUtils.getMessage("", "fStrMessageOK")); objMsjGenerico.setvStrCode(objUtils.getObjProperties().getProperty( "fStrSUCCESS")); } catch (Exception e) { objMsjGenerico.setvStrMessage(objUtils.getMessage("", "fStrMessageErrorDatabase") + "---" + e.getLocalizedMessage()); objMsjGenerico.setvStrCode(objUtils.getObjProperties().getProperty( "fStrERROR")); } finally { objSession.close(); } objMsjGenerico.setObjContenido(objContenido); vStrResultado = new Gson().toJson(objMsjGenerico); return vStrResultado; } } 122 CAPÍTULO IV MARCO ADMINISTRATIVO CRONOGRAMA Un Cronograma es una representación gráfica y ordenada con tal detalle para que un conjunto de funciones y tareas se lleven a cabo en un tiempo estipulado y bajo unas condiciones que garanticen la optimización del tiempo. Los cronogramas son herramientas básicas de organización en un proyecto, en la realización de una serie pasos para la culminación de tarea, son ideales para eventos, son la base principal de ejecución de una producción organizada. 123 124 PRESUPUESTO Cuadro 42. Presupuesto - Ingresos INGRESOS Financiamiento propio $700,00 TOTAL DE INGRESO $700,00 Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. Detalle de egresos del proyecto Cuadro 43. Presupuesto - Egresos EGRESOS DÓLARES Suministros de oficina $ Fotocopias 100.00 35.00 Folletos y Libros 150.00 Servicios de Internet 65.00 Transporte 50.00 Refrigerio 50.00 6 Anillados de tesis 50.00 4 Empastados de tesis 200.00 TOTAL $ 700.00 Elaboración: Marlon Carangui Herrera Fuente: Marlon Carangui Herrera. 125 CAPÍTULO V CONCLUSIONES Y RECOMENDACIONES CONCLUSIONES Con la ayuda de las metodologías de la investigación (Encuesta, Análisis Estadístico, Mapa de procesos) aplicadas en este proyecto se determinó la necesidad de implementar un nuevo módulo de ingreso de solicitudes, por la deficiencia en el proceso actual que se realiza de manera manual, que genera mucho tiempo para el estudiante poder realizar sus trámites en la universidad de Guayaquil. A través de la encuesta realizada a los estudiantes de las facultades de Ciencias Matemáticas y Físicas, y Ciencias Administrativas, se concluyó que los estudiantes necesitan de manera imperativa la creación de un proceso automático que disminuya los tiempos de ingreso de solicitudes y certificados. Se desarrolló el módulo de ingreso de solicitudes y certificados de manera dinámica, con un workflow configurable de acuerdo a las decisiones tomadas por las autoridades encargadas, evitando así un sistema que quede obsoleto en años siguientes, y que se evite realizar modificaciones en su desarrollo para cumplir con futuras decisiones. 126 Se desarrolló el módulo de trámites, (Solicitudes y Certificados) con una base de datos bien estructurada que evitará perdida de datos, y mantendrá una información veraz y actualizada, potenciada con el ORM Hibernate como motor organizacional de persistencia de base de datos. El desarrollo del módulo se realizó en java con el framework ZK, que se destaca por su óptimo rendimiento transaccional y de aspecto fluido, integrando AJAX en su desarrollo principal, para el diseño del módulo se incorpora el uso de CSS3 como estilo personalizado de los colores de la universidad de Guayaquil, y usando el estándar de desarrollo MVC. RECOMENDACIONES Se recomienda al personal de pruebas, realizar las pruebas exhaustivas del módulo de ingreso de solicitudes y Certificados para determinar su óptimo funcionamiento y que cumplan con todas las funciones establecidas por el personal de Casos de Uso. Para versiones posteriores del módulo de ingreso de solicitudes y certificados se recomienda tener sólidos conocimientos en Java, Framework ZK, SQL Server, JavaScript, ORM Hibernate, HTML5 y CSS3 principalmente para poder realizar cambios o agregar nuevas funciones según lo requieran las autoridades. Documentar todos los cambios realizados en el módulo si así se lo requiriese, teniendo de manera ordenada un control de cambios en el desarrollo, mediante el versionamiento de código fuentes, evitando así degradar el código original con código basura que pueda evitar el óptimo funcionamiento del módulo. Integrar el módulo de ingreso de solicitudes y certificados con los demás módulos del sistema académico de la Universidad de Guayaquil, y realizar pruebas para posteriormente realizar su implementación en la Facultad de Ciencias Matemáticas y Físicas, y la Facultad de Ciencias Administrativas. 127 REFERENCIAS BIBLIOGRÁFICAS BIBLIOGRAFÍA Facultad de Ciencias Administrativas. (2015). Recuperado el 05 de 05 de 2015, de http://www.fca.ug.edu.ec/?page_id=61 Facultad de Ciencias Matemáticas y Físicas. (2015). Recuperado el 05 de 05 de 2015, de http://www.matematicas-ug.edu.ec/?page_id=117 Real Académia Española. (2015). Obtenido de Real Académia Española: http://www.rae.es/ AIU. (2009). Atlantic International University. Obtenido de Atlantic International University: http://www.aiu.edu/cursos/probabilidad%20y%20estadistica%20i/temario. html Alicante. (2003 de 09 de 2003). (G. ISSI, Ed.) Recuperado el 2015 de 05 de 24, de http://issi.dsic.upv.es/archives/f-1069167248521/actas.pdf Álvarez, M. A. (18 de julio de 2001). desarrolloweb. Recuperado el 25 de 04 de 2015, de http://www.desarrolloweb.com/articulos/497.php Alvarez, R. (01 de 01 de 2001). desarrolloweb. Recuperado el 26 de 04 de 2015, de http://www.desarrolloweb.com/articulos/262.php Alvarez, R. (01 de 01 de 2001). desarrolloweb. Recuperado el 26 de 04 de 2015, de http://www.desarrolloweb.com/articulos/262.php Babin, L. (2007). Introducción a Ajax. En L. Babin, Introducción a Ajax. Barker, T. (1997). Doing Social Research (segunda ed.). McGraw. Bell, D., & Parr, M. (2003). Java para estudiantes (Tercera ed.). México: Pearson Educación. Bernd, & Dutoit. (2002). Ingeniería del Software Orientado a Objetos. México: Pearson Educación. Boehm, B. (1978). Characteristics Of Software Quality. TRW Series Software Technology. Burnstein, I. (2002). Practical Software Testing. New York: Springer. Caicedo, M. (2015). Estadistica Descriptiva. Mexico: Prentice Hall. Chen, H., & Cheng, R. (2007). Ajax whithout JavaScript Framework. 128 Colomo, R. (2008). Ingeniería del Software II. España: Universidad Carlos III de Madrid. Dijkastra, E. (1970). The Univeristy of Texas at Austin, Segunda. Obtenido de The Univeristy of Texas at Austin: http://www.cs.utexas.edu/users/EWD/ewd02xx/EWD249.PDF Eckstein, R. (marzo de 2007). Oracle. Recuperado el 04 de 2015, de http://www.oracle.com/technetwork/articles/javase/index-142890.html Esteban, M. O. (24 de ABRIL de 2012). http://repositorio.espe.edu.ec. Obtenido de http://repositorio.espe.edu.ec: http://repositorio.espe.edu.ec/bitstream/21000/5250/1/T-ESPE033263.pdf González, H. S. (22 de 04 de 2003). javahispano. Recuperado el 25 de 04 de 2015, de http://static1.1.sqspcdn.com/static/f/923743/14427535/1317484934257/M anualHibernate.pdf?token=4qPlHyWxA5TET0jjWkSd82UaNWE%3D Groussard, T. (2012). JAVA 7 Los fundamentos del lenguaje de java. Guayaquil, U. d. (2015). Historia | Jurisprudencia. Recuperado el 26 de 04 de 2015, de http://www.fjcsp.ug.edu.ec/?page_id=13 Gutierrez Pulido, H., & De la Vara Salazar, R. (2009). Control Estadístico de Calidad y Seis Sigma (Segunda ed.). México: McGraw Hill Educación. Henderson, C. (1984). Estimation of variances and covariances under multiple trait models. Dairy. Hibernate. (2014). http://hibernate.org/. Recuperado el 25 de 04 de 2015, de https://docs.jboss.org/hibernate/orm/3.5/reference/esES/html/architecture.html Instituto Nacional de Estadística e Informática. (mayo de 2006). Glosario básico de términos estadísticos. Recuperado el 28 de 04 de 2015, de http://www.inei.gob.pe/media/MenuRecursivo/publicaciones_digitales/Est/ Lib0900/Libro.pdf Jhonson, R., & Kuby, P. (2008). Estadística Elemental / Just the Essentials of Elementary Statistics. Jiantao, P. (1999). Brooklyn College. Obtenido de Brooklyn College: http://www.sci.brooklyn.cuny.edu/~sklar/teaching/s08/cis20.2/papers/soft ware-testing.pdf 129 Joskowicz, J. (02 de 10 de 2008). Recuperado el 01 de 06 de 2015, de http://iie.fing.edu.uy/~josej/docs/XP%20-%20Jose%20Joskowicz.pdf Kinnear, T., & Taylor, J. (1998). Investigación de Mercados. México: McGraw Hill. Krall, C. (2012). aprenderaprogramar. Obtenido de aprenderaprogramar: www.aprenderaprogramar.com Lapuente, M. J. (12 de 08 de 2013). http://www.hipertexto.info. Recuperado el 26 de 04 de 2015, de http://www.hipertexto.info/documentos/serv_web.htm Lessin, J. (06 de 11 de 2013). jorgelessin.com. Recuperado el 25 de 04 de 2015, de http://jorgelessin.com/que-es-bootstrap-y-como-funciona-en-el-disenoweb/ López Torets, J. M. (2013). MTP. Obtenido de Software Quality Assurance: http://www.mtp.es/noticias/264-los-cinco-grandes-errores-de-la-historiadel-software Maceda, H. C. (2008 de Septiembre). humbertocervantes.net/. Recuperado el 26 de 04 de 2015, de http://www.humbertocervantes.net/cursos/ingsoft/PresentacionCurso.pdf Méndez, E., Pérez, M., & Mendoza, L. (2007|). Laboratorio de Investigación en Sistemas de Información. Obtenido de http://www.lisi.usb.ve/publicaciones/13%20pruebas/pruebas_01.pdf Méndez, G. (2008). Recuperado el 26 de 04 de https://www.fdi.ucm.es/profesor/gmendez/docs/is0809/02ProcesoCicloDeVida.pdf 2015, de Microsoft. (2015). microsoft.com. Recuperado el 06 de 04 de 2015, de https://www.microsoft.com/es-es/server-cloud/products/sql-server/ Morales, G. A. (Ed.). (2012). Recuperado el 28 de 04 de 2015, de http://www.x.edu.uy/inet/EstadisticayProbabilidad.pdf Murray R., S. (1977). Probabilidad y Estadística. México: McGraw Hill. Myers, G. (1976). The Art of Software Testing. New York: John Wiley. MYERS, G. (2004). The Art of Software Testing. Wiley. Pressman, R. S. (2005). Ingeniería del Software un Enfoque Práctico (Sexta ed.). Mc Graw Hill. Project Management Institute. (2008). Fundamentos para la direccion de Proyecto (4 ed.). 130 Rodríguez, L. (2007). "Probabilidad y Estadística Básica para Ingenieros". Escuela Superior Politécnica del Litoral. Sommerville, I. (2005). Ingeniería de Software. Madrid: Pearson Educacion. sommerville, i. (2005). Ingeniería del Software (7 ed.). Madrid. Tomcat, A. (2015). apachefoundation.wikispaces. Recuperado el 26 de 04 de 2015, de http://apachefoundation.wikispaces.com/Apache+Tomcat Tomcat, A. (2015). tomcat.apache. Recuperado el 26 de 04 de 2015, de http://tomcat.apache.org/ Triola, M. (2004). Estadística. México: Pearson. UPEL. (1998). Trabajos de Grado, Maestrías o Tesis Doctorales. Caracas: Universidad Pedagógica Experimental Libertador. Uspenskiy, S. (2010). A Survey and Clasification of software testing tools. LAPPEENRANTA UNIVERSITY OF TECHNOLOGY. Walpole, R. (1999). Probabilidad y Estadística para Ingenieros (Sexta ed.). México: Prentice Hall. Walpole, R., & Myers, R. (2007). Probabilidad y Estadística para Ingeniería y Ciencias (Octava ed.). Pearson, Prentice Hall. WALPOLE, R., MYERS, R., MYERS, S., & YE, K. (2012). Probabilidad y estadística para ingeniería y ciencias (9 ed.). México. 131 MANUAL TECNICO 1 ÍNDICE GENERAL MANUAL TECNICO ................................................................................................ 1 CONFIGUACION DE HERRAMIENTAS DE DESARROLLO ................................ 6 DESCARGA Y CONFIGURACION DE ECLIPSE Y ZK ..................................... 6 CONFIGURACION ZK ........................................................................................ 9 INSTALACION DE ZK ....................................................................................... 10 DESCARGAR Y CONFIGURAR APACHE CXF .............................................. 13 DESCARGA DE APACHE TOMCAT Y CONFIGURACION DE SERVIDORES WS Y WEB EN ECLIPSE ..................................................................................... 17 CREACION Y CONFIGURACION DE SERVERWEB...................................... 20 CREACION Y CONFIGURACION DE SERVERWS ........................................ 23 INSTALACION DE HIBERNATE PARA MAPEO DE BASE DE DATOS ............ 26 ABRIR PERSPECTIVA EN HIBERNATE ......................................................... 27 CONFIGURACION DE ARCHIVOS PARA MAPEO ........................................ 28 2 Indicé de Gráficos Gráfico 1.- Pagina descarga Eclipse ...................................................................... 6 Gráfico 2.- Proceso descarga Eclipse .................................................................... 6 Gráfico 3.- Proceso de descargar y almacenaje de archivo eclipse ...................... 7 Gráfico 4.- Carpeta contenedora eclipse ................................................................ 7 Gráfico 5.- Ejecución de Eclipse ............................................................................. 8 Gráfico 6.- Pantalla principal Eclipse ...................................................................... 8 Gráfico 7.- Pagina web ZK ...................................................................................... 9 Gráfico 8.- registro Zk ............................................................................................. 9 Gráfico 9.- Ingreso a Eclipse Market Place .......................................................... 10 Gráfico 10.- Búsqueda de Zk Studio………………………………………………..10 Gráfico 11.- Confirmación de Instalación ............................................................. 11 Gráfico 12.- Página de Bienvenida de Zk ............................................................. 11 Gráfico 13.- Activación de Zk Studio .................................................................... 12 Gráfico 14.- Ingreso de usuario y contraseña ...................................................... 12 Gráfico 15.- Pagina Apache CXF ......................................................................... 13 Gráfico 16.- Pagina descarga Apache CXF ......................................................... 13 Gráfico 17.- Descarga y almacenamiento Apache CXF ...................................... 14 Gráfico 18.- Creación de Carpeta Apache CXF ................................................... 14 Gráfico 19.- Confuiguracion de Apache CXF ....................................................... 15 Gráfico 20.- Pasos de seleccion carpeta Apache CXF ........................................ 15 Gráfico 21.- Selección de opción Apache CXF .................................................... 16 Gráfico 22.- Pagina descargar Apache Tomcat ................................................... 17 Gráfico 23.- Archivo y carpeta descomprimida apache tomcat ........................... 17 Gráfico 24.- Creación de carpetas para servidores. ............................................ 18 3 Gráfico 25.- Carpetas de Servidores WEB y WS ................................................. 18 Gráfico 26.- cambio de perspectiva a servidores ................................................. 18 Gráfico 27.- Seleccion de Perspectiva Servers .................................................... 19 Gráfico 28.- Creación de Servidores .................................................................... 20 Gráfico 29.- Selección del tipo de Servidor .......................................................... 21 Gráfico 30.- Creación y selección de SERVERWEB ........................................... 22 Gráfico 31.- Configuración de servidor creado..................................................... 22 Gráfico 32.- Configuración y parametrización serverweb .................................... 23 Gráfico 33.- Pasos de Creacion y configuracion SERVERWS ............................ 24 Gráfico 34.-Configuración y parametrización SERVERWS ................................. 25 Gráfico 35.- Instalación mediante MarketPlace.................................................... 26 Gráfico 36.- Búsqueda de HIBERNATE ............................................................... 26 Gráfico 37.- Confirmación de Instalación ............................................................. 27 Gráfico 38.- Abrir perspectiva HIBERNATE ......................................................... 27 Gráfico 39.- Selección de perspectiva HIBERNATE ............................................ 28 Gráfico 40.- Selección de archivo de configuración ............................................. 28 Gráfico 41.- Selección de la ruta para guardar el archivo de configuración ........ 29 Gráfico 42.- Configuración de conexión a la Base de Datos ............................... 29 Gráfico 43.- configuración de Console Configuration .......................................... 30 Gráfico 44.- Console Configuration ...................................................................... 30 Gráfico 45.-Pre visualización de conexión a la Base ........................................... 31 Gráfico 46.- Configuración de Ingeniería Inversa ................................................ 31 Gráfico 47.- Selección de ruta y nombre de archivo Reverse Engineering ......... 32 Gráfico 48.- Selección de las tablas para el Mapeo............................................. 32 Gráfico 49.- Generación de código Hibernate ...................................................... 33 4 Gráfico 50.- Configuración para la generación de código. ................................... 33 Gráfico 51.- Selección de archivo reveng.xml ...................................................... 34 Gráfico 52.- Configuración de Exporters .............................................................. 35 Gráfico 53.- Generación de código Hibernate ...................................................... 35 Gráfico 54.- Verificación de Clases generadas .................................................... 36 5 CONFIGUACION DE HERRAMIENTAS DE DESARROLLO DESCARGA Y CONFIGURACION DE ECLIPSE Y ZK Vamos a la página de descarga de Eclipse: https://www.eclipse.org/downloads/ Gráfico 1.- Pagina descarga Eclipse Elaboración: Marlon Carangui Fuente: ww.eclipse.org Seleccionamos la versión que necesitemos según la versión de Windows que tengamos (32bit – 64bit). Gráfico 2.- Proceso descarga Eclipse 6 Elaboración: Marlon Carangui Fuente: ww.eclipse.org Damos clic justo donde muestra la imagen. Gráfico 3.- Proceso de descargar y almacenaje de archivo eclipse Elaboración: Marlon Carangui Fuente: ww.eclipse.org Escogemos la opción guardar y damos click en aceptar. Gráfico 4.- Carpeta contenedora eclipse Elaboración: Marlon Carangui Fuente: ww.eclipse.org 7 Una vez que este descargado completamente, creamos una carpeta llamada eclipse, en la carpeta que creamos descomprimimos los que hemos descargado y ejecutamos el archivo que dice eclipse.exe (para que el programa se ejecute es necesario tener instalado el JDK-7) Gráfico 5.- Ejecución de Eclipse Elaboración: Álvaro Vizueta Fuente: ww.eclipse.org Al ejecutar la aplicación nos indicara en que carpeta se inicia la ejecución de la aplicación, de ser el caso y así desearlo podemos cambiar la ruta de la carpeta dando clic en el botón Browse. Gráfico 6.- Pantalla principal Eclipse Elaboración: Marlon Carangui Fuente: ww.eclipse.org 8 Esta es la página principal de eclipse la primera vez que se inicia. CONFIGURACION ZK Ingresamos a la página de Zk: http://www.zkoss.org/ y damos clic en Register. Gráfico 7.- Pagina web ZK Elaboración: Marlon Carangui Fuente: ww.zkoss.org Para realizar las descargar necesarias y poder utilizar librerías en nuestro proyecto debemos crear una cuenta y registrarnos. Gráfico 8.- registro Zk Elaboración: Marlon Carangui Fuente: ww.zkoss.org Una vez creado y registrado el usuario ejecutamos Eclipse.exe 9 INSTALACION DE ZK Gráfico 9.- Ingreso a Eclipse Market Place Elaboración: Marlon Carangui Fuente: ww.zkoss.org PASO 1: En la pantalla principal de eclipse seleccionamos: Help -> Eclipse Marketplace Gráfico 10.- Búsqueda de Zk Studio Elaboración: Marlon Carangui Fuente: ww.zkoss.org PASO 2: Se abrirá una ventana de dialogo, en esta ventana tal como muestra la imagen, en el cuadro de búsqueda (Find), escribimos la palabra Zk. A 10 continuación se presentara la opción de Zk Estudio, daremos clic en Install para proceder a instalar este plugin. Gráfico 11.- Confirmación de Instalación Elaboración: Marlon Carangui Fuente: ww.zkoss.org PASO 3: Confirmamos la instalación, después de haberse realizado con éxito la instalación, eclipse procederá a reiniciarse. Gráfico 12.- Página de Bienvenida de Zk Elaboración: Marlon Carangui Fuente: ww.zkoss.org 11 Después que Eclipse se haya reiniciado, se mostrara la pantalla de bienvenida de Zk. Gráfico 13.- Activación de Zk Studio Elaboración: Marlon Carangui Fuente: ww.zkoss.org PASO 4: En la pantalla principal de Eclipse damos clic en: Help -> Activate ZK Studio. Gráfico 14.- Ingreso de usuario y contraseña Elaboración: Marlon Carangui Fuente: ww.zkoss.org 12 PASO 5: En este cuadro de dialogo, ingresamos el usuario y contraseña con el cual nos registramos en http: //www.zkoss.org/, damos clic en Activate, después de activar podremos acceder de manera más fácil a contenido de Zk. DESCARGAR Y CONFIGURAR APACHE CXF Ingresamos a la página de Apache CXF: http://cxf.apache.org/ Gráfico 15.- Pagina Apache CXF Elaboración: Marlon Carangui Fuente: www.cxf.apache.org Realizamos la descarga de Apache CXF, para eso damos clic en Download. Gráfico 16.- Pagina descarga Apache CXF Elaboración: Marlon Carangui Fuente: www.cxf.apache.org 13 En esta página seleccionamos el paquete apache-cxf-2.7.16.zip. Gráfico 17.- Descarga y almacenamiento Apache CXF Elaboración: Marlon Carangui Fuente: www.cxf.apache.org En esta página, seleccionamos uno de los enlaces de descarga, posteriormente aparecerá un cuadro de dialogo en donde seleccionamos Guardar y damos clic en Aceptar. Gráfico 18.- Creación de Carpeta Apache CXF Elaboración: Marlon Carangui Fuente: www.cxf.apache.org Una vez descargado, descomprimimos el archivo donde encontraremos una carpeta similar a la de la imagen, esto nos servirá para compilar los WebServices. 14 Gráfico 19.- Confuiguracion de Apache CXF Elaboración: Marlon Carangui Fuente: www.cxf.apache.org Damos clic en Window -> Preferences, aparecerá un cuadro de dialogo en el cual iremos a Web Service - > CXF 2.x Preferences. Gráfico 20.- Pasos de seleccion carpeta Apache CXF 2 1 3 4 Elaboración: Marlon Carangui Fuente: www.cxf.apache.org En el cuadro de dialogo de CXF 2.x Preferences damos clic en: 15 1. –Add 2. Browser 3. Buscamos la carpeta apache-cxf-2.7.16 que descomprimimos en un paso anterior. 4. Seleccionamos la carpeta di damos clic en Aceptar. Gráfico 21.- Selección de opción Apache CXF 2 1 3 Elaboración: Marlon Carangui Fuente: www.cxf.apache.org En este cuadro damos clic en Finish, en el cuadro de Preference, seleccionamos la instalación de CXF que recién configuramos y damos clic en OK. 16 DESCARGA DE APACHE TOMCAT Y CONFIGURACION DE SERVIDORES WS Y WEB EN ECLIPSE Ingresamos a la página de Apache Tomcat: http://tomcat.apache.org/ Gráfico 22.- Pagina descargar Apache Tomcat 1 3 4 2 Elaboración: Marlon Carangui Fuente: www.tomcat.apache.org En la parte de descarga seleccionamos Tomcat 7.0, posteriormente seleccionaremos la versión acorde a nuestro sistema operativo (32bit – 64bit), aparecerá un cuadro de dialogo en donde escogeremos Guardar Archivo y después Aceptar. Descomprimimos el archivo que descargamos quedando una carpeta similar a la que se muestra en la imagen. Gráfico 23.- Archivo y carpeta descomprimida apache tomcat Elaboración: Marlon Carangui Fuente: www.cxf.apache.org 17 Después procedemos a copiar la carpeta que recién ha sido extraída, y pegarla en la misma ubicación que la original. Gráfico 24.- Creación de carpetas para servidores. Elaboración: Marlon Carangui Fuente: www.cxf.apache.org Después de realizar esto procedemos a cambiar de nombre a las dos carpetas que hemos creado. Gráfico 25.- Carpetas de Servidores WEB y WS Elaboración: Marlon Carangui Fuente: www.cxf.apache.org Una carpeta será renombrada como SERVERWEB y la otra como SERVERWS Ahora procederemos a realizar lo siguiente: Gráfico 26.- cambio de perspectiva a servidores Elaboración: Marlon Carangui Fuente: www.cxf.apache.org 18 En la pantalla principal de Eclipse damos clic en: Window -> Show view -> Other Gráfico 27.- Seleccion de Perspectiva Servers 1 2 3 Elaboración: Marlon Carangui Fuente: Marlon Carangui En esta parte en el panel de búsqueda escribiremos servers, ahí aparecerá la opción para visualizar los servidores que hay configurados, seleccionamos y damos clic en Ok. 19 CREACION Y CONFIGURACION DE SERVERWEB CREACION DE SERVERWEB Gráfico 28.- Creación de Servidores Elaboración: Marlon Carangui Fuente: Marlon Carangui PASO 1: Seleccionamos la pestaña Servers, en un espacio en blanco de esta pestaña damos clic derecho, aparecerá un menú donde escogeremos New -> Servers 20 Gráfico 29.- Selección del tipo de Servidor 1 2 3 Elaboración: Marlon Carangui Fuente: Marlon Carangui PASO 2: Aparecerá este cuadro de dialogo donde escogeremos: 1. Apache-> Tomcat v7.0 Server 2. Colocamos como Server Name : SERVERWEB 3. Damos clic en Next. 21 Gráfico 30.- Creación y selección de SERVERWEB 2 1 3 5 4 Elaboración: Marlon Carangui Fuente: Marlon Carangui PASO 3: En esta pantalla realizamos lo siguiente: 1. Seleccionamos el JRE (jre7) 2. Damos clic en Browse 3. Buscamos en el directorio la carpeta que renombramos como SERVERWEB, la seleccionamos dándole clic. 4. Damos clic en Aceptar. 5. Damos clic en Finish. Gráfico 31.- Configuración de servidor creado Dar doble clic sobre el Elaboración: Marlon Carangui Fuente: Marlon Carangui Ya está creado nuestro servidor WEB, dar doble clic sobre el servidor creado para configurar las opciones CONFIGURACIÓN DE SERVERWEB 22 Gráfico 32.- Configuración y parametrización serverweb 2 4 1 5 3 6 Elaboración: Marlon Carangui Fuente: Marlon Carangui En esta pantalla realizaremos lo siguiente: 1. Seleccionar Use Tomcat installation 2. En la pestaña Timeouts, cambiar el tiempo de Start a 100. 3. En Deploy path cambiar el directorio dando clic en Browse. 4. Se abrirá una un cuadro de dialogo donde tendrá que buscar en el directorio la carpeta SERVERWEB que creamos. 5. Dentro de la carpeta SERVERWEB buscamos y seleccionamos con un clic la carpeta webapps. 6. Y por último damos clic en Aceptar. Para guardar los cambios que hemos realizado basta con presionar Ctrl + S, o en su defecto dar clic en la opción guardar que es el icono de un diskette ubicado en la parte superior izquierda de Eclipse. CREACION Y CONFIGURACION DE SERVERWS CREACION DE SERVERWS Haremos el mismo Paso 1 para la creación de SERVERWEB 23 Gráfico 33.- Pasos de Creacion y configuracion SERVERWS 2 3 1 4 Elaboración: Marlon Carangui Fuente: Marlon Carangui Después realizamos lo siguiente: 1. Damos clic en Add. 2. En la ventana que se abre damos clic en Browse. 3. Buscamos y seleccionamos la carpeta SERVERWS y luego damos clic en Aceptar y en Finish 4. Cambiamos el nombre de Server Name a SERVERWS y damos clic en Finish CONFIGURACIÓN DE SERVERWS Se sigue el mismo orden con el que se configuro el SERVERWEB, pero con la diferencia que todo lo que se hizo se trabaje en base a la carpeta SERVERWS que se había creado anteriormente. 24 Gráfico 34.-Configuración y parametrización SERVERWS NOTA Elaboración: Marlon Carangui Fuente: Marlon Carangui Nota: Al momento de realizar la configuración, tomar en cuenta que los puertos de SERVERWEB y SERVERWS no se repitan, ya que esto ocasionaría problemas al momento de ejecutar los servidores. 25 INSTALACION DE HIBERNATE PARA MAPEO DE BASE DE DATOS Gráfico 35.- Instalación mediante MarketPlace Elaboración: Marlon Carangui Fuente: Marlon Carangui PASO 1: En la pantalla principal de eclipse seleccionamos: Help -> Eclipse Marketplace Gráfico 36.- Búsqueda de HIBERNATE Elaboración: Marlon Carangui Fuente: Marlon Carangui 26 PASO 2: Se abrirá una ventana de dialogo, en esta ventana tal como muestra la imagen, en el cuadro de búsqueda (Find), escribimos la palabra HIBERNATE. A continuación se presentara la opción de HEDL – HIBERNATE DEFINITION LANGUAGE 2.2.1, daremos clic en Install para proceder a instalar este plugin. Gráfico 37.- Confirmación de Instalación Elaboración: Marlon Carangui Fuente: Marlon Carangui PASO 3: En esta pantalla daremos clic en Confirmar para continuar con la instalación. Después de que se haya instalado la aplicación Eclipse se reiniciara para completar la actualización. ABRIR PERSPECTIVA EN HIBERNATE Gráfico 38.- Abrir perspectiva HIBERNATE Elaboración: Marlon Carangui Fuente: Marlon Carangui 27 Para abrir la perspectiva realizamos lo siguiente: damos clic en Window -> Open Perspective -> Other Gráfico 39.- Selección de perspectiva HIBERNATE Elaboración: Marlon Carangui Fuente: Marlon Carangui En la ventana que nos aparece seleccionamos Hibernate. CONFIGURACION DE ARCHIVOS PARA MAPEO DE BASE SQL-SERVER Una vez ya instalado y seleccionada la perspectiva de Hibernate procedemos a configurar los archivos necesarios para el mapeo de la base de datos. Se procede a crear el archivo de configuración (cfg.xml), esto los podemos realizar seleccionando en el menú de opciones: File ->New -> Hibernate Configuration File (cfg.xml). Esto debe ser realizado en la perspectiva Hibernate Gráfico 40.- Selección de archivo de configuración Elaboración: Marlon Carangui Fuente: Marlon Carangui 28 Gráfico 41.- Selección de la ruta para guardar el archivo de configuración Elaboración: Marlon Carangui Fuente: Marlon Carangui En esta parte escogemos la ruta donde guardaremos el archivo de configuración, y en esta misma pantalla le daremos el nombre con el que lo identificaremos para nuestro proyecto. Después de eso daremos clic en Next Gráfico 42.- Configuración de conexión a la Base de Datos Elaboración: Marlon Carangui Fuente: Marlon Carangui 29 En esta parte seleccionaremos el tipo de Base de Datos, Driver Class, Connection Url, Default Schema, Username y Password para establecer la conexión con la Base. Ahora procederemos a crear el archivo de Consola, esto lo haremos desde el menú: File -> New -> Hibernate Console configurtion. Gráfico 43.- configuración de Console Configuration Elaboración: Marlon Carangui Fuente: Marlon Carangui En esta parte utilizaremos el archivo que creamos anteriormente. Gráfico 44.- Console Configuration 1 2 2 Elaboración: Marlon Carangui Fuente: Marlon Carangui 30 Aquí seleccionamos en que paquete del proyecto guardaremos la configuración (1), y en donde también seleccionaremos el archivo de configuración (cfg.xml) que creamos en primera instancia (2). Gráfico 45.-Pre visualización de conexión a la Base Elaboración: Marlon Carangui Fuente: Marlon Carangui En la perspectiva de Hibernate podremos verificar la conexión establecida con la base, y así probar que esta haya sido realizada correctamente. Fig. 46 Gráfico 46.- Configuración de Ingeniería Inversa Elaboración: Marlon Carangui Fuente: Marlon Carangui 31 Después de realizar esto, crearemos el archivo de ingeniería inversa, esto lo podremos realizar desde el menú: File-> New-> Hibernate Reverse Engineering File. Gráfico 47.- Selección de ruta y nombre de archivo Reverse Engineering Elaboración: Marlon Carangui Fuente: Marlon Carangui Después de realizar esto daremos clic en Next. Gráfico 48.- Selección de las tablas para el Mapeo 1 2 3 Elaboración: Marlon Carangui Fuente: Marlon Carangui 32 En esta pantalla seleccionaremos la configuración de consola que creamos anteriormente (1). Para enlistar las tablas que deseamos mapear damos clic en Refresh, después de eso se mostraran las tablas de la Base de datos, según el esquema que hayamos escogido, en esta parte podremos seleccionar las tablas que vamos a mapear sombreando la tabla respectiva y dando clic en Include (2). Después de seleccionar las tablas que necesitaremos daremos clic en Finish (3). Gráfico 49.- Generación de código Hibernate Elaboración: Marlon Carangui Fuente: Marlon Carangui Ya con el archivo de ingeniería inversa creado, procederemos a generar el código respectivo de las tablas mapeadas. Gráfico 50.- Configuración para la generación de código. 33 Elaboración: Marlon Carangui Fuente: Marlon Carangui En esta pantalla daremos doble clic en Hibernate Code Generation, para habilitar la configuración de la generación de código. Gráfico 51.- Selección de archivo reveng.xml 1 2 4 3 Elaboración: Marlon Carangui Fuente: Marlon Carangui En esta pantalla realizaremos lo siguiente: 1. Configuración de Consola ya creada. 2. Seleccionamos Reverse engineer from JDBC Connection. 3. Presionamos en Setup para seleccionar el archivo reveng correspondiente. 4. En esta pantalla seleccionaremos el archivo reveng y damos clic en ok. 34 Gráfico 52.- Configuración de Exporters Elaboración: Marlon Carangui Fuente: Marlon Carangui En la pestaña Exporters, seleccionaremos Domain code (.java), Después de eso ingresaremos el nombre del paquete que deseamos para el proyecto, aplicamos los cambios y daremos clic en Run para generar los archivos de mapeo de la base de datos. Gráfico 53.- Generación de código Hibernate Elaboración: Marlon Carangui Fuente: Marlon Carangui 35 Gráfico 54.- Verificación de Clases generadas Elaboración: Marlon Carangui Fuente: Marlon Carangui Cambiando de perspectiva y abriendo el explorador de proyecto, podremos verificar en la ruta que seleccionamos los archivos de mapeo generados. 36 Crecimiento de la base de datos Según el levantamiento de información realizado en la carrera de Ingeniería en Sistemas y Networking, se obtuvo los siguientes datos acerca del ingreso de trámites: INGRESO DE TRAMITES MENSUAL SOLICITUDES 141 30% CERTIFICADOS 329 70% TOTAL 470 100% Elaboración: Marlon Carangui Fuente: Marlon Carangui Lo que nos indica que mensualmente los estudiantes realizan 470 tramites aproximadamente, de los cuales el 30% son solicitudes, y el 70% son certificados. Gráfico 55.- Tramites Ingresados Mensualmente Tramites Ingresados Mensualmente SOLICITUDES CERTIFICADOS 30% 70% Elaboración: Marlon Carangui Fuente: Marlon Carangui 37 Analizando la base de datos propuesta se obtuvieron los siguientes resultados: TAMAÑO POR CERTIFICADO Ingreso 2000 bytes Procesamiento 3000 bytes TOTAL 5000 bytes Elaboración: Marlon Carangui Fuente: Marlon Carangui TAMAÑO POR SOLICITUD Ingreso 2000 Imagen o Pdf 700000 Procesamiento 3000 TOTAL 705000 bytes bytes bytes bytes Elaboración: Marlon Carangui Fuente: Marlon Carangui Para las solicitudes se tomó en cuenta el ingreso de imágenes de máximo 700kb. Teniendo esta información se pudo obtener un estimado del crecimiento de la base de datos al mes: TAMAÑO MENSUAL TRAMITE TOTAL SOLICITUDES 99405000 CERTIFICADOS 1645000 TOTAL 101050000 TOTAL EN MB 96,37 bytes bytes bytes bytes MB Elaboración: Marlon Carangui Fuente: Marlon Carangui 38 Lo que nos indica que el 98% del tamaño en base al mes corresponde a las solicitudes y el 2% a certificados. Gráfico 56.- Tamaño Mensual de Trámites TAMAÑO MENSUAL DE TRAMITES CERTIFICADOS 2% SOLICITUDES 98% Elaboración: Marlon Carangui Fuente: Marlon Carangui Anualmente se ingresan 5640 trámites aproximadamente. TRAMITES ANUAL SOLICITUDES CERTIFICADOS TOTAL 1692 30% 3948 70% 5640 100% Elaboración: Marlon Carangui Fuente: Marlon Carangui 39 Calculando el tamaño al año del módulo de trámites se obtuvo la siguiente información: TAMAÑO ANUAL TRAMITE SOLICITUDES CERTIFICADOS TOTAL TOTAL TOTAL 1192860000 19740000 1212600000 1,13 bytes bytes bytes bytes GB Elaboración: Marlon Carangui Fuente: Marlon Carangui En total al año el módulo de tramites genera un tamaño de 1.13 GB aproximadamente, lo que indica que el modulo no genera demasiado requerimiento de disco duro en los servidores anualmente. 40