Herramientas de usuario

Herramientas del sitio


ada:howto:sicoferp:factory:migracionsicoferp:process:backend:guiaaccesoadatos

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
ada:howto:sicoferp:factory:migracionsicoferp:process:backend:guiaaccesoadatos [2020/05/12 20:30]
carlos.torres
ada:howto:sicoferp:factory:migracionsicoferp:process:backend:guiaaccesoadatos [2020/05/12 22:43] (actual)
carlos.torres
Línea 13: Línea 13:
 Todo microservicio que realice persistencia de datos o que consuma servicios que devuelvan entidades debe incluir en su archivo de configuración Maven **POM**((https://​www.tutorialspoint.com/​maven/​maven_pom.htm)) la dependencia del proyecto del Dominio de clases y entidades Comunes el cual se describe a continuación:​ Todo microservicio que realice persistencia de datos o que consuma servicios que devuelvan entidades debe incluir en su archivo de configuración Maven **POM**((https://​www.tutorialspoint.com/​maven/​maven_pom.htm)) la dependencia del proyecto del Dominio de clases y entidades Comunes el cual se describe a continuación:​
  
-<​code>​+<​code ​xml>
 <​dependency>​ <​dependency>​
   <​groupId>​co.ada.models</​groupId>​   <​groupId>​co.ada.models</​groupId>​
Línea 21: Línea 21:
 </​code>​ </​code>​
  
-El desarrollador debe utilizar la versión más reciente del proyecto la cual puede ser consultada en la sección ​+El desarrollador debe utilizar la versión más reciente del proyecto la cual puede ser consultada en la sección ​[[ada:​howto:​sicoferp:​factory:​migracionsicoferp:​process:​backend:​apiversion | Versionamiento de APIs]]
  
-==== Configuración Centralizada ​==== +==== Como usar el Dominio de Clases de Entidades Comunes  ​==== 
-  * Configuración ​de Registro y Descubrimiento (Cloud Config / Eureka) +Para usar el Dominio ​de Clases ​de Entidades Comunes siga los siguientes pasos:
-  * Configuración de Routing (Zuul) +
-  * Base de Datos Centralizada+
  
-==== Configuración Local ==== +  * Registre la dependencia actualizada del Dominio de Clases de Entidades Comunes. 
-  * Lógica ​del Negocio+  * Registre en la clase principal del Microservicio la anotación <code java>​@EntityScan({"​array de clases o paquetes"​}) </​code>​con las clases o paquetes que desea utilizar. 
 +  * Importe las clases que desea utilizar en las clases ​del microservicio.
  
-==== Archivos ​de Configuración ​==== +==== Implementar soporte ​de bases de datos ==== 
-Se define los siguientes tipos de archivos ​de configuración +Para implementar el soporte ​de bases de datos realice lso siguientes pasos:
-  * Configuración Centralizada:​ Archivos [[https://​es.wikipedia.org/​wiki/​YAML|Yaml]] +
-  * Configuración Local: Archivos [[https://​en.wikipedia.org/​wiki/​.properties|Properties]]+
  
-==== Reglas de Nombre del Microservicio y Archivo de Configuración ==== +=== Paso 1 === 
-  * El nombre de la aplicación ​del microservicio debe ser definido ​de acuerdo al nombre exacto del paquete principal **Ejemplo**:​ //​co.ada.sicof.terceros//​ +Registre ​la dependencia actualizada ​del Dominio ​de Clases ​de Entidades Comunes.
-  * El nombre del archivo de configuración centralizada debe ser **bootstrap.yml** +
-  * El nombre del archivo de configuracion local debe ser **application.properties** +
-  * Deben existir configuraciones por cada ambiente de despliegue en el repositorio de configuración y cada archivo de configuración debe indica el perfil los cuales son dev: desarrollo - test: QA - prod: producción **Ejemplo:​** Microservicio:​ Terceros, Paquete Principal: //​co.ada.sicof.terceros//,​ Nombre del Microservicio spring.application.name=co.ada.sicof.terceros,​ perfil de ambiente de despliegue de desarrollo: dev, Nombre del archivo de configuración:​ **co.ada.sicof.terceros-dev.yml** +
-  * La creación de los archivos de configuración centralizada deben ser solicitados al administrador del repositorio ​de configuración (Pablo Quintana / Carlos Torres).+
  
-===== Dominio de Clases de Entidades Comunes (Models) ​===== +=== Paso 2 === 
-En la arquitectura propuesta es muy común que existan microservicios que proveen información y otros que la procesan, por esta razon hace necesario ​el conocimiento de las estructuras en las cuales se transportan los datos ya que en muchos escenarios persisten en el sistema.  +cree un paquete llamado dbconnect 
-Teniendo presente esta situación recurrente se crea un domino de clases y entidades comunes (proyecto spring) donde se van a registrar todas la entidades que puedan ser requeridas por microservicios. A ontinuación ​se definen las reglas a considerar para incluir una entidad.+  
 +=== Paso 3 === 
 +Cree el datasource interceptor como se muestra continuación.
  
-  * Cada clase/​entidad no debe tener lógica de negocio. +<code java> 
-  * Cada clase/​entidad debe describir la estructura en su totalidad +package ​co.ada.test.microservice.prueba.dbconnect;
-  * Cada clase/​entidad debe estar agrupada según la estructura de definición de su parque principal teniendo presente que el nombre base empezará con la estrucutra base del domino de clases y entidades comunes Ejemplo: Para el microservicio **co.ada.sicof.contabilidad.tercero** su agrupación de entidades en el proyecto de dominio de clases de entidades comunes debe ser **co.ada.models.sicof.contabilidad.tercero** +
-  * Se puede inlcuir definiciones resumidas de una entidad. +
-  * La inclusión de esas entidades debe ser validada y aprobada por el administrador del dominio de clases y entidades comunes.+
  
-==== Como utilizar el proyecto Models ==== +import org.springframework.stereotype.Component;
-De acuerdo al ambiente de despliegue el proyecto domino de clases y entidades comunes estará en uno de los siguientes repositorios (versión compilada ​.jar): +
-  * Desarrollo (dev): http://​adacsc.co:​1443/​svn/​repository/​ADA/​SICOFERP/​fuentes/​branches/​development/​core/​ModelsClassesADA/​target/​CommonsClassesADA-0.0.1-SNAPSHOT.jar +
-  * Pruebas/​calidad (qa): +
-  * Producción (prod):+
  
-==== Dependencia Maven ==== +import co.ada.db.config.DataSourceInterceptor;​
-Esta es la dependencia que debe agregar en el POM del microservicio.+
  
-<​code>​ +@Component 
-<​dependency>​ +public class MyDataSourceInterceptor extends DataSourceInterceptor {}
-  <​groupId>​co.ada.models</​groupId>​ +
-  <​artifactId>​ModelsClassesADA</​artifactId>​ +
-  <​version>​0.0.1-SNAPSHOT</​version>​ +
-</​dependency>​+
 </​code>​ </​code>​
  
-Es responsabilidad del desarrollador utilizar ​la versión más reciente las cual será publica en la sección correspondiente ​de la wiki.+=== Paso 4 === 
 +Cree la clase de configuración como se muestra continuación.
  
-Para utilizar el dominio de clases y entidades comunes en los micoservicios siga los siguientes pasos:+<code java>​package co.ada.test.microservice.prueba.dbconnect;​
  
-  - Identifique el ambiente dev, qa o prod a utilizar +import org.springframework.context.annotation.Configuration;​
-  - Identifique la versión actual (muy importante para evitar versiones obsoletas) +
-  - Importe la dependencia en Maven +
-  - Agregue la dependencia @EntityScan con el array de los paquetes o clases que necesita en la clase principal del microservicio.+
  
-  +import co.ada.db.config.WebConfig;​
-[[ada:​howto:​sicoferp:​factory:​migracionsicoferp:​process:​backend|←Volver atrás]]+
  
 +@Configuration
 +public class MyWebConfig extends WebConfig {}
 +</​code>​
 +
 +=== Paso 5 ===
 +Cree la clase de configuración de repositorio teniendo presente el siguiente ejemplo:
 +
 +<code java>
 +package co.ada.test.microservice.prueba.dbconnect;​
 +
 +import org.springframework.beans.factory.annotation.Autowired;​
 +import org.springframework.beans.factory.annotation.Qualifier;​
 +import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;​
 +import org.springframework.context.annotation.Bean;​
 +import org.springframework.context.annotation.Configuration;​
 +import org.springframework.data.jpa.repository.config.EnableJpaRepositories;​
 +import org.springframework.orm.jpa.JpaTransactionManager;​
 +import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;​
 +import org.springframework.transaction.annotation.EnableTransactionManagement;​
 +
 +import co.ada.db.config.DataSourceConfigBase;​
 +import co.ada.db.config.IDataSourceConfig;​
 +
 +@Configuration
 +@EnableJpaRepositories(
 + basePackages = "​co.ada.test.microservice.prueba.repo",//​Ver Nota 1
 + transactionManagerRef = "​transcationManager",​
 + entityManagerFactoryRef = "​entityManager"​)
 +@EnableTransactionManagement
 +public class MyDataSourceConfig extends DataSourceConfigBase {
 +
 + @Bean(name = "​entityManager"​)
 + public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean(EntityManagerFactoryBuilder builder) {
 + return builder.dataSource(dataSource()).packages("​co.ada.models.microservicio.usuario"​).build();//​Ver Nota 2
 + }
 +
 + @Bean(name = "​transcationManager"​)
 + public JpaTransactionManager transactionManager(@Autowired @Qualifier("​entityManager"​) LocalContainerEntityManagerFactoryBean entityManagerFactoryBean) {
 + return new JpaTransactionManager(entityManagerFactoryBean.getObject());​
 + }
 +}
 +</​code>​
 +
 +== Nota 1 ==
 +Registre el paquete local donde tiene los repositorios / dao de acceso a datos.
 +
 +== Nota 2 ==
 +Registre el paquete de entidades del Dominio de Clases de Entidades Comunes que utilizará con los repositorio.
 +
 +==== Repositorios ====
 +Se define en el Dominio de Clases de Entidades Comunes el repositorio estandar para acceso a datos el cual debe ser utilizado en todos los microservicios que requieran esa funcionalidad. El repositorio esta ubica en el paquete co.ada.db.config.repository y contiene la clase que a continuación se describe:
 +
 +<code java>
 +package co.ada.db.config.repository;​
 +
 +import org.springframework.data.jpa.repository.JpaRepository;​
 +import org.springframework.stereotype.Repository;​
 +
 +@Repository
 +public interface JpaAdaRepository<​T,​ ID> extends JpaRepository<​T,​ ID> {}
 +</​code>​
 +
 +[[ada:​howto:​sicoferp:​factory:​migracionsicoferp:​process:​backend|←Volver atrás]]
ada/howto/sicoferp/factory/migracionsicoferp/process/backend/guiaaccesoadatos.1589315457.txt.gz · Última modificación: 2020/05/12 20:30 por carlos.torres