Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Alle filer der refereres til ligger sammen med projektets kildekode i NSP's Subversion. Referencer til stier er relative med udgangspunkt i projektets rodmappe.

Byggevejledning

For at bygge projektet og dets deployables (war-filen) uden at køre unit-tests og integrationstests, anvendes følgende Maven kommando:

mvn clean install -DskipTests

Projektets deployables ender i target-mappen under de respektive moduler.

Afvikling af unit-tests

Unit-testene i projektet kan afvikles med følgende Maven-kommando:

mvn clean test

Alternativt kan også samtidigt bygge projektet ved at anvende Maven-kommandoen:

mvn clean install

Når unittests afvikles startes en database og SFTP server op vha. TestContainers. Relevante databaseobjekter oprettes automatisk i den forbindelse.

Afvikling af integrationstests

Se testvejledningen.

Krav til miljø

Komponenten er tilpasset at kunne indgå i det aktuelt gældende CI-miljø på NSP. Det tager aktuelt udgangspunkt i version 1 af NSP's platform Docker image.

...

Datamodellen styres vha. de SQL-scripts, der findes under srcunder compose/mainconfiguration/resourcesdatabase/db/migrationddl.

Scriptene er udformet til at blive kørt med databasemigreringsværktøjet FlywayLiquibase. Scriptene er designet til at kunne blive brugt i både test- og produktions-miljø.

Ved initial installation af servicen vil Flyway Liquibase håndtere at køre scriptene i den korrekte rækkefølge:.

Deployment

Komponenten deployes vha. NSP's platform Docker image og konfigurationsfiler mountes i containeren som angivet i projektets Compose-filer. Herunder også database scriptene.

Alle konfigurerbare properties bør gennemgås inden idriftsættelse, men standardværdierne er tiltænkt anvendelse i produktion medmindre andet er angivet.

...

Den og den leveres også sftp. Her angives det hvor

Property

Beskrivelse

Default

datasource.jndi

Angiver navnet på den datasource der er konfigureret på Wildfly'en.

java:jboss/datasources/yder

failIfNotRunInNumberOfDays

Hvis der ikke er blevet indlæst data i det antal dage der står i denne property, så melder servicen en statusfejl.

2

allowableDifferencePercentage

Hvis modtagne data afviger mere denne % sats meldes en fejl og indlæsningen stoppes30
batchSizeData persisteres i databasen i batches og størrelsen på disse angives i denne property.100
batchTimeoutAngiver Hvis der ikke er flere data at persistere, og det igangværende batch derfor ikke kan nå batchSize, angiver denne tiden i millisekunder for hvornår en Camel aggregering har været inaktiv - og dermed er færdigder ventes på yderligere data før et batch anses for at være komplet.500
input_camelUrl

Angiver det Camel udtryk

hvor

der henter input-filerne

kan hentes.

fra SFTP serveren.

De filer der hentes lægges i en intern folder i Docker containeren. Den interne folder der hentes til er angivet i property input.folder

For at have adgang til de hentede filer efter Docker containeren er slukket, skal der laves en volume-mount af en ekstern folder ind til den angivne folder i Docker containeren. 

*)

ekstern_camelUrl

Denne konfiguration er udelukkende til brug for Yderindlæseren og er således ikke en generisk funktionalitet i indlæser reference arkitekturen

Data fra den indlæste fil bliver indlæst i en database

. Det er muligt at få indholdet af den indlæste fil leveret til en ekstern

SFTP-server

, og dette Camel udtryk

angiver hvordan filen skal leveres.

Hvis ekstern_camelUrl ikke har en værdi, vil der ikke blive foretaget en ekstern levering.

**)
output_camelUrl

Bekræftelse på endt håndtering sendes .done/.fail filer ekstern vha. denne SFTP server.


backup.type

Angiver den ønskede backuptype

  • RawBackup - der foretages en backup af den rå fil. Hvis den modtagne fil har navnet xxx.yyy vil backup filen få navnet xxx-<exchangeId>.yyy hvor <exchangeId> er et UUID som vil matche log- og database registreringer for behandlingen af filen. Backup filen placeres i backupFolder.
  • ZipBackup - der foretages et zip backup af den modtagne fil. Hvis den modtagne fil har navnet xxx.yyy vil backup filen få navnet xxx-<exchangeId>.zip hvor <exchangeId> er et UUID som vil matche log- og database registreringer for behandlingen af filen. Backup filen placeres i backupFolder.
  • NoBackup - der foretages ikke noget backup af den modtagne fil
RawBackup
backup.folder

Angiver placering af backup fil. Dette skal være en folder internt i den Docker container der kører Yderindlæseren.

For at have adgang til de backup'ede filer efter Docker containeren er slukket, skal der laves en volume-mount af en ekstern folder ind til den angivne folder i Docker containeren. 


input.folder

Den interne folder, som filerne der hentes med input SFTP lægges i

 
confirm.folder

Den interne folder, som .done og .fail filerne der skabes efter endt håndteres lægges i midlertidig inden de sendes med output SFTP

 
ekstern.input.folder

Den interne folder, som filerne der sendes med ekstern SFTP lægges i først

 
 


 

Denne figur viser hvor de properties der styrer Yderindlæserens opførsel har indflydelse.

Image Added

  • Yderindlæseren henter filer ind fra SFTP serveren som angivet i input_camelUrl
  • Yderindlæseren laver backup af behandlede filer som angivet i backupType og backupFolder
  • Hvis der er angivet en ekstern_camelUrl foretages der en eksterne levering af den modtagne fil.
  • Yderindlæseren anvender datasource udpeget af datasource.jndi til at tilgå databasen
  • Statussiden der monitorerer Yderindlæseren, anvender failIfNotRunInNumberOfDays til at afgøre om der skal rejses en alarm.
  • Property  allowableDifferencePercentage, batchSize og batchTimeout anvendes i Yderindlæseren til at styre validering af den modtagen fil og batch-håndtering mod databasen.
  • Den interne læsning og skrivning  af de filer, der er angiver i figuren gøres med input.folder, ekstern.input.folder og confirm.folder
    input.folder endpoint justeres med følgende options i indlæseren: antInclude=*.xml&delete=true&sortBy=file:name
    ekstern.input.folder endpoint justeres med følgende options i indlæseren: readLock=fileLock&antInclude=*.xml&delete=true&sortBy=file:name

    som angiver at den indlæser filer med endelsen xml som ligger i folderen.

  • Til sidst  ved successfuld håndtering skrives en tom ".done" fil til intern folder. Ved kritisk fejl skrive en ".fail" fil. Denne fil sendes til SFTP lokation og anses som ekstern kvittering på endt håndtering


De to Camel udtryk er meget lange så defaultværdierne står her:

Note

De angivne passwords herunder er udelukkende til illustration og de er ikke gyldige passwords


*) sftp:foo@ydersftp:22/praksys?password=pass&readLock=rename&antInclude=*.xml&delete=true&disconnect=true&stepwise=false&initialDelay=5s&delay=5s&knownHostsFile=/pack/wildfly8/modules/dk/nsi/sdm/yder/known_hosts

...