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 particularesA 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