Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ARQUITECTURA
V1.0
________________________________________________________________________
Arequipa, 2017
CONTROL DE LA DOCUMENTACIÓN
MiniERP Arquitectura
V2.0
________________________________________________________________________
CONTROL DE LA CONFIGURACIÓN
HISTÓRICO DE VERSIONES
HISTÓRICO DE CAMBIOS
CONTENIDO
_______________________________________________________________Página 1 de 17
MiniERP Arquitectura
V2.0
1. Introducción 2
2. Herramientas Tecnológicas 2
3. Arquitectura Propuesta 5
4. Prototipo 6
5. Bibliografía 16
1. Introducción
2. Herramientas Tecnológicas
_______________________________________________________________Página 2 de 17
MiniERP Arquitectura
V2.0
Capa de Persistencia:
_______________________________________________________________Página 3 de 17
MiniERP Arquitectura
V2.0
Capa Negócio:
Java: Java fue diseñado para tener la apariencia de la C ++ lenguaje, pero es más fácil
de usar que C ++ y hace cumplir una programación orientada a objetos lo cual nos
ofrece ventaja para el diseño y mantenimiento del programa(flexible). Java nos permite
el funcionamiento de los programas en distintos Sistemas Operativos sin ningún
cambio(multiplataforma). Permite crear programas multitareas(formados por varios hilos
de ejecución) lo que ayuda al aprovechamiento de los modernos procesadores con
múltiples núcleos, incluye control de excepciones, como una alternativa para manejar
errores inesperados, como un fichero inexistente o una conexión de red perdida.
Librerías:
Jdk (Conjunto de herramientas (programas y librerías) que permiten desarrollar (compilar
ejecutar, generar documentación, etc) programas en lenguaje java).
spring-core(Es un framework para el desarrollo de aplicaciones y contenedor de
inversión de control(inyección de dependencias), de código abierto para la plataforma
java).
Capa de controladores:
spring-web (servicio REST)(Permite facilitar una capa de servicios que son ideales para
este tipo de programación como auditoría, o gestión de transacciones).
Cliente Rest
rest Template(spring-web, spring-webmvc)
Servicios Front
java, spring-core
Controladores
spring-web, spring-webmvc
Capa Web
JSP: La tecnología Java Server Pages (JSP) proporciona una forma simplificada, rápida
para crear contenido web dinámico. La tecnología JSP permite el desarrollo rápido de
aplicaciones basadas en web que son en servidor y la plataforma independiente. Con
JSP podemos crear aplicaciones web que se ejecuten en variados servidores web, de
múltiples plataformas, ya que Java es en esencia un lenguaje multiplataforma. Las
páginas JSP están compuestas de código HTML/XML mezclado con etiquetas especiales
para programar scripts de servidor en sintaxis Java. Por tanto, las JSP podremos
escribirlas con nuestro editor HTML/XML habitual
_______________________________________________________________Página 4 de 17
MiniERP Arquitectura
V2.0
Capa Seguridad
SPRING-SECURITY:Spring Security es un framework que se centra en la autenticación y
la autorización de las aplicaciones Java. Brinda el soporte integral y extensible tanto para
autenticar como para autorizar, la protección contra ataques como la fijación de sesión,
clickjacking , Falsificación de solicitud de sitio cruzado, etc.Integración API Servlet e
integración opcional con Spring Web MVC.
3. Arquitectura Propuesta
_______________________________________________________________Página 5 de 17
MiniERP Arquitectura
V2.0
4. Prototipo
Probaremos con el siguiente modelo de ER
_______________________________________________________________Página 6 de 17
MiniERP Arquitectura
V2.0
Tenemos 3 tablas:
● Tabla:general
● Persona
● Pago
Software usado:
- Tomcat 7
- Jdk 8
- Eclipse Neon
- MySql
- Notaciones de Spring
Son tablas básicas para probar la arquitectura en la figura 3, mostramos las carpetas que
necesitamos tener,
_______________________________________________________________Página 7 de 17
MiniERP Arquitectura
V2.0
Explicación:
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://127.0.0.1:3306/minierp" />
_______________________________________________________________Página 8 de 17
MiniERP Arquitectura
V2.0
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
p:packagesToScan="pe.edu.unsa.minierp.dominio"
p:dataSource-ref="dataSource">
<property name="jpaVendorAdapter">
Es la administración de las entidades
<bean
class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="generateDdl" value="false" />
<property name="showSql" value="true" />
<property name="databasePlatform"
value="org.hibernate.dialect.MySQL5Dialect" />
</bean>
</property>
</bean>
minierp-dom:
_______________________________________________________________Página 9 de 17
MiniERP Arquitectura
V2.0
_______________________________________________________________Página 10 de 17
MiniERP Arquitectura
V2.0
Ahora revisemos el POM, en las siguientes líneas le estamos indicando como se debe llamar el
projecto,
<build>
<finalName>minierp</finalName>
</build>
lo construimos para ser usado en los servicios.
En Resumen,
- Lo primero es crear nuestro dominio,
- Luego debemos crear su clase en persistencia, en el paquete minierp-web
- Crear la interfaz del servicio, en el paquete minierp-web
- Crear la implementación de interface, en el paquete minierp-web
- y luego crear su controller, en el paquete minierp-web
_______________________________________________________________Página 11 de 17
MiniERP Arquitectura
V2.0
hasta aquí tenemos el servicio creado pero para respetar la arquitectura tenemos que crearle un
proxy para comunicarse con los servicios y sea mucho más desacoplable.
- Crear la clase correspondiente en Proxy, en minierp-prx
ahora para
En la figura 4, vemos las carpetas que se deben de modificar para realizar y llegar a tener
servicios.
_______________________________________________________________Página 12 de 17
MiniERP Arquitectura
V2.0
_______________________________________________________________Página 13 de 17
MiniERP Arquitectura
V2.0
Lista de servicios disponibles, todos fueron probados con postma, una aplicación proporcionada
por Google chrome, :
http://localhost:8080/minierp/articulos/consultar/
http://localhost:8080/minierp/articulos/nuevo
{
"codigo" : "ART001",
"descripcion" : "Articulo 001",
"stock" : "100",
"precio" : "1.10"
}
http://localhost:8080/minierp/articulos/eliminar/ART001
http://localhost:8080/minierp/tablaGeneral/consultar
http://localhost:8080/minierp/pagos/nuevo/
{
_______________________________________________________________Página 14 de 17
MiniERP Arquitectura
V2.0
"monto" : "14.50",
"tipoDocumento" : {
"idCodigo" : "1",
"flag" : "2"
},
"tipoMoneda" : {
"idCodigo" : "2"
}
}
http://localhost:8080/minierp/pagos/consultar
http://localhost:8080/minierp/pagos/consultar/4
http://localhost:8080/minierp/pagos/eliminar/1
http://localhost:8080/minierp/personas/nuevo
{
"tipoDocumento" : {
"idCodigo" : "1"
},
"numeroDocumento" : "13241234",
"nombres" : "Henry",
"tipoZona" : {
"idCodigo" : "2"
},
"descripcionZona" : "simon bolivar",
"sexo" : {
"idCodigo" : "1"
}
}
http://localhost:8080/minierp/pagos/nuevo/
{
"monto" : "1234.50",
"tipoDocumento" : {
"idCodigo" : "1",
"flag" : "2"
},
"tipoMoneda" : {
"idCodigo" : "2"
},
"persona" : {
"tipoDocumento" : {
"idCodigo" : "1"
},
"numeroDocumento" : "13241234",
"nombres" : "Heddnry",
"tipoZona" : {
"idCodigo" : "2"
},
"descripcionZona" : "simosn bolivar",
"sexo" : {
"idCodigo" : "1"
}
}
}
http://localhost:8080/minierp/personas/consultar
_______________________________________________________________Página 15 de 17
MiniERP Arquitectura
V2.0
5. Bibliografía
https://desarrolloweb.com/directorio/programacion/java/jsp/
http://www.oracle.com/technetwork/java/javaee/jsp/index.html
https://jquery.com/
https://docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/#what-is-acegi-
security
https://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html
http://docs.spring.io/spring-security/site/docs/3.1.x/reference/springsecurity-single.html
http://www.mkyong.com/spring-mvc/spring-mvc-form-handling-example/
http://keylesson.com/index.php/2015/12/14/spring-mvc-data-binding-list-example-2458/
http://terasolunaorg.github.io/guideline/5.0.x/en/Overview/FirstApplication.html
_______________________________________________________________Página 16 de 17