/cove-backend

COVID-19-Verdachtsfall-Verwaltung

Primary LanguageJavaOtherNOASSERTION

COVe Backend

Inhaltsverzeichnis

Über das Projekt

In Zeiten von COVID-19 müssen Gesundheitsämter die gemeldeten COVID-19-Verdachtsfälle und deren Kontaktpersonen erfassen, Laborergebnisse und Quarantäne-Zeiträume dokumentieren und zeitgleich viele Telefonanrufe mit den Betroffenen führen.

COVe (COVID-19-Verdachtsfall-Verwaltung) vereint dies innerhalb einer modernen Web-App. Durch sie lassen sich Verdachtsfälle einfach erfassen, die Anrufe leichter organisieren und die Ergebnisse schneller dokumentieren. Durch den innovativen Ansatz der Telefonlisten haben alle Mitarbeiterinnen und Mitarbeiter eines Telefonservices gleichzeitig Zugriff auf aktuelle Daten. Das spart erheblich Zeit in der Krisensituation.

Funktionsweise

Architektur

Architektur

COVe-Backend: https://github.com/it-at-m/cove-backend

COVe-Frontend: https://github.com/it-at-m/cove-frontend

Verwendete Technologien

Erste Schritte

Für das erfolgreiche Bauen und Ausführen der Anwendung sollte Java und Maven bereits installiert und eingerichtet sein. Desweiteren wird für den Security Modus eine Single-Sign-On Umgebung benötigt. In unserem Fall wurde Keycloak verwendet. Es kann aber auch jeder andere OAuth2-Provider (OpenID-Connect) wie zum Beispiel AWS Cognito genutzt werden.

Installation

  1. Das Repository clonen
git clone https://github.com/it-at-m/cove-backend.git
  1. SSO Umgebung für Security Modus einrichten

    Die benötigten Konfigurationsdateien befinden sich im Ordner sso-config und können zur Importierung in KeyCloak verwendet werden.

  2. Flyway konfigurieren

    Mithilfe der Datein im Ordner flywayconf kann Flyway konfiguriert werden.

Konfiguration

Vor der Verwendung der Anwendung müssen noch einige Konfigurationen vorgenommen werden.

Datenbank

Als Datenbank kommt für die locale Entwicklung eine H2 und für den produktiven Betrieb eine SQL Datenbank z.B. Oracle zum Einsatz. Wobei Oracle auch durch jede andere SQL Datenbank wie beispielsweise Postgres oder MariaDB ersetzt werden kann.

Für die initiale Erstellung der Tabellen wird Flyway verwendet. Die Schemas sind unter src/main/resources/db.migration zu finden. Für die locale Entwicklung wird Flyway außerdem noch zur initalen Befüllung der Tabellen mit Testdaten eingesetzt.

Für die Datenbank muss in der jeweiligen application.yml folgende Parameter wie database, datasource.url, datasource.username, datasource.password und flyway.enabled definiert werden.

 # Spring JPA
  h2.console.enabled: true
  jpa:
    database: 
    hibernate:
      # always drop and create the db should be the best
      # configuration for local (development) mode. this
      # is also the default, that spring offers by convention.
      # but here explicite:
      ddl-auto: none
      naming.physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
    # Logging for database operation
    show-sql: true
    properties:
      hibernate:
        format_sql: false
  datasource:
    url: jdbc:database:thin:@//<host>:<port>/<service>
    username: user
    password: pw
  flyway:
    enabled: false

Single-Sign-On

In der application.yml der jeweiligen Umgebung muss der Realm, die Key-set-uri, die User-info-uri und die Client-id noch gesetzt werden.

realm:

security:
  logging.requests: all
  oauth2:
    resource:
      jwk:
        key-set-uri: <host>/auth/realms/${realm}/protocol/openid-connect/certs
      user-info-uri: <host>/auth/realms/${realm}/protocol/openid-connect/userinfo
      prefer-token-info: false
    client:
      client-id: client_name
      scope:

Verwendung

Die Anwendung besitzt folgende Spring Profiles:

  • security (defaultmäßig aktiviert)
  • no-security

Verwendung von Flyway und einer H2 Datenbank

  • local
  • dev
  • test

Verwendung von einer SQL Datenbank

  • kon
  • prod

Um die Anwendung local zu starten, können folgende zwei Skripte ausgeführt werden:

# Mit Security
./runLocal.sh

# Ohne Security
./runLocalNosecurity.sh

Eine weitere Möglichkeit ist es, dass Maven Plugin zu verwenden:

# Ausführbare Jar Datei erzeugen
mvn clean install

# Anwendung mit jeweiligen Profil starten (Bsp.: local,no-security)
mvn clean spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=local,no-security"

Howto Flyway

# via Maven Plugin
mvn -Dflyway.configFiles=flywayconf/flyway.conf.k -Dflyway.password=<PW> flyway:clean flyway:migrate

# via Flyway CLI
flyway clean -configFiles=./flywayconf/flyway.conf.k

Lizenzierung und Copyright

© Copyright 2020 – it@M

COVe ist lizenziert unter der European Union Public Licence (EUPL). Für mehr Informationen siehe LICENSE.