Herramientas de usuario

Herramientas del sitio


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

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:guiadocmicroservicios [2020/05/19 18:50]
carlos.torres
ada:howto:sicoferp:factory:migracionsicoferp:process:backend:guiadocmicroservicios [2020/05/19 19:02] (actual)
carlos.torres
Línea 26: Línea 26:
 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]] 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]]
  
-==== Como implementar documentación OAS el Dominio de Clases de Entidades Comunes ​ ====+===== Como implementar documentación OAS con el Dominio de Clases de Entidades Comunes  ​=====
 Para usar el Dominio de Clases de Entidades Comunes en el proceso de documentación siga los siguientes pasos: Para usar el Dominio de Clases de Entidades Comunes en el proceso de documentación siga los siguientes pasos:
  
Línea 33: Línea 33:
  
 === Paso 2 === === Paso 2 ===
-cree un paquete llamado config+Cree un paquete llamado config
    
 === Paso 3 === === Paso 3 ===
Línea 75: Línea 75:
  
 === Paso 5 === === Paso 5 ===
-Documento ​las clases del microservicios ​con la especificación OAS((https://​github.com/​OAI/​OpenAPI-Specification/​blob/​master/​versions/​3.0.3.md)). Apoyese del proyecto modelo el cual tiene un ejemplo de configuración.+Documente ​las clases del microservicio ​con la especificación OAS((https://​github.com/​OAI/​OpenAPI-Specification/​blob/​master/​versions/​3.0.3.md)). Apoyese del proyecto modelo el cual tiene un ejemplo de configuración.
  
 <code java> <code java>
-package co.ada.test.microservice.prueba.dbconnect;+//EJEMPLO CONTROLADOR 
 +package co.ada.test.microservicio.pruebamodel.controller;​ 
 + 
 +import java.util.List;
  
 import org.springframework.beans.factory.annotation.Autowired;​ import org.springframework.beans.factory.annotation.Autowired;​
-import org.springframework.beans.factory.annotation.Qualifier+import org.springframework.http.HttpStatus
-import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder+import org.springframework.http.ResponseEntity
-import org.springframework.context.annotation.Bean;​ +import org.springframework.web.bind.annotation.GetMapping
-import org.springframework.context.annotation.Configuration+import org.springframework.web.bind.annotation.RestController;
-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.core.controller.AdaController
-import co.ada.db.config.IDataSourceConfig;+import co.ada.models.microservicio.usuario.Employee;​ 
 +import co.ada.models.microservicio.usuario.Usuario;​ 
 +import co.ada.test.microservicio.pruebamodel.service.EmployeeService;​ 
 +import co.ada.test.microservicio.pruebamodel.service.UserService;​ 
 +import io.swagger.v3.oas.annotations.Operation;​ 
 +import io.swagger.v3.oas.annotations.tags.Tag;
  
-@Configuration +@Tag(name = "Controlador Servicios", ​description ​= "Controlador de prueba de Servicios de ejemplo") 
-@EnableJpaRepositories( +@RestController 
- basePackages ​= "co.ada.test.microservice.prueba.repo",//Ver Nota 1 +public class ServiciosController ​extends ​AdaController{
- transactionManagerRef ​= "transcationManager",​ +
- entityManagerFactoryRef = "​entityManager") +
-@EnableTransactionManagement +
-public class MyDataSourceConfig ​extends ​DataSourceConfigBase ​{ +
  
- @Bean(name = "​entityManager"​) + @Autowired 
- public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean(EntityManagerFactoryBuilder builder) { + private EmployeeService employeeService
- return builder.dataSource(dataSource()).packages("​co.ada.models.microservicio.usuario"​).build();//Ver Nota 2 +  
- }+ @Autowired 
 + private UserService usuarioServicie;​
  
- @Bean(name = "transcationManager") + @Operation(summary ​= "Consultar Empleados",​ description = "​Ejemplo de documentación de servicio de lista de empleados") 
- public JpaTransactionManager transactionManager(@Autowired @Qualifier("entityManager"​) ​LocalContainerEntityManagerFactoryBean entityManagerFactoryBean) { + @GetMapping(value = "employee") 
- return ​new JpaTransactionManager(entityManagerFactoryBean.getObject());+ public ResponseEntity<​List<​Employee>>​ getEmployees() { 
 + return ​ResponseEntity.status(HttpStatus.ACCEPTED).body(employeeService.getEmployees());
  }  }
 +
 + @Operation(summary = "​Consultar Usuarios",​ description = "​Ejemplo de documentación de servicio de lista de usuarios"​)
 + @GetMapping(value = "​usuarios"​)
 + public ResponseEntity<​List<​Usuario>>​ getUsuarios() {
 + return ResponseEntity.status(HttpStatus.ACCEPTED).body(usuarioServicie.getUsuarios());​
 + }
 } }
 </​code>​ </​code>​
  
-== Nota 1 == +<code java> 
-Registre el paquete local donde tiene los repositorios ​dao de acceso a datos.+//EJEMPLO ENTIDAD 
 +package co.ada.models.microservicio.usuario;
  
-== Nota 2 == +import java.io.Serializable;​
-Registre el paquete de entidades del Dominio de Clases de Entidades Comunes que utilizará con los repositorio.+
  
-==== Repositorios ==== +import javax.persistence.Column;​ 
-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 funcionalidadEl repositorio esta ubica en el paquete co.ada.db.config.repository y contiene la clase que a continuación se describe:+import javax.persistence.Entity; 
 +import javax.persistence.GeneratedValue;​ 
 +import javax.persistence.GenerationType;​ 
 +import javax.persistence.Id;​ 
 +import javax.persistence.Table;​ 
 +import javax.validation.constraints.NotNull;
  
-<code java> +import io.swagger.v3.oas.annotations.media.Schema;
-package co.ada.db.config.repository;+
  
-import org.springframework.data.jpa.repository.JpaRepository;​ +@Schema( 
-import org.springframework.stereotype.Repository;​+      name = "​Rol",​ 
 +      ​description = "Clase entidad que contiene la definición de la tabla Rol" 
 +
 +@Entity 
 +@Table(name="​roles"​) 
 +public class Role implements Serializable {
  
-@Repository + /** 
-public interface JpaAdaRepository<​TID> extends JpaRepository<​T,​ ID> ​{}+ *  
 + */ 
 + private static final long serialVersionUID = 6595145379859167872L;​ 
 +  
 + @NotNull 
 + @Id 
 + @GeneratedValue(strategy = GenerationType.IDENTITY) 
 + private Long id; 
 +  
 + @NotNull 
 + @Column(unique = truelength = 128) 
 + private String nombre; 
 + 
 + public Role() ​{
 + 
 + public Long getId() { 
 + return id; 
 +
 + 
 + public void setId(Long id) { 
 + this.id = id; 
 +
 + 
 + public String getNombre() { 
 + return nombre; 
 +
 + 
 + public void setNombre(String nombre) { 
 + this.nombre = nombre; 
 +
 +}
 </​code>​ </​code>​
 +
 +==== Recomendaciones ====
 +  * Toda documentación debe ser clara y precisa.
 +  * Toda entidad debe estar documentada en la especificación OAS para ser incluida en el Dominio de clases y Entidades Comunes.
 +  * Todo Controller debe ser documentado mínimo en todas las operaciones expuestas.
 +  * Cada operación expuesta debe documentar los códigos de retorno generados en el consumo.
 +
  
 [[ada:​howto:​sicoferp:​factory:​migracionsicoferp:​process:​backend|←Volver atrás]] [[ada:​howto:​sicoferp:​factory:​migracionsicoferp:​process:​backend|←Volver atrás]]
ada/howto/sicoferp/factory/migracionsicoferp/process/backend/guiadocmicroservicios.1589914231.txt.gz · Última modificación: 2020/05/19 18:50 por carlos.torres