Page History
...
Herunder beskrives specifikke forhold for Cpr Indlæseren.
Byggevejldning
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:
- stamdataindlaeser (Maven identifier:dk.nsi.sdm.stamdataindlaeser:stamdataindlaeser)
For at bygge disse interne artefakter, henvises der til artefakternes dokumentation.
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 -DskipTestsProjektets deployables ender i target-mappen under de respektive moduler.
Data validering
På hver række af data foretages der følgende valideringer.
...
- CPR numre er valide - dvs. 10 cifre, hvor de første 6 cifre er en gyldig dato to cifre er et tal fra 01 og 31, og de næste to er et tal fra 01-12 - hvis et CPR nummer ikke er validt skippes den pågældende Person
- Felterne i Yder og YderPerson er tabellerne der er defineret som alfanumeriske - så der foretages ikke nogen validering af typen/udfaldsrum af værdier
- Felterne i tabellerne der er defineret som "Date" valideres for om de overholder formatet "dd-MM-yyyy".
- Felterne i tabellerne der er defineret som "DateTime" valideres for om de overholder formatet "dd-MM-yyyy HH:mm".
- Felterne i tabellerne der er defineret som "int" valideres for om værdier er numeriske Yder og YderPerson er defineret med deres længder, og det valideres om alle værdier overholder den givne længde for feltetFelterne i Yder og YderPerson er alle defineret som "mandatory" felter, og det tjekkes derfor om alle felter indeholder en værdi.
Filsæt validering
På et modtaget filsæt gennemføres der et antal valideringer før data parses og splittes til events for levering til modtagere af data.
...
- Input filerne ved fuldt import skal overholde dette pattern:
D.{6}\\.L4311.*Input filerne ved delta import skal overholde dette pattern:D.*\\.L431101
Validering af encoding
Indholdet af filen for CprIndlæseren forventes at være encodet i ISO-8859-1.
...
Efter hver <CPR RECORD> forventes der at være et CprNr. Det skal være et tal med 10 cifre - og de første 4 cifre skal være en dato.
Overvågning
Overvågningsservicen giver udslag på sin statusservice i følgende situationer, hvilket vil sætte supporter igang
- En filsæt validering fejler - dvs. at den senest modtagne fil er afvist som helhed
- En event-validering fejler - dvs. at enkelte events i en modtagen fil ikke opfylder validitets-regler.
- Afhængighedsproblemer (fx. ingen forbindelse til databasen)
- Der er gået uforholdsmæssigt lang tid siden vi har fået sidste fil (kan konfigureres)
- Anden processeringsfejl
Registrering af fejl
De ovenstående fejlscenarier er knyttet til indlæsningerne, og da yder indlæseren godt kan slukkes og startes, bliver evt. fejltilstande holdt i databasen i tabellerne CPR_dataset, CPR_datasetlog, CPR_registerstatus og CPR_registerfejl.
Tabellerne CPR_dataset og CPR_datasetlog er i bund og grund en database log over fejl der er opstået under processering af en fil. Disse tabeller udtrykker derfor hvordan processering af den seneste fil er foregået.
Tabellerne CPR_registerstatus og CPR_registerfejl beskriver den akkumulerede status for et givent register (her cprregisteret) og holder derfor styr på, om f.eks. en fejl i en given event stadig er forekommende, selvom der er modtaget stamdata filer efter at fejlen optrådte første gang.
Det er tabellerne CPR_registerstatus og CPR_registerfejl der danner grundlaget for visningen i overvågningsservicen, da vi her ønsker at se den akkumulerede status for det pågældende register.
Bemærk, at for CprIndlæseren, som kun indlæser fulde indlæsninger, vil den akkumulerede status altid svare til status for den senest modtagne fil.
Det tjekkes at navnet på input filerne ved delta import overholder dette pattern:
D.*\\.L431101Da overvågningsservicen polles hvert 10 sekund er der et krav til at den er letvægts. I den nuværende overvågningsservice i CprIndlæseren er det kun hvis databasen er nede at det kan tage et par sekunder, hvorfor yder indlæseren venter et par sekunder før den giver op.