ONess proporciona una arquitectura estable que integra las soluciones más innovadoras del mundo open source en un proceso de desarrollo ágil.
Está compuesto de una serie de módulos, cada uno de ellos con una funcionalidad específica.
common es la base del resto de los sistemas
user gestión de usuarios
party agrupa la funcionalidad referida a los contactos, tanto clientes como proveedores, empleados,...
inventory contiene toda la información referida a los productos y su gestión: modelos, productos, almacenes, precios,...
order abarca el proceso desde pedido hasta factura pasando por albarán.
Cada uno de estos módulos se divide a su vez arquitecturalmente en model y webapp, conteniendo el primero la capa modelo y el segundo las capas controlador y vista de la arquitectura MVC que se discutirá posteriormente en el Capítulo 3, Justificación.
En cuanto a funcionalidad, el núcleo del sistema proporciona características como control de acceso a usuarios, con auditoría completa de los cambios realizados por éstos, o soporte para el desarrollo de vistas personalizadas según el tipo de navegador, lo que permite que se adapte fácilmente la totalidad del sistema a dispositivos móviles como PDAs.
Cada uno de los módulos proporciona una funcionalidad bien definida, cubriendo los procesos habituales de una empresa mayorista, como son la gestión de clientes y proveedores, el control de existencias y los procesos de compras y ventas de mercancías. Todo ello desarrollado sobre el núcleo del sistema y tomando ventaja de las características que éste proporciona de forma transparente, obteniendo así un proceso de desarrollo de nueva funcionalidad realmente rápido.
ONess se basa principalmente en los siguientes estándares y tecnologías que se describirán en la Sección 6.3, “Tecnologías”.
J2EE (Java 2, Enterprise Edition), versión empresarial de la plataforma de desarrollo de aplicaciones Java 2, de Sun Microsystems, que aporta estándares tecnológicos para la creación de aplicaciones web (servlets, JSP), el acceso a bases de datos (JDBC), el tratamiento de XML (JAXP), servicios de directorio (JNDI), etc.
Maven, gestor de información de proyecto.
AspectJ, extensión del lenguaje Java proporcionando características de orientación a aspectos.
Spring Framework, entorno para el desarrollo de aplicaciones fomentando el patrón inversión de control y la integración entre tecnologías.
Acegi Security System for Spring, proyecto que incorpora características de seguridad dentro de Spring.
Hibernate, un mapeador objeto-relacional que proporciona un puente entre la programación orientada a objetos y los sistemas de gestión de bases de datos relacionales.
XDoclet, generador de código a partir de atributos en el código fuente.
Struts, framework que proporciona la capa controlador y parte de la capa vista en aplicaciones web basadas en la arquitectura MVC.
JSP (Java Server Pages) para el desarrollo del interfaz.
Tiles utilizado para el desarrollo de páginas web en componentes.
CSS (Cascading Style Sheets), hojas de estilo para desarrollar interfaces de usuario más potentes y separar de mejor manera la presentación de los datos.
JSTL (JavaServer Pages Standard Tag Library), librería de etiquetas estándar que sustituye el código Java por el uso de etiquetas XML en las páginas JSP.
JUnit, DBUnit, JMock y StrutsTestCase para realizar los tests del sistema.
Sistemas de Gestión de Bases de Datos, pudiendo trabajar actualmente con tres importantes sistemas como son Oracle, PostgreSQL y MySQL.
Tomcat, contenedor de aplicaciones web que proporciona la implementación estándar del API servlets y JSP, aunque cualquier otra implementación puede ser usada.