Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

Anchor
_Toc40578283
_Toc40578283


Table of Contents


Stamdataservice på NSP
Guide til udviklere


Anchor
_Toc250887291
_Toc250887291
Formål

Nærværende dokument er en guide til nye udviklere af stamdataservicen på DoDi'en. Guiden gennemgår på overordnet plan de aktiviteter, der er nødvendige for at kunne videreudvikle stamdataservicen.

Anchor
_Toc310537038
_Toc310537038
Anchor
_Toc250887292
_Toc250887292
Metode og rapportens opbygning

Efter nærværende introduktion vil dokumentet gennemgå de væsentligste dele af opsætningen af et lokalt udviklingsmiljø og afvikling af test/performancetest.
Dokumentet forudsætter, at læseren har grundig kendskab til Java udvikling, webservices og Maven. Kendskab til JBoss applikationsserver 7 vil yderligere hjælpe læseren, men er ikke en forudsætning.
I dokumentet benyttes følgende notationer:
Markering af scripts og kommandoer.
Markering af advarsler
Markering af referencer til filer.

Anchor
_Toc310537039
_Toc310537039
Anchor
_Toc250887293
_Toc250887293
Målgruppe og læsevejledning

Den primære målgruppe for dokumentet er systemudviklere.

Anchor
_Toc263424147
_Toc263424147
Anchor
_Toc250887294
_Toc250887294
System design


Wiki Markup
Stamdata importerne består af en kerne komponent (sdm4-core), og en række importer specifikke komponenter – alle deployes på Dodi'en og har udelukkende til formål at populere data i en database (kan godt være forskellige databaser for hver komponent), se \[DESIGN\] for yderligere information vedrørende DoDi.
\\
*Komponenter på DoDi:*
DoDi applikationerne er en række selvstændigt kørende applikationer, til overvågning af indkomne data filer, der kan være i forskellige formater (XML, fastlængde, csv, m.v). Indkomne filer indlæses, valideres og gemmes herefter i DoDi'ens database.
\\
Hvert komponent indeholder en implementation af et Parser interface der fungerer som entry-point til applikationen. Det anbefales, at man som ny udvikler på projektet kigger koden igennem med denne fil som udgangspunkt.


Anchor
_Toc250887295
_Toc250887295
Properties

Stamdata importerne styres af java properties filer. Hver stamdata importer har en default konfigurations fil (default-config.properties) som er deployet sammen med war filen, denne kan overstyres med en properties fil lagt i jboss uden for war filen (config.properties) – se installations guiden for detaljer

Anchor
_Toc250887296
_Toc250887296
Opsætning af udviklingsmiljø

Opsætningen af udviklingsmiljøet for stamdataservicen forudsætter, at følgende elementer allerede er installeret på udviklerens maskine:

  • Java Developer Kit 6.0_x
  • Et passende udviklingsmiljø
  • Maven 3.x
  • Docker 18.x (testet med 18.09.7)

Anchor
_Toc250887297
_Toc250887297
Kildekode

Kildekoden er placeret i to forskellige github-repositories:

Anchor
_Toc250887298
_Toc250887298
DoDi

Kildekoden er placeret her:
Core modul: https://svn.nspop.dk/svn/trifork/sdm4-core/trunk/
Maven-plugin: https://github.com/trifork/sdm4-vagrant-maven-plugin/
Test-utils: https://svn.nspop.dk/svn/trifork/sdm4-testutils/trunk/
Parent-modul inkl. Test-environment: https://svn.nspop.dk/svn/trifork/sdm4-parent/trunk/
Importer moduler
https://svn.nspop.dk/svn/trifork/sdm4-autorisationimporter/trunk/
https://svn.nspop.dk/svn/trifork/sdm4-bemyndigelseimporter/trunk/
https://svn.nspop.dk/svn/trifork/sdm4-cprimporter/trunk/
https://svn.nspop.dk/svn/trifork/sdm4-doseringimporter/trunk/
https://svn.nspop.dk/svn/trifork/sdm4-lprimporter/trunk/
https://svn.nspop.dk/svn/trifork/sdm4-refhostimporter/trunk/
https://svn.nspop.dk/svn/trifork/sdm4-sikredeimporter/trunk/
https://svn.nspop.dk/svn/trifork/sdm4-sksimporter/trunk/
https://svn.nspop.dk/svn/trifork/sdm4-sorimporter/trunk/
https://svn.nspop.dk/svn/trifork/sdm4-sorrelationimporter/trunk/
https://svn.nspop.dk/svn/trifork/sdm4-takstimporter/trunk/
https://svn.nspop.dk/svn/trifork/sdm4-testdataimporter/trunk/
https://svn.nspop.dk/svn/trifork/sdm4-tilskudsblanketimporter/trunk/
https://svn.nspop.dk/svn/trifork/sdm4-vaccinationimporter/trunk/
https://svn.nspop.dk/svn/trifork/sdm4-vitaminimporter/trunk/
https://svn.nspop.dk/svn/trifork/sdm4-ydelseimporter/trunk/
https://svn.nspop.dk/svn/trifork/sdm4-yderimporter/trunk/
Koden checkes ud på følgende måde:
% svn co <kode-url> <sdm4-navn>

