Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Navitabs
rootBackend For Frontend (GM-BFF) - Leverancebeskrivelse


Indholdsfortegnelse

Table of Contents

Introduktion

Formål

Formålet med dette dokument er at beskrive hvordan et udviklingsmiljø, til videreudvikling af DROSGM-BFF, kan sættes op, samt hvordan koden bygges, deployes og testes.

Først beskrives de softwaremæssige krav, der er til miljøet, samt hvordan kode hentes og bygges. Dernæst beskrives deploymentmiljøetdeployment-miljøet.

Kodestrukturen, kodemæssige afhængigheder til tredjeparts moduler og de forskellige servicemodulers ansvar og design beskrives sidst i dette dokument sammen med testdesign.

Sammenhæng med øvrige dokumenter

Dette dokument er en del af den samlede dokumentation for GM-BFF.

Dokumentets relation til de øvrige dokumenter er beskrevet i dokumentationsoversigten for GM-BFF.

Læsevejledning

Læser forventes at have kendskab til Java softwareudvikling med anvendelse af Maven og WildFly. Derudover forventes kendskab til Docker samt docker-compose.

Hvor der i teksten er angivet <component base> refereres til topniveaufolderen for kildekoden for komponenten.

Dokument Historik

...

, Maven og Springboot

Introduktion til GM-BFF

GM-BFF Snitfladen er defineret i en <miljø>/gm-bff/swagger-ui/index.html

GM-BFF

Introduktion til DROS

Alle DROS services udstiller en SOAP service. Snitfladen er defineret i en WSDL fil og en række XSD filer. 

Alle DROS services er Java baserede komponenter, der baserer sig på Java 8 21 og Spring frameworketBoot 3.5.5.

Design og arkitektur er beskrevet : DROS GM-BFF - Design- og arkitekturbeskrivelse.

Opsætning af udviklingsmiljø

I det følgende antages at koden er hentet fra SVNgit:  https://svngit.nspop.dk/svnscm/components/dros.bff/min-graviditet-backend-for-frontend.git

Krav til software

DROS deployeres vha. docker, hvorfor de alle baserer sig på NSP platformens base image, hvori der findes nødvendigt software til afvikling.

Derudover er der krav til de anvendte udviklingsværktøjer:

  • Maven 3.0.3 eller højere anvendes.
  • docker-compose version 3.4 eller højere

Bygge WAR filer

Man skal bruge Maven til at bygge DROS, hvilket gøres ved at køre kommandoen

mvn package

...

./dros-war/target/dros.war

Afvikling

...

Udviklers workstation

Når man udvikler kan det være praktisk at foretage lokal deployment.

Dette kan gøres vha. docker-compose:

...

docker-compose -f compose/development/docker-compose.yml up --build

Når DROS er startet er, svarer den på:

NB! I udviklingssetup'et peges der på det på NSP TEST1 installerede OpenText registry. Dette gøres for, at svarene for DROS bliver korrekte, også i development setup. Integrationstestene kan derfor køres mod development. Det er nødvendigt, at docker-compose setup (og integrationstesten) afvikles på en maskine, der er whitelistet til at tilgå NSP TEST1 XDS registry.

I docker-compose setup i development er tilknytningen til NSP TEST1 XDS registry lavet på følgende måde:

  1. OpenXDS repository (openxds-server) peger på registry url http://registryproxy:80/registry/services/xds-iti42 gennem opsætning af følgende ENV variable: XDS_REGISTRY_HOST, XDS_REGISTRY_PORT og DS_REGISTRY_URL
  2. I docker-compose filen for development er registryproxy en opsætning af nginx. Konfigurationen af denne findes i filen compose/configuration/nginx.conf
  3. I denne konfigurationsfil (nginx.conf) er https://test1-cnsp.ekstern-test.nspop.dk:8443 defineret som målet for requests.

...

For at afvikle GM-BFF kræves Java og Maven, samt følgende komponenter :


PostSQL, Meilisearch og GM-CMS kan startes lokalt med kommandoen:

docker-compose -f compose/gravidmappen/docker-compose.yaml up

Bemærk, at GM-CMS ligger i private registry, hvor der ikke er offentligt adgang. Alternativt, kan GM-CMS opsættes lokalt som beskrevet her GM-CMS - Guide til anvendere

Bygge komponeten

Man skal bruge Maven til at bygge GM-BFF, hvilket gøres ved at køre kommandoen, hvor revision angiver versionen

mvn package -Drevision=1.0.0


Efter byg kan WAR filer findes her:

./target/gm-bff-1.0.0.jar


Afvikling

Efter byg kan GM-BFF afvikles med følgende kommando:


mvn spring-boot:run


Beskrivelse af systemdesign

Systemdesign er beskrevet i DROS GM-BFF - Design- og arkitekturbeskrivelse.

Beskrivelse af kildekodens strukturering og design

Kode strukturering

Kildekoden bygges vha Maven, og kildekoden er struktureret som Maven moduler. DROS består af følgende moduler:

...

Sætter dependencies op i forhold til openehealth framework (en række exclusions er tilrådelige for at anvende dette framework på NSP).

Modulet indeholder også konfigurationsklasse til konfiguration af ITI-backends. Dette anvendes både af internt af DROS (til NSP XDS backends) samt til integrationstestene for DROS.

Derudover inderholder modulet statiske koder (f.eks. OID for CPR registeret og SOR), der anvendes rundt om i DROS.

...

Modul, der er ansvarlig for at pakke DROS som en NSP service - herunder angivelse af modulafhængigheder i deploymentdescriptor.

Indeholder også Dockerfile til selve byg af Docker image.

...

Integrationstest for DROS

er et single-module projekt. 


Snitfladen til appen er specificeret i OpenAPI og ligger i folderen:

./openapi/bff

 Snitfladen er opdelt i journal og cms.


Bruno (https://www.usebruno.com) benyttes som api client og gøre det muligt kalde en kørende instans af GM-BFF lokalt og i test.  

...

Beskrivelse af testsetup

Unittests

...

JUnit anvendes til implementering af unit tests . Der er kontinuert gennemført unit tests på alle komponenter i projektet.Unit tests afvikling under byg vha jacoco plugin for Maven, men kan separat afvikles ved at køreog afvikles som følger:

mvn test


Hvis der derimod laves en verify, så vil der også blive genereret code coverage, hvor fremkommende rapport kan ses i testreport/target/site/jacoco-aggregate/index.html

Integrationstests

Integrationstests ligger i modulet dros-qa og kan afvikles med:

mvn verify -Pintegration-test

Dette forudsætter at alle services er startet som angivet i docker-compose setuppet.

...

Dokument Historik

3/4 2025Martin Henriksen/SDSEtablering af dokumentation
16/9 2025Thomas GlæsnerUdfyldt