Formålet med dette dokument er at beskrive hvordan et udviklingsmiljø, til videreudvikling af BRS services, 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.
Guiden kan f.eks. indeholde:
Behandlingsrelationsprojektet (BRS) har det primære formål, at stille en service til rådighed anvendere, således at det kan afgøres, om der findes en aktuel behandlingsrelation mellem en behandler og en patient på et givent tidspunkt (evt ved bestilling af opfølgninger). I Behandlingsrelationsservice (BRS) - Leverancebeskrivelse gives en grundig beskrivelse af de forretningsmæssige aspekter f BRS.
Da servicen udstilles via den nationale serviceplatform (NSP), udstilles der en Java-webservice i de decentrale NSP miljøer, samt det centrale NSP miljø (hhv. dNSP og cNSP), samt en backend/batch komponent der kører i det centrale Backoffice miljø. Den samlede kodebase består af følgende komponenter:
brs-frontend (dNSP og cNSP)
brs-backend (Backoffice)
For at kunne afgøre evidens for en behandlingsrelation er BRS afhængigt af stamdata fra eksterne evidenskilder. Disse data importeres af selvstændige stamdata-importere. Kodebasen til import af data indgår derfor ikke i BRS.
Hvis det bliver nødvendigt at ændre på tabeller i MySQL, skal man være opmærksom på at det kan kræve opdateringer flere steder i projektet. Der ligger en række scripts der kan bruges til at etablere et udviklermiljø forfra her:
integration/src/test/resources/sql/ |
- men ovenstående scripts er konstrueret udfra "master"-scripts der ligger i:
common/src/main/resources/sql/ |
Ovenstående mappe indeholder i øvrigt både MySQL- og HSQLDB-varianter. Dvs. hvis der kommer nye tabeller eller lignende til skal de vedligeholdes mere end ét sted.
Et andet sted der er "dobbelt vedligehold" er på XSD-definitioner. Disse findes både i common- og integration-projektet. Dette er dog med fuldt overlæg, da integration-projektet spiller rollen som klient til systemet, og hvis der fx bliver lavet en XSD-ændring i BRS, vil man kunne se om ændringen har betydning for integrationstesten. Hvis integration-projektet blot havde benyttet XSDerne fra common, så ville man ikke opdage denne type fejl.
Hvis man har adgang til FMKs Splunk-installation, kan man benytte følgende queries (mod test1) for at se FMKs afsendelse af registreringer og hentning af notifikationer:
Registreringer:
index=fmktest host="test1" source="*fmk-auditlog-modul.log" dk.nsi.fmk.auditlog.service.behandlingsrelation.registration Processing |
Notifikationer:
index=fmktest host="*test1.recept.netic.dk" source="/pack/fmk_auditlog_modul/fmk-auditlog-modul.log" dk.nsi.fmk.auditlog.service.behandlingsrelation.notification.job NOT Executing |
Al kode findes i NSP's Subversion respository. Rodfolderen for hele projektet kan findes her:
https://svn.nspop.dk/svn/components/brs
Efter at projektet er checket ud vil man typisk gøre følgende:
Følgende software er nødvendigt for at bygge projektet
Gennemfør følgende steps for at bygge WAR filer.
Check projektet ud fra NSP operatørens SVN
svn co https://svn.nspop.dk/svn/components/brs/trunk BehandlingsRelation |
For opsætning af Maven, da byggeprocessen er tung, anbefales følgende indstillinger:
MAVEN_OPTS='-Xms128m -Xmx2048m -XX:MaxPermSize=1024m' |
For at bygge projektet, foretage unittests samt at bygge war-filer foretages kommandoen
mvn clean install |
Herefter kan en lokal udgave kan startes med docker
|
Der henvises til dokumentet "Design og Arkitektur", som kan findes i samme mappe som dette dokument.
Projektet er opdelt i følgende moduler:
Både Behandlingsrelationsservicen og Notificationservice er implementeret ved brug af Den Gode Webservice (DGWS), hvor Seal.Java er brugt til at håndtere headers.
JAX-WS er brugt til kodegenerering ud fra wsdl-filer. JAXB er brugt til kodegenerering ud fra xsd-filer. Dette giver anledning til nogle redundante filer der slettes blandt de generede JAX-WS filer. Grunden til at både JAX-WS og JAXB benyttes er, at JAX-WS ikke generer alle de nødvendige filer samt at det ikke er muligt at specificere visse JAXB bindings og parametre.
Opfølgningsjobbet er implementeret som en servlet, der kaldes periodisk på Backoffice. Schedule.
Behandlingsrelationsbiblioteket er skrevet som en fælles kodebase der benytter reglerne i dokumentet "Behandlingsrelationsregler" der forefindes i dokumentationen.
Herunder beskrives diverse muligheder for test af Behandlingsrelationsservicen.
Der er i projektet etableret unittests, som afvikles i forbindelse med Maven-byg af projektet og der er opnået høj code coverage. En samlet rapport over code coverage generes automatisk af maven-jacoco-plugin i forbindelse med byg af projektet (findes i target folderen i testreport modulet efter byg).
I mappen "integration" forefindes et modul til integrations- og stresstests. De pågældende tests kan afvikles med Maven. De pågældende tests kræver at der er etableret et kørende miljø. Et sådant miljø kan etableres lokalt ved at bygge BRS og starte docker-compose development-setuppet, som beskrevet tidligere i denne guide.
Når dette er gjort, afvikles integrationstests som følger:
|
Der kan også testes mod andre miljøer end localhost, men så vil man manuelt skulle lægge datagrundlaget ind i miljøet først.
Der henvises til filen README.txt, som beskriver hvordan testen afvikles i praksis, herunder hvordan testdata indlæses.
Forud for en release af BRS skal man ajourføre Behandlingsrelationsservice (BRS) - Leverancebeskrivelse med de opdateringer der er sket siden forrige release. Henvisninger til aktuelle JIRAs skal inkluderes, og det skal være muligt at danne sig et overblik over releasens overordnede indhold.
BRS releases vha. maven-release-plugin, som sørger for at tagge trunk med nuværende version fra pom.xml, samt sætte versionsnummeret frem i pom.xml. Processen derefter er, at Arosii bygger projektet udfra pågældende tag og afvikler en smoketest på den aktuelle version deployet på et miljø der modsvarer produktion.
Først og fremmest skal projektet kunne bygges og opfylde unit tests. Dette gøres via:
mvn clean install |
Derefter skal udviklingssetuppet startes (beskrevet tidligere i dette dokument), hvilket er forudsætning for næste skridt: integrationstesten. Denne udføres således (under integrationtest):
mvn test -Dcreate_testdata=true |
(under antagelse af, at man har et kørende miljø). Dette tester basalt hul igennem platformen samt en række positiv/negativ-scenarier i forhold til stamdata, og skal køre igennem uden fejl. Se i øvrigt integration/README.txt hvis der er behov for at parameterisere i forhold til ikke-standard navngivning osv.
Når integrationstesten kører glat igennem kan man verificere at der kan releases via:
mvn release:prepare -DdryRun=true |
Under processen accepteres default-forslag til versionsnumre. Ovenstående genererer diverse filer, som kan opryddes via:
mvn release:clean |
Efterfølgende tagges koden via:
mvn release:prepare |
Dette gør at trunk tagges, samt at diverse pom.xml får opdateret deres versionsnumre, hvilket samtidigt committes til trunk.
Det nye tag skal efterfølgende fremgå under: https://svn.nspop.dk/svn/components/brs/tags
Igen genereres der en række filer, som opryddes via:
mvn release:clean |
Version | Dato | Ændring | Ansvarlig |
---|---|---|---|
0.1 | 2011-06-15 | Initielt Dokument | Trifork |
0.2 | 2011-07-27 | Rettelser i forbindelse med udvidelse af maven opsætning samt konvertering til generelle notifikationer. | Trifork |
0.3 | 2011-08-10 | Udvidelse af dokumentation med GOS | Trifork |
0.4 | 2011-10-05 | Udvidelse af dokumentation med CPRABBS | Trifork |
0.5 | 2013-10-21 | Rettet svn urls | Trifork |
0.6 | 2014-03-04 | Tilføjet MAVEN_OPTS oplysninger, til bygge delen | Trifork |
0.7 | 2017-03-08 | Tilrettet BRS2 | Trifork |
0.8 | 2017-03-14 | Rettet betegnelser på NSP-miljøer | Trifork |
0.9 | 2019-07-12 | Justeret url til source repository til | KvalitetsIT |
0.10 | 2020-07-23 | Opdateret med beskrivelse af byg/test med docker-setup. | KvalitetsIT |
0.11 | 2020-11-23 | Gennemlæst og ajourført i forhold til nuværende struktur (jacoco rapport tilføjet) | KvalitetsIT |