Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Navitabs
rootXDSCleanup
includeroottrue



Table of Contents

Introduktion

...

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

Sammenhæng med øvrige dokumenter

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

Dokumentets relation til de øvrige dokumenter er beskrevet i dokumentationsoversigten for NXRG.

Læsevejledning

Læsevejledning

Læseren 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

Dokumenthistorik


28-02-2022KvalitetsITInitiel udgave.
5/5 2021Nils Asbjørn Joensen/KITUdarbejdet ved etableringen af NXRG

Introduktion til

...

XDSCleanup

XDSCleanup består af en WAR-fil som udstiller to servlets. Disse snitflader er beskrevet i driftsvejledningen.Alle NXRG services udstiller en SOAP service. Snitfladen er defineret i en WSDL fil og en række XSD filer. 

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

Design og arkitektur er beskrevet : NXRG iXDSCleanup - Design- og arkitekturbeskrivelse.

Opsætning af udviklingsmiljø

I det følgende antages at koden er hentet fra SVNGit:  https://svngit.nspop.dk/svnprojects/COM/components/nxrgrepos/simple-xds-cleanup.

Krav til software

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

...

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

mvn package


Efter byg kan WAR filer findes her:

./

nxrg

cleanup-war/target/

nxrg

xdscleanup.war

Afvikling

Der henvises til installationsvejledningen for nærmere instrukserinstruktioner.

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

...

Beskrivelse af systemdesign

Systemdesign er beskrevet i NXRG XDSCleanup - Design- og arkitekturbeskrivelse.

Beskrivelse af kildekodens

...

struktur

Kode strukturering

Kildekoden bygges vha Maven, og kildekoden er struktureret som organiseret i Maven-moduler. NXRG XDSCleanup består af følgende moduler:

nxrg
cleanup-
xds

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

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

app

Funktionalitet der er fælles for sletning fra registry og repository.

cleanup-commonDiverse hjælpeklasser.
cleanup-testreportModul der genererer Jacoco testrapport.
cleanup
nxrg-testutilitiesHjælpeklasser, der både skal bruges af unit tests samt af integrationstests for NXRG ligger her.nxrg-appNXRG service- og forretningsfunktionalitet er samlet her. Se NXRG - Design- og arkitekturbeskrivelse for en grundigere beskrivelse af strukturen i dette modul.nxrg
-war

Modul, der er ansvarlig for at pakke

NXRG

XDSCleanup som en NSP service - herunder angivelse af modulafhængigheder i

deploymentdescriptor

deployment descriptor.

Indeholder også Dockerfile til selve byg af Docker image.

nxrg-
qa

Integrationstest for NXRG

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

Dato og tidshåndtering

Datoer og tidspunkter anvendes på følgende måde i NXRG:

  • RIM formattet er en streng, og requst og response forventes at være i UTC tid.
  • IHE frameworket anvender joda time (DateTime) og klasser, der interagerer med dette framework anvender derfor joda time.
  • Ved "indgang" til servicene tjekkes at tidspunkterne i IHE modellen er UTC tid (UtcDateTimeTransformer og UtcDateTimeQueryTransformer)
  • Tidspunkter fra metadata, som gemmes i databasen er UTC tid
  • Øvrig håndtering af tid foregår vha java.time.Instant og foregår i UTC tid
  • Klassen DateTimeUtils anvendes som utility til at håndtere dato og tid

Databaseændringer

Databasemodellen styres ved hjælp af Liquibase. Det betyder at når der skal laves ændringer til databasemodellen, så må man ikke rette i de eksisterende skemafiler. I stedet skal der laves nye filer der beskriver ændringerne.

Skemaændringer

Skal der tilføjes f.eks. en ny kolonne eller en ny tabel skal nedenstående gøres.

  1. Der oprettes en ny fil i folderen compose/configuration/database/ddl. Filen skal navngives liquibase-changelog-x.y.z.xml hvor x, y og z er det versionsnummer du forventer at release komponenten som. Filen skal beskrive ændringen der skal laves. Hvis man anvender liquibase SQL syntaxen får man typisk automatisk "rollback" med. Man kan også referere til rå SQL filer.
  2. Filen fra punkt 1 tilføjes compose/database/liquibase-changelog-master.xml.
  3. Done

Testdata

Opstår der en situation hvor der skal tilføjes yderlige testdata for at integrationstesten kan afvikles skal nedenstående udføres.

  1. Der oprettes en ny fil i folderen compose/configuration/database/test. Filen skal navngives liquibase-changelog-test-x.y.z.xml hvor x, y og z er det versionsnummer du forventer at release komponenten som. Filen skal beskrive ændringen der skal laves. Hvis man avender liquibase SQL syntaxen får man typisk automatisk "rollback" med. Man kan også referere til rå SQL filer.
  2. Filen fra punk 1 tilføjes compose/database/liquibase-changelog-test.xml
  3. Done

Migrerede data

I development-setuppet bliver der ved opstart indlæst et dump af opentext-registry'et fra test1. Dette indlæses i en database for sig selv. Man kan tilgå denne database med følgende kommando (i mariadb-containeren):

mysql -uopentext -popentext opentext

Migrering

...

cleanup

Funktionalitet til sletning af dokumentmetadata fra NXRG.

openxds-cleanupFunktionalitet til sletning af dokumenter fra OpenXDS.

Beskrivelse af testsetup

Unittests (JUnit)

JUnit anvendes til implementering af unit tests. Der er kontinuert gennemført unit tests på alle komponenter i projektet.

Unit tests afvikling afvikles 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 testreporttcleanup-estreport/target/site/jacoco-aggregate/index.html

Integrationstests

Integrationstests ligger i modulet nxrg-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 NXRG - Testvejledning.

...

Der er pt. ikke udarbejdet integrationstests.