1. Introduktion

1.1. Formål

Formålet med dette dokument er at beskrive hvordan et udviklingsmiljø, til videreudvikling af SFSK, 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øet.

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

1.2. Sammenhæng med øvrige dokumenter

Dette dokument er en del af den samlede dokumentation for SFSK.

Dokumentets relation til de øvrige dokumenter er beskrevet i Synkroniseringsservice til FællesStamkort (SFSK) - Leverancebeskrivelse for SFSK.

1.3. 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.

1.4. Dokument Historik


9/6 2021Eva Troels/KITUdarbejdet ved etableringen af SFSK

1.5. Introduktion til SFSK

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

Alle SFSK services er Java baserede komponenter, der baserer sig på Java 8 og Spring frameworket.

Design og arkitektur er beskrevet: SFSK - Design- og arkitekturbeskrivelse.

2. Opsætning af udviklingsmiljø

I det følgende antages at koden er hentet fra Git: https://git.nspop.dk/scm/com/synkroniseringsservice-til-faellesstamkort.git.

2.1. Krav til software

SFSK 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

2.2. Bygge WAR filer

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

mvn package


Efter byg kan WAR filer findes her:

./sfsk-war/target/sfsk.war

3. 3. Afvikling

Der henvises til SFSK - Installationsvejledning for nærmere instrukser.

3.1. 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 SFSK er startet er, svarer den på:

NB! I udviklingssetup'et peges der på det på NSP TEST1 installerede FSK og FSK Registry Dette gøres for, at svarene fra SFSK bliver korrekte, også i development setup. Integrationstestene kan derfor køres mod development.

I docker-compose setup i development er tilknytningen til NSP TEST1 FSK og FSK Registry lavet ved opsætning af konfigurationsfilen fsks.properties.

3.2. Beskrivelse af systemdesign

Systemdesign er beskrevet i SFSK - Design- og arkitekturbeskrivelse.

4. Beskrivelse af kildekodens strukturering og design

4.1. Kodestruktur

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

sfsk-xds

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 SFSK (til NSP FSK og FSK Registry) samt til integrationstestene for SFSK.

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

sfsk-testutilitiesHjælpeklasser, der både skal bruges af unit tests samt af integrationstests for SFSK ligger her.
sfsk-appSFSK service- og forretningsfunktionalitet er samlet her. Se SFSK - Design- og arkitekturbeskrivelse for en grundigere beskrivelse af strukturen i dette modul.
sfsk-consentfilteringIndeholder integration til MinSpærring
sfsk-whitelistingIndeholder funktionalitet til whiteslisting af certifikater, der må anvendes til kald af SFSK.
sfsk-war

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

Indeholder også Dockerfile til selve byg af Docker image.

sfsk-qa

Integrationstest for SFSK

sfsk-testreportModul til at samle jacoco test reports og beregne samlet test coverage.

4.2. Beskrivelse af testsetup

4.3. Unittests (JUnit)

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øre:

mvn test

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

4.4. Integrationstests

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

mvn -Plocal,integration-test verify

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

Hvis man ønsker af afvikle testen op mod en andet miljø f.eks. test1 eller test2 henvises til SFSK - Testvejledning.


  • No labels