1 Proyecto Preventaweb Documentación Proyecto Preventaweb ÍNDICE 1. Estructura del Proyecto .................................................................................................. 2 2. Organización en Capas................................................................................................. 12 Capa de Acceso a Datos .......................................................................................... 12 Capa de Negocios ...................................................................................................... 12 Capa de Servicios Web. ............................................................................................ 12 Capa de Vista de la Aplicación. .............................................................................. 12 Proyecto Preventaweb 2 1. Estructura del Proyecto El Proyecto del sistema preventa web constituye el centro de funcionalidad de la aplicación, es decir, el Servidor del mismo. El mismo se encuentra estructurado como una aplicación Java de tipo web. El mismo lo que hace es publicar los servicios básicos en el servidor de aplicaciones Apache Tomcat. Para ello, implementa las funcionalidades básicas de altas, bajas y modificaciones de los diferentes registros de las tablas de la base de datos. Para ello, se estructura a la aplicación en diferentes capas, entre las cuales se considera las clases de acceso a datos, los ABM de los registros, el mapeo de entidades de datos relacionales al modelo de objetos, y los servicios web. La idea base de este proyecto es la de funcionar como el servidor de datos de la aplicación, de modo tal que la misma maneje en forma centralizada las sincronizaciones de los distintos vendedores que utilizan la aplicación Android en una base de datos SQLite central, para luego levantar los cambios en el ERP. Para ello se hizo uso de los lenguajes y los frameworks que se mencionó anteriormente: En el Servidor: o Todo el desarrollo completo del sistema se realizó en el entorno de desarrollo Eclipse. o Se utilizó el lenguaje de programación Java para desarrollar todas las capas. o Se utilizan archivos XML para efectuar la configuración de los distintos componentes de la aplicación. o Se utiliza Hibernate para construir la capa de acceso a datos. o Se utiliza Spring para formular el sistema de modo de exponer sus funcionalidades mediante Servicios Web. o Se utiliza Apache Maven para manejar la estructura completa del proyecto y gestionar las dependencias. o El componente Servidor de la aplicación se publica en el servidor Apache, de modo tal que desde el cliente se consuman los servicios web y se utilicen bases de datos SQLite para sincronizar información en estado offline u online. En el cliente se trata de una aplicación Android, que opera sobre dispositivos móviles que brindan soporte a la misma. Esta aplicación consume los servicios web publicados por el servidor (La aplicación Java Web) para sincronizarse con los datos del mismo; cuando se encuentra offline, registra todas sus operaciones mediante el uso de bases de datos SQLite localmente; y cuando se encuentra online, se conecta al servidor y sincroniza sus datos en el mismo mediante los servicios web. La estructuración del proyecto Preventaweb es la indicada en la figura siguiente: 3 Proyecto Preventaweb Como se puede visualizar en la figura correspondiente, el proyecto parte del directorio ar.com.vgmsistemas. Dentro de la estructura básica, para la vista de exploración tenemos: src/main/java – en este paquete se muestran todos los paquetes de la aplicación. Los mismos son: o ar.com.vgmsistemas.dto – este paquete contiene todas las clases de entidad que representan los objetos de acceso a datos. Cada clase Java define un objeto de la base de datos que se corresponde con una tabla de la misma, y se caracteriza por poseer los atributos correspondientes, los getters y setters de cada uno. 4 Proyecto Preventaweb o ar.com.vgmsistemas.dto.mapping – este paquete contiene todos los ficheros de mapeo XML de las tablas de la base de datos, los mismos son los correspondientes a cada clase del paquete anterior. Son ficheros que tienen la extensión .hbm.XML, ya que son los ficheros de mapeo de Hibernate. 5 Proyecto Preventaweb o ar.com.vgmsistemas.dao – este paquete contiene interfaces asociadas con las cada objeto de datos que extienden de la clase IGenericDao, la cual tiene los métodos de ABM y consultas básicos y sin implementación. 6 Proyecto Preventaweb o ar.com.vgmsistemas.dao.filesystem – este paquete posee la clase denominada ManageFilesDao.java, la cual se caracteriza por realizar operaciones sobre archivos del sistema de archivos del equipo. Se utiliza para cargar, copiar o transferir datos en la base de datos en función a lo presente en los archivos. o ar.com.vgmsistemas.dao.hibernate – este paquete posee las clases necesarias para realizar el ABM de las diferentes entidades, mapeadas a archivos XML en el paquete dto.mapping, de las cuales cada una extiende de 7 Proyecto Preventaweb la clase GenericHibernateDao.java, la cual define los métodos base que son implementados en las otras. o ar.com.vgmsistemas.Helper – este paquete posee la clase Helper, que posee los métodos básicos para manejar el contexto de los servicios web, con JAXB1. o ar.com.vgmsistemas.service – este paquete contiene las interfaces correspondientes a los servicios web de la aplicación. Los mismos luego son implementados en el paquete webservice. 1 JAXB: es una clase que forma parte del estándar para servicios web con SOAP y otras clases asociadas, JAXR y JAXW-S. 8 Proyecto Preventaweb o ar.com.vgmsistemas.webservice – este paquete posee las clases java correspondientes a la implementación de cada servicio web. o ar.com.vgmsistemas.configuration – este paquete posee la clase java Configuracion.java, la cual permite trabajar con la base de datos nativamente, y posee los métodos para manejar el nombre y la URL de la base de datos. 9 Proyecto Preventaweb o ar.com.vgmsistemas.bo – este paquete contiene las clases que abstraen los procesos de negocio de la aplicación. Las mismas llaman a sus correspondientes concretizaciones en el paquete Bo. src/main/resources – este directorio contiene los recursos correspondientes de la aplicación. En este caso, se cuenta con el fichero log4j.properties, el cual se utiliza para el manejo de eventos de log de la aplicación y es el único recurso requerido por la misma. src/test/java – en este directorio se deben ubicar los ficheros de test de unidad JUnit para el sistema, que en esta implementación no se disponen. src/test/resources – en este directorio se ubican los recursos para los test definidos en el paquete anterior. JRE System Library – en este directorio se ubican todas las librerías utilizadas por la aplicación. 10 Proyecto Preventaweb Maven Dependencies – en este paquete se ubican todas las dependencias requeridas por el componente Maven que utiliza la aplicación. src – este paquete contiene los ficheros y archivos de configuración de la aplicación 11 Proyecto Preventaweb En donde se puede visualizar los directorios main y test. Dentro del directorio main tenemos el directorio de la aplicación, llamado webapp y dos subdirectorios asociados; bd donde tenemos los ficheros de configuración de la base de datos y WEB-INF, que contiene los ficheros de configuración XML de la aplicación. Luego se tiene el fichero index.jsp, que es la página que se mostrará al inicio en el navegador web cuando se inicialice la aplicación. Target – contiene todos los componentes que se empaquetarán dentro de la aplicación cuando se la construya para obtener el fichero .war. Pom.xml – es el fichero de configuración de implementa el modelo de objetos de Maven para la aplicación. En el desarrollo del proyecto Preventaweb se utiliza la herramienta de versionado para mantener bajo control de versiones al mismo. Para ello, se dispone de un repositorio Google Code y allí se encuentra depositado el código fuente del proyecto. La estructura del repositorio es la siguiente: 12 Proyecto Preventaweb En donde se puede visualizar que el árbol de estructuración del proyecto posee dos ramas, Cobranza y Egresos. Cobranza es la raíz del sistema definitivo y egresos es la copia correspondiente que se encuentra en producción. 2. Organización en Capas El proyecto Preventaweb se caracteriza por poseer una arquitectura ClienteServidor, siendo las siguientes las capas que lo conforman: Capa de Acceso a Datos: en esta capa se encuentra toda la lógica para el acceso a los datos presentes en la base de datos de la aplicación. Se realiza el mapeo objeto-relacional con los datos presentes en la bases de datos SQLite. (Para más información, ver Documentación Capa de Acceso a Datos). Capa de Negocios: en esta capa se encuentra toda la lógica de la aplicación cuya función es la de realizar las operaciones definidas para el negocio en sí. Las funciones generales aquí son las de alta, baja y modificaciones. (Para más información, ver Documentación Capa de Negocios). Capa de Servicios Web: en esta capa se encuentran presente los diferentes servicios web, que proveen las funcionalidades para ser consumidas por las aplicaciones Android que corren en los dispositivos móviles. (Para más información, ver Documentación Capa de Servicios Web). Capa de Vista de la Aplicación: en esta capa se ubica toda la lógica para construir la interface de usuario de tipo web de la aplicación. En esta implementación en particular no se puso énfasis en esta capa ya que lo importante es ofrecer los servicios web para que los clientes puedan consumirlos. Es por ello que no se documenta esta capa.