Anchor
_Toc250887299
_Toc250887299
Byggemiljø


Wiki Markup
Stamdataprojektet anvender Maven som byggesystem \[MAVEN\]. Strukturen følger de generelle anbefalinger for Maven projekter, og er struktureret med en parent pom.xml og en projekt pom.xml fil for hvert underprojekt.
Subprojekterne er opbygget efter Maven layout konventionen.
\\
For at bygge en importer, skal man gøre følgende:
Check Core-modul ud og kør mvn install
Check Maven-plugin ud og kør mvn install
CheckTest-utils ud og kør mvn install
Check parent-modul ud og kør mvn install
\\
Herefter er du klar til at bygge et importer-modul.
Importmodulets integrationstest er afhængig af at ligge som et subdirectory til parent-modulet, så du skal checke det ud som sådan et.
Hvis du ønsker at checke alle importermoduler ud, ligger der i roden af parent-modulet et script, checkout-importermodules.sh, som udfører checkout af alle importermoduler samt maven-plugin og test-utils.
\\


Anchor
_Toc250887300
_Toc250887300
Dependencies

For at kunne hente NSI-specifikke dependencies (SEAL, nsp-util) osv. i binær form i stedet for at skulle bygge dem allesammen lokalt, indeholder pom'erne for alle importmoduler en reference til nexus.trifork.com, som er et artefaktrepository der er placeret hos Trifork. Binære releases af alle moduler inkl. core, maven-plugin, test-utils og parent findes også i nexus.trifork.com.
Repository'et bør snarest muligt udskiftes med et repository der er driftet hos NSI. Når et sådant er etableret, vil alle SDM4-moduler skifte til at bruge dette.

Anchor
_Toc250887301
_Toc250887301
Database setup

Anchor
_Toc250887302
_Toc250887302
DoDi

For at køre projektets tests skal der køre en lokal MariaDB. Projektet indeholder et docker-compose setup, der starter en MariaDB container op og initialiserer en database.

For at starte MariaDB-containeren køres følgende fra folderen compose/development:

% docker-compose up

Det kan tage op til et minut, før databaseserveren er klar.

