Muestra las diferencias entre dos versiones de la página.
| 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:51] 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 funcionalidad. El 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<T, ID> extends JpaRepository<T, ID> {} | + | * |
| + | */ | ||
| + | private static final long serialVersionUID = 6595145379859167872L; | ||
| + | |||
| + | @NotNull | ||
| + | @Id | ||
| + | @GeneratedValue(strategy = GenerationType.IDENTITY) | ||
| + | private Long id; | ||
| + | |||
| + | @NotNull | ||
| + | @Column(unique = true, length = 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]] | ||