Dette dokument beskriver installation og konfiguration af Behandlingstestamenteregister-servicen (BTR) samt tilhørende migreringsværktøj.
Behandlingstestamenteregister-servicen består af 2 komponenter (war-arkiver), der skal konfigureres og deployes på en applikationsserver:
Projektet bygges med Maven og kræver Java 8 samt en MariaDB-installation for at kunne afvikle unit-tests.
Udover normalt tilgængelige Maven dependencies, afhænger projektet også af interne artefakter. Hvis disse artefakter ikke er udgivet (released) i den påkrævede version i NSP's Nexus repository, skal man selv udtjekke og bygge dem fra NSP's Subversion i den pågældende version. Artefakternes forskellige versioner vil være tilgængelige under et Subversion-tag. Disse artefakter er:
For at bygge disse interne artefakter, henvises der til artefakternes dokumentation.
Alle filer der refereres til ligger sammen med projektets kildekode i NSP's Subversion. Referencer til stier er relative med udgangspunkt i projektets rodmappe. |
Version | Dato | Ændring | Ansvarlig |
---|---|---|---|
1.0.1 | 2018-08-15 | Initialt dokument | Trifork |
1.0.2 | 2018-08-31 | Ny release | Trifork |
1.0.3 | 2018-09-06 | Endpoints ændret fra /ltr-btr til /btr | Trifork |
1.0.4 | 2018-09-11 | Ændret databasedriver til MySQL | Trifork |
1.0.6 | 2018-10-15 | Tilføjelse af tre SQL-scripter | Trifork |
1.0.12 | 2019-08-19 | Opdateret default value for property "minlog.read-activity-text.ltr" og "minlog.read-activity-text.btr". Tilføjet to SQL-scripter. | Trifork |
1.0.14 | 2019-25-09 | Ajourført | Trifork |
1.1.3 | 2020-05-26 | Opdateret properties til slettejob | KvalitetsIT |
1.1.7 | 2021-09-06 | Opdateret ifm. udfasning af dgws/idws-proxy. | KvalitetsIT |
1.1.8 | 2021-10-12 | Opdateret ifm. udfasning af btr-snitflade med accept fra pårørende, værge eller fremtidsfuldmægtig for uafvendeligt døende | KvalitetsIT |
1.1.9 | 2021-10-25 | Opdateret ifm inaktive cpr numre afvises | KvalitetsIT |
For at bygge projektet og dets deployables (war-filer) 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.
For at afvikle projektets unit-tests, skal en MariaDB-database-server være tilgængelig.
I udviklingssammenhæng kan man oprette de nødvendige database-schemas vha. scriptet compose/database/db/create_db.sql. I application.properties-filen i projektet er datasources som default sat til at anvende root-user med tomt password. Database-strukturen bliver automatisk oprettet vha. Flyway SQL-scripter, når unit-testene afvikles.
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
Se testvejledningen.
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.
Servicen er testet mod MariaDB version 10.1, som bliver brugt på NSP platformen.
Der stilles ikke nogle særlige minimumskrav til hardware, men man skal forvente at bruge high-end hardware (både cpu, ram, netkort og diske) for at kunne opfylde de gældende svartidskrav på NSP.
Herunder beskrives servicens tilgang til database samt oprettelse af tabeller og views.
Servicen kræver to databaser: en til Livstestamenteregistret og en til Behandlingstestamenteregistret. Derudover afhænger den af adgang til et view i en (replikeret) stamdata-database.
Servicen konfigureres med 3 datasources, som tilgår databaserne vha. separat specificerede brugere.
To brugere skal henholdsvis give adgang til Livstestamenteregister-databasen og Behandlingstestamenteregister-databasen, og de skal begge være tildelt følgende rettigheder på deres pågældende database:
Databasebrugeren, der tilgår stamdata-view'et, skal være tildelt følgende rettigheder:
Datamodellen styres vha. inkrementelle SQL-scripter, der kan findes under compose/database/db/migration. De er inddelt i 3 undermapper:
Scripterne er udformet til at blive kørt med databasemigreringsværktøjet Flyway, men dette er kun aktiveret under afvikling af unit-tests, da dette ikke ønskes anvendt i produktion. |
I produktion anvendes scripterne manuelt og skal køres på databasen i inkrementel rækkefølge baseret på versionsnummeret i filnavnet (først V1__(...).sql, dernæst V2__(...).sql, osv.). Hvert script må aldrig køres mere end én gang; der gælder dog en undtagelse for ikke-versionerede scripter, hvis filnavne begynder med R, som står for Repeatable. Disse Repeatable scripter skal køres hver gang deres indhold (checksum) er blevet ændret, men de må først køres efter alle versionerede scripter er blevet kørt.
Ved initial installation af servicen vil det således være følgende scripter, der skal køres i den nedenstående rækkefølge:
Scriptet R__create_v2_Person_Simplified_view.sql opretter et view, som afhænger af eksistensen af tabellen v2_Person. Dette er tabellen, der indeholder CPR-ændringer, og den skal man selv stå for at levere. Under afvikling af unit-tests bliver en testudgave af denne tabel automatisk oprettet vha. et SQL-script i compose/database/db/test. |
Komponenten deployes vha. NSP's platform Docker image og konfigurationsfiler mountes i containeren som angivet i projektets Compose-filer.
ltr-btr-service-wildfly og ltr-migration konfigureres ved hjælp hver deres Wildfly-modul, der indholder de nødvendige konfigurationsfiler til valg af datasources, brugerdefinerede parametre, logning, mm. Wildfly-modulet er integreret i komponentens Docker image.
Alle konfigurerbare properties bør gennemgås inden idriftsættelse, men standardværdierne er tiltænkt anvendelse i produktion medmindre andet er angivet. |
Herunder beskrives properties i ltr-btr-service-wildfly komponentens konfigurationsfiler.
Properties er her opdelt i to tabeller. Den første tabel indeholder anvendte Spring Boot-properties. Den anden tabel indeholder properties, der er specifikt defineret til brug i servicen. Begge typer af properties er defineret i samme konfigurationsfil.
Property | Beskrivelse | Default |
---|---|---|
spring.active.profiles | Aktiv profil i Spring Boot. Skal ikke ændres. Anvendes til at styre forskellige databasekonfigurationer ved henholdsvis unit-tests og deployment. | production |
spring.application.name | Navnet på applikationen. Skal ikke ændres. | btr |
spring.jmx.enabled | Disable Spring Boot JMX. Skal ikke ændres. Deaktiveret da vi ikke udstiller særlig JMX funktionalitet. | false |
spring.jta.enabled | JTA transaktioner. Det er påkrævet at denne er false, således at Spring Boot i stedet anvender dens egen håndtering af transaktioner. (true/false) | false |
management.server.port | Port som Spring Boot management endpoints bind'er på. Endpoints deaktiveres ved at sætte værdien til -1. | -1 |
Property | Beskrivelse | Default |
---|---|---|
datasource.ltr.jndi-name | Angiver navnet på en JNDI datasource til Livstestamenteregister-databasen | java:jboss/datasources/LTR-DS |
datasource.btr.jndi-name | Angiver navnet på en JNDI datasource til Behandlingstestamenteregister-databasen | java:jboss/datasources/BTR-DS |
datasource.stamdata.jndi-name | Angiver navnet på den JNDI datasource der giver adgang til en (replikeret) stamdata-database | java:jboss/datasources/STM-DS |
dcc.endpoint.ltr | Angiver det endpoint, som DCC'en skal kalde for Livstestamenteregistret. Dette kommer til at fremgå af den XML, der returneres i /dksconfig. Bør ændres før produktion. | http://test1.fsk.netic.dk:8080/btr/ltr |
dcc.endpoint.btr | Angiver det endpoint, som DCC'en skal kalde for Behandlingstestamenteregistret. Dette kommer til at fremgå af den XML, der returneres i /dksconfig . Bør ændres før produktion. | http://test1.fsk.netic.dk:8080/btr/btr |
minlog.read-activity-text.ltr | Angiver den tekst der registreres i MinLog, når der bliver læst Livstestamente-data for et CPR-nummer. | L\u00e6sning af Livstestamente |
minlog.read-activity-text.btr | Angiver den tekst der registreres i MinLog, når der bliver læst Behandlingstestamente-data for et CPR-nummer. | L\u00e6sning af Behandlingstestamente |
schemavalidation.validate-requests | Angiver om requests skal schema-valideres (true/false) | true |
schemavalidation.validate-responses | Angiver om responses skal schema-valideres (true/false) | true |
schemavalidation.fail-on-response-error | Angiver om et kald skal returnere fejl, hvis response ikke er schema-valid (true/false) | true |
ltr.close-date | Angiver det præcise tidspunkt (ISO 8601) fra hvornår mulighed for oprettelser deaktiveres for Livstestamenteregistret. Hvis denne er null eller ikke er mulig at parse som et tidspunkt, vil oprettelser alligevel være muligt, og en advarsel vil blive logget ved opstart. | 2019-01-01T00:00:00+01:00 |
btr.open-date | Angiver det præcise tidspunkt (ISO 8601) fra hvornår mulighed for oprettelser aktiveres for Behandlingstestamenteregistret. Hvis denne er null eller ikke er mulig at parse som et tidspunkt, vil mulighed for oprettelse alligevel være muligt, og en advarsel vil blive logget ved opstart. Hvis oprettelser og opdateringer deaktiveres for Behandlingstestamenteregistret, vil integrationstestene fejle. | 2018-06-01T00:00:00+01:00 |
jobs.delete.cpr-max-results.ltr | Livstestamenteregister-slettejob: Angiver maksimum antal rækker med opdateringer i cpr-registry der skal læses ad gangen | 25 |
jobs.delete.cpr-max-loops.ltr | Livstestamenteregister-slettejob: Angiver maksimum antal batches der skal behandles pr. jobeksekvering | 2 |
jobs.delete.cpr-max-results.btr | Behandlingstestamenteregister-slettejob: Angiver maksimum antal rækker med opdateringer i cpr-registry der skal læses ad gangen | 25 |
jobs.delete.cpr-max-loops.btr | Behandlingstestamenteregister-slettejob: Angiver maksimum antal batches der skal behandles pr. jobeksekvering | 2 |
cprexists.validationlevel | Valideringsniveau for CPR validering Eksempel: WARNING, REJECT, OFF | |
cprexists.url | URL for CPR exist service Eksempel: http://test1-cnsp.ekstern-test.nspop.dk:8080/stamdata-cprexists | null |
cprexists.maxTotalConnections | Konfiguration af client pool til kald af CPRExists service | 200 |
cprexists.defaultMaxConnectionsPerRoute | Konfiguration af client pool til kald af CPRExists service | 20 |
cprexists.inactive.status | Konfiguration af inaktive status, liste adskilt af komma | 30,50,60 |
Konfigurerer logning for servicen.
Standardværdierne angiver nogle brugbare niveauer for anvendelse i produktion. Se Driftsvejledningen for uddybet beskrivelse af logning.
Se den officielle Log4j 2 dokumentation for alternativ konfiguration.
BTR anvender MinLogProvider til at registrere logninger i MinLog2, og i den forbindelse skal Kafka properties for Min Log 2 konfigureres.
Property | Beskrivelse |
---|---|
kafka.producer.bootstrap.servers | Kafka endpoint, som anvendes i forbindelse med kald til MinLog2 |
kafka.producer.client.id | Navnet som BTR vil fremgå med i listen af Producers på et Kafka Cluster. |
kafka.producer.key.serializer | Serializer key for Kafka producer |
kafka.producer.key.value.serializer | Serializer value for Kafka producer |
kafka.topic | Kafka topic som anvendes i forbindelse med kald til MinLog2 |
Standardværdierne konfigurerer en Log4j-backend der logger med ISO 8601 timestamps.
Se NSP-util - Designdokument.doc eller den officielle Log4j 1 dokumentation for alternativ konfiguration.
Konfigurerer security-api'et. Standardværdierne opsætter en keystore til signering af responses. Der henvises til accesshandlerens dokumentation for yderligere detaljer om konfiguration af security-api'et.
Der henvises til accesshandlerens dokumentation for yderligere detaljer om konfiguration af security-api'et.
Property | Beskrivelse | Default |
---|---|---|
spring.application.name | Navnet på applikationen | ltr-migration |
spring.jmx.enabled | Disable Spring Boot JMX. Skal ikke ændres. Deaktiveret da vi ikke udstiller særlig JMX funktionalitet. | false |
spring.jta.enabled | JTA transaktioner. Det er påkrævet at denne er false, således at Spring Boot i stedet anvender dens egen håndtering af transaktioner. (true/false) | false |
management.server.port | Port som Spring Boot management endpoints bind'er på. Endpoints deaktiveres ved at sætte værdien til -1. | -1 |
datasource.primary.jndi-name | Angiver navnet på den primære JNDI datasource | java:jboss/datasources/LTR-DS |
migration.personFileName | Fil med data i CSV format, der indeholder persondata. | PersonData.csv |
migration.ltrFileName | Fil med data i CSV format, der indeholder Livstestamentedata. | LivingWillData.csv |
Konfigurerer logning for migreringskomponenten.
Standardværdierne angiver nogle brugbare niveauer for anvendelse til migrering i produktion. Se migeringsvejledningen for uddybet beskrivelse af logning.
Se den officielle Log4j 2 dokumentation for alternativ konfiguration.
ltr-btr-service-wildfly komponenten kræver adgang til 2 JNDI datasources. Disse skal opsættes i Wildfly og refereres til i servicens application.properties.
Der følgende beskriver de forskellige deployables som komponenten indeholder.
Filnavn når deployet | Beskrivelse | Kilde |
---|---|---|
btr-service.war | LTR-BTR servicen | ltr-btr-service-wildfly-<version>.war |
ltr-migration.war | LTR migeringsværktøj. Deployes kun når migrering skal foretages. | ltr-migration-<version>.war |
Se driftsvejledningen for yderligere information.
Når der kommer opgraderinger til en komponent, vil der medfølge release notes, der beskriver opgradering, fallback, osv. for den enkelte komponent.