Når mariadb-containeren er oppe, er den sat op med en root-bruger med tomt password, og en sdm4bruger med password papkasse.
Der er også automatisk oprettet en tom database med standard-navnet for databasen, (sdm_warehouse).
Applikationen kører ved opstart automatisk databaseskema på databasen.
Der er mappet følgende porte, så man kan tilgå jboss og mysql fra sin lokale maskine
8080 -> 8080 (dvs. at man kan tilgå http://localhost:8080/)
3306 -> 3306

Anchor
_Toc250887303
_Toc250887303
Test

Installationen kan verificeres ved at eksekvere stamdataservicens test suite.
Stamdataservicen benytter JUnit og Mockito til test.
Testkoden er for hvert modul lokaliseret i:
src/test/java
Test suiten afvikles ved at udføre følgende kommando i projektroden:
% mvn test
Kommandoen kan også udføres under de individuelle moduler, hvorved kun undermodulets test udføres.
Installationen kan yderligere verificeres ved at udføre kommandoen:
% mvn verify
Denne kommando validerer code coverage og kode konventionerne for projektet.
Kode konventionerne følger reglerne defineret i filen:
config/checkstyle.xml

Anchor
_Toc250887304
_Toc250887304
IDE

Stamdataservicen kan principielt udvikles i enhver Java IDE, der forstår Maven projekters opbygning.
I dette dokument beskrives kort opsætning for to af de pt. mest udbredte Java IDE'er: Eclipse og IntelliJ.

Anchor
_Toc250887305
_Toc250887305
Eclipse

Eclipse er ikke født med Maven support, og det anbefales derfor, at man installerer m2eclipse inden stamdataservicen hentes ind i Eclipse:
http://www.eclipse.org/m2e/
Herefter importeres projekterne i Eclipse via "import":
Alternativt kan man importere projektet ved at udføre følgende kommando:
% mvn eclipse:eclipse
Og herefter importere projektet på normal vis i Eclipse.
Kommandoen genererer Eclipse projektfilerne (.project og .classpath) for roden og hvert undermodul. Denne metode kræver dog, at kommandoen udføres hver gang man ændrer i pom filerne.

Anchor
_Toc250887306
_Toc250887306
IntelliJ Idea IDE

IntelliJ Idea er født med Maven support, og stamdataservicen kan derfor direkte importeres. Projektet importeres i IntelliJ ved under "Create new project" at vælge "Import project from external model". Herefter udvælges roden af stamdataservicen, hvorefter projektet importeres.
Det anbefales i den sammenhæng, at man krydser af i "Import Maven projects automatically", hvorefter IntelliJ selv detekterer nye moduler i projektet.
Alternativt kan man importere projektet ved at udføre følgende kommando:
% mvn idea:idea
Herefter kan projektet importeres på normal vis i IntelliJ.
Obs! Denne metode kræver dog, at kommandoen udføres hver gang man ændrer i pom filerne.

Anchor
_Toc250887307
_Toc250887307
Distribution

Stamdataservicen kan bygges til distribution eller lokal test ved at udføre:
% mvn package
Dette generer en række WAR filer, der efterfølgende kan deployeres lokalt eller i produktion.

Anchor
_Toc250887308
_Toc250887308
Tips og tricks

I de følgende beskrives problemer og deres løsninger:

Anchor
_Toc250887309
_Toc250887309
JBoss out of memory

Anchor
_Toc250887310
_Toc250887310
Beskrivelse


I JBoss's boot.log:
$JBOSS_HOME/server/default/log/boot.log
Logger JBoss noget i stil med "out of memory" og nævner "permgenspace"

Anchor
_Toc250887311
_Toc250887311
Løsning

Forøg JBoss permgen space ved at ændre linien indeholdende:
JAVA_OPTS="-Xms2048m -Xmx2048m -XX:MaxPermSize=256m -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000"
i filen
$JBOSS_HOME/bin/run.conf
til
JAVA_OPTS="-Xms2048m -Xmx2048m -XX:MaxPermSize=512m -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000"

Anchor
_Toc250887312
_Toc250887312
Ændringslog

Nyeste udgave af dette dokument kan erhverves ved henvendelse til NSP-operatøren.

Version

Dato

Ændring

Ansvarlig

1.0

28/4-2011

Initielt Dokument

Trifork

1.1

6/10-2011

Opdateret med CPR tjenester

Trifork

1.2

8/12-2011

Kvalitetssikret af Lakeside

Lakeside

1.3

22/12-2011

Opdateret bla. med performance test af autorisationsservicen og kopi-register-servicen

Trifork

1.4

20/8-2012

Tilføjet DoDi-specifikke afsnit der beskriver SDM4

Trifork
jrf@trifork.com

1.5

24/8 2012

Fjernet al dokumentation der ikke var SDM4 importer specifik

Trifork

1.6

9/1-2014

Opdateret source links

Trifork KPN


Anchor
_GoBack
_GoBack

Anchor
_Toc310537059
_Toc310537059
Anchor
_Toc250887313
_Toc250887313
Referencer og kilder

Reference-id

Indhold / Overskrift

Henvisning

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="5702e6d1-7b08-4b7d-bfe1-90ef4de78b5d"><ac:plain-text-body><![CDATA[

[MAVEN]

Welcome to Apache Maven

[http://maven.apache.org/

http://maven.apache.org/]

]]></ac:plain-text-body></ac:structured-macro>

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="dfc2d094-8ed7-4b79-a0e8-63c2f8d91435"><ac:plain-text-body><![CDATA[

[NIAB]

NSP in a box

Kan rekvireres ved henvendelse til operatøren inklusiv vejledning i anvendelse og konfiguration.

]]></ac:plain-text-body></ac:structured-macro>

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="55fa1e86-7c63-4027-a7d5-1bd0baf05730"><ac:plain-text-body><![CDATA[

[BRS-guide til anvendere]

Guide til anvendere

Ligger i doc bibliotek i en BRS release

]]></ac:plain-text-body></ac:structured-macro>

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="6170013d-58db-4cfe-a9e0-ca4ce6390ffa"><ac:plain-text-body><![CDATA[

[BRS-driftvejledning]

Driftvejledning

Ligger i doc bibliotek i en BRS release

]]></ac:plain-text-body></ac:structured-macro>