InciManager_e3b
Módulo de gestión y carga de incidencias (equipo de prácticas @Arquisoft/course1718_e3b2).
Este proyecto ha sido desarrollado como práctica de la asignatura Arquitectura del Software perteneciente al tercer curso del Grado en Ingeniería Informática del Software impartido en la Escuela de Ingenieria Informática (EII) de la Universidad de Oviedo durante el curso 2017/2018. La práctica consiste en la implementación de un sistema informático de análisis de incidencias (Incidence System_e3b) cuya estructura ha sido dividida en los siguientes módulos:
- Módulo de carga de usuarios: Loader_e3b.
- Módulo de consulta y gestión de agentes: Agents_e3b.
- Módulo de gestión y carga de incidencias: InciManager_e3b.
- Módulo de análisis y cuadro de mandos: InciDashboard_e3b.
Tabla de Contenidos
- Descripción del proyecto
- Como instalar el proyecto
- Como ejecutar el proyecto
- Como probar el proyecto
- Como contribuir al proyecto
- Creditos del proyecto
- Licencia del proyecto
Como instalar el proyecto
Requisitos de instalación
- Máquina virtual de Java: OpenJDK (versión: >= 1.6).
- Sistema de control de versiones: GIT (versión: >= 2.16).
- Herramienta de construcción de proyectos: Apache Maven (versión: >= 3.5).
Obtención del código fuente
Descarga la última versión del codigo fuente desde el repositorio oficial del proyecto:
git clone https://github.com/Arquisoft/InciManager_e3b.git
Instalación de las dependencias
Situarse en el directorio de descarga del código fuente y ejecutar:
mvn clean install
Reinstalación de las dependencias
En caso de ser necesario es posible purgar el repositorio local con las dependencias del proyecto ejecutando:
mvn dependency:purge-local-repository clean install -U
Como ejecutar el proyecto
Captura de pantalla de la página de login (ver más sobre el diseño web en esta wiki):
Requisitos para ejecutar el proyecto
- Apache Maven (versión: >= 3.5).
- Apache Kafka (versión: >= 1.0).
- Módulo Agents (versión: = e3b).
Configuración del servicio InciManager
Configurar los párametros necesarios en el fichero: resources/application.properties
### Service port (default: 8091):
server.port = 8091
### Comma-separated list of brokers to which the Kafka binder will connect
### (default: localhost:9092):
spring.cloud.stream.kafka.binder.brokers=localhost:9092
### Comma-separated list of ZooKeeper nodes to which the Kafka binder can connect
### (default: localhost:2181):
spring.cloud.stream.kafka.binder.zkNodes=localhost:2181
### Kafka topic for incidences (default: incidences):
kafka.topic = incidences
### Data source configuration:
spring.datasource.url = jdbc:postgresql://localhost:5432/postgres
spring.datasource.username=postgres
spring.datasource.password=changeit
spring.jpa.hibernate.ddl-auto=create-drop
spring.datasource.driverClassName=org.postgresql.Driver
Inicio del servicio Apache Kafka
Si no se dispone de una instancia de Apache Kafka en ejecución, es posible descargar una versión ya compilada para Java desde su página oficial y lanzar el servicio manualmente (la distribución binaria de Apache Kafka requiere a su vez iniciar su propia instancia de Apache Zookeeper).
Inicio de Apache Kafka en MS-Windows
Ejecutar el fichero: 'doc/examples/incimanager-kafka-server-start.bat'
REM Start Apache Zookeeper server:
start "ZooKeeper" /D ".\bin\windows\" "zookeeper-server-start.bat" "..\..\config\zookeeper.properties"
REM Wait 10 seconds:
timeout 10
REM Start Apache Kafka server:
start "Kafka" /D ".\bin\windows\" "kafka-server-start.bat" "..\..\config\server.properties"
Inicio de Apache Kafka en GNU/LiNUX
Ejecutar el fichero: 'doc/examples/incimanager-kafka-server-start.sh'
# Start Apache Zookeeper server:
nohup bash -c "bin/zookeeper-server-start.sh config/zookeeper.properties &"
# Wait 10 seconds:
sleep 10
# Start Apache Kafka server:
nohup bash -c "bin/kafka-server-start.sh config/server.properties &"
Inicio del servicio InciManager
Situarse en el directorio de instalación y ejecutar:
mvn spring-boot:run
Una vez iniciado el servicio ya es posible acceder a través del navegador en la dirección: http://localhost:8091
Como probar el proyecto
Ejecución de las pruebas unitarias
Para ejecutar toda la bateria de pruebas:
mvn test
Para ejecutar una única prueba:
mvn -Dtest=InciManagerApplicationTests#testAgentModel test
Datos usuarios de prueba
Name | Password | Location | Ident | Kind | |
---|---|---|---|---|---|
Paco González | 123456 | paco@gmail.com | paco | Person | |
Pepe Fernandez | 123456 | pepe@gmail.com | pepe | Person | |
Sensor_123 2018 | 123456 | 43.361368, -5.853591 | admin@sensores.com | sensor_123 | Sensor |
Ministerio medioambiente | 123456 | 43.359486, -5.846986 | ambiente@ministerio.com | medioambiente | Entity |
Space X sensor model A | 123456 | 33.921209, -118.327940 | musk@spacex.com | spacex | Sensor |
Ejemplo de incidencia en formato JSON
Disponible en el fichero: 'doc/examples/example-incidence.json'
{
"username": "paco@gmail.com",
"password": "123456",
"kind": "Person",
"incidenceName": "Incidencia de prueba",
"description": "Descripción de la incidencia de prueba",
"location": "43.3582617,-5.8531647",
"labels": [ "prueba", "sensor" ],
"others": [ "file:///image.png", "file:///video.mkv"],
"fields": { "temperatura": "21", "humedad": "75" },
"status": "ABIERTA",
"comments": [ "Primer comentario", "Segundo Comentario" ],
"expiration": "2018-03-25T00:00:00+01:00",
"cacheable": "true"
}
Ejemplo de envio de incidencia utilizando el servicio REST
curl -i -X POST -H "Content-type: application/json;charset=UTF-8" http://localhost:8091/addIncidence -d @example-incidence.json
Como consultar las incidencias enviadas a través de Apache Kafka
La incidencias enviadas mediante Kafka pueden ser consultadas utilizando la consola del consumidor por defecto que viene incluido en la instalación de Apache Kafka:
REM Start Apache Kafka Consumer:
start "Kafka Consumer" /D ".\bin\windows\" "kafka-console-consumer.bat" "--bootstrap-server" "localhost:9092" "--topic" "incidences" "--from-beginning"
Como contribuir al proyecto
La información completa sobre como contribuir al proyecto: código de conducta, flujo de trabajo, etc, puede consultarse en el fichero CONTRIBUTING.md.
Creditos del proyecto
Contribuidores
- Equipo de prácticas 2017/2018 E3B2 [@Arquisoft/course1718_e3b2]:
- Miguel Martínez Serrano <uo237030@uniovi.es> [@miguelms95]
- José Antonio Marín Álvarez <uo212006@uniovi.es> [@TonyMarin]
- Daniel Martínez Valerinao <uo252438@uniovi.es> [@Gemeto]
- Andrés Ángel González Granda <uo68216@uniovi.es> [@AndresAngelGG]
- Kilian Pérez González <uo21504@uniovi.es> [@kilianpg]
Reconocimientos
- Equipo docente de la asignatura Arquitectura del Software:
- Jose Emilio Labra Gayo <labra@uniovi.es> [@labra].
- Aquilino Adolfo Juan Fuente <aajuan@uniovi.es>
- Juan Luis Mateo Cerdan <mateojuan@uniovi.es>
- Herminio García González [@herminiogg].
Licencia del proyecto
El contenido completo de este proyecto esta licenciado bajo los terminos de la licencia: Unlicense. Los detalles completos de la licencia pueden consultarse en el fichero: LICENSE.