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

Próxima revisión
Revisión previa
ada:howto:sicoferp:factory:migracionsicoferp:process:backend:guiaaccesoadatos [2020/05/12 20:25]
carlos.torres creado
ada:howto:sicoferp:factory:migracionsicoferp:process:backend:guiaaccesoadatos [2020/05/12 22:43] (actual)
carlos.torres
Línea 11: Línea 11:
  
 ===== Configuraciones del Microservicio ===== ===== Configuraciones del Microservicio =====
-Todo microservicio debe tener su configuración ​centralizada en el repositorio git definido en la fabrica, sin embargo existen situaciones donde un microservicio puede requerir configuraciones particulares. A continuación se definen los escenarios donde aplicarán cada tipo de configuració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:
  
-==== Configuración Centralizada ==== +<code xml> 
-  ​* Configuración de Registro y Descubrimiento (Cloud Config ​/ Eureka) +<​dependency>​ 
-  ​* Configuración de Routing (Zuul) +  ​<​groupId>​co.ada.models<​/groupId> 
-  ​* Base de Datos Centralizada+  ​<​artifactId>​ModelsClassesADA</​artifactId>​ 
 +  ​<​version>​0.0.1-SNAPSHOT</​version>​ 
 +</​dependency>​ 
 +</​code>​
  
-==== Configuración Local ==== +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]]
-  * Lógica ​del Negocio+
  
-==== Archivos ​de Configuración ​==== +==== Como usar el Dominio ​de Clases de Entidades Comunes  ​==== 
-Se define ​los siguientes ​tipos de archivos de configuración +Para usar el Dominio de Clases de Entidades Comunes siga los 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 ==== +  ​* Registre ​la dependencia actualizada ​del Dominio ​de Clases ​de Entidades Comunes. 
-  ​* 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 ​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. 
-  * El nombre del archivo ​de configuración centralizada debe ser **bootstrap.yml** +  * Importe las clases que desea utilizar en las clases ​del microservicio.
-  * 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) ===== +==== Implementar soporte ​de bases de datos ==== 
-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.  +Para implementar ​el soporte de bases de datos realice lso siguientes pasos:
-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.+
  
-  * Cada clase/​entidad no debe tener lógica de negocio. +=== Paso 1 === 
-  * Cada clase/​entidad debe describir ​la estructura en su totalidad +Registre ​la dependencia actualizada ​del Dominio ​de Clases ​de Entidades Comunes.
-  * 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 ​==== +=== Paso 2 === 
-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): +cree un paquete llamado dbconnect 
-  * 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): +=== Paso 3 === 
-  * Producción (prod):+Cree el datasource interceptor como se muestra continuación.
  
-==== Dependencia Maven ==== +<code java> 
-Esta es la dependencia que debe agregar en el POM del microservicio.+package co.ada.test.microservice.prueba.dbconnect;​
  
-<​code>​ +import org.springframework.stereotype.Component;​ 
-<​dependency>​ + 
-  <​groupId>​co.ada.models</​groupId>​ +import ​co.ada.db.config.DataSourceInterceptor;​ 
-  <​artifactId>​ModelsClassesADA</​artifactId>​ + 
-  <​version>​0.0.1-SNAPSHOT</​version>​ +@Component 
-</​dependency>​+public class MyDataSourceInterceptor extends DataSourceInterceptor {}
 </​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.1589315102.txt.gz · Última modificación: 2020/05/12 20:25 por carlos.torres