BRP opstarten voor ongeduldigen - Hilbrand/OperatieBRP GitHub Wiki

Deze beschrijving heeft betrekking op de 1e vrijgave van de operatieBRP bron code. Gemaakte aanpassingen in de broncode om het werkend te krijgen zijn te vinden in de branch: 1evrijgave


Het doel van deze actie is om te onderzoeken of het mogelijk is de applicaties van het BRP op te starten zonder gehinderd te worden door enige voorkennis. Dit is een verhalende handleiding van dit process om de applicaties op te starten om het een beetje leuk te houden en pretendeert niet de meest optimale manier te zijn om deze applicaties op te starten, of mogelijk ook niet eens de juiste methode. Daarom moet het niet als een echte handleiding worden beschouwd. Deze repository bevat alle aanpassingen/hacks die ik heb gemaakt om het werkend te krijgen.

Voorbereiding

Het project bestaat grotendeels uit Java code en wordt gebouwd met maven. Om te beginnen daarom Java 8 en maven nodig.

Database

De basis brp is de database. Dus deze opstarten is het eerste doel. De database sql is te vinden in de map Broncode/database-code-58.0.4 Verder blijken 2 databases te worden ondersteund Postgres en HyperSQL Deze laatste is een 100% Java database en wordt gebruikt voor testen valt af te leiden uit de broncode. Terwijl Postgres de productie database is. Door mvn package te draaien in deze map wordt een installatie pdf gemaakt in target/docbkx/pdf. Deze is gericht op het installeren van een Postgres database. Om snel te starten gebruik ik docker om een Postgres database op te starten. In de installatiehandleiding wordt aangegeven versie 9.2.x te gebruiken. Voor deze installatie heb ik versie 9.6 gebruikt. De docker image heb ik opgestart met als database gebruiker en wachtwoord: brp.

docker run --name brp -e POSTGRES_PASSWORD=brp -e POSTGRES_USER=brp -p 5432:5432 -d postgres:9.6

Ook moet de Postgres client geïnstalleerd zijn om met de docker database te kunnen communiceren. Als de Postgres docker image is opgestart wordt een database aangemaakt die ik ook brp heb genoemd:

createdb -U brp -E UTF-8 brp

Vervolgens moeten de database tabellen worden ingeladen. In staan in de map: Broncode/database-code-58.0.4/brp-database/src/main/resources/bmr/Postgres/ Voor het gemak heb ik alle tabellen ingeladen, en dat ging prima. Ik moest een kleine aanpassing making ivm met een validate melding gerelateerd aan locale encoding en mogelijk veroorzaakt door een verschil in Postgres versie, ik heb het verder niet uitgezocht. In deze code base is dit aangepast. Dmv van een aantal psql -f <file.sql> commando's heb ik de database schema's en tabellen aangemaakt.

Op dit moment draait de database!

Beheer-UI

De volgende applicatie is de beheer ui. Dit lijkt de enige applicatie te zijn met een user interface. Om deze applicatie op te starten moet de java code gecompileerd worden. Dat gaat niet zonder problemen. Dit komt door het ontbreken van een aantal projecten, en de tests. De tests zijn een probleem omdat een aantal projecten afhankelijk is van test jars en daarom niet compileren. Verder ontbreekt het migratie project. Dit is een probleem omdat een aantal andere projecten afhankelijk is van deze projecten.

Om het te compileren heb ik daarom mock bestanden voor de test projecten en mock classen voor het migratie project gemaakt. Deze mock classen hebben geen implementatie.

Het project bestaat uit 3 delen die gebouwd kunnen worden. De database en koppelvlak zijn klein, maar moeten eert gebouwd worden om de brp code te kunnen bouwen.

Voor dataabse voor het volgende commando uit in de map Broncode/database-code-58.0.4/brp-database

mvn install

Voor koppelvlak voer het volgende command uit in de map Broncode/koppelvlak-code-25.0.3/brp-koppelvlak:

mvn -f pom\ 08.16.03.xml install

Voor het bouwen van de brp code voor het volgende maven commando uit in de map Broncode/operatiebrp-code-145.3:

mvn -f pom\ 08.17.42.xml install -DfailIfNoTests=false -Dmodules-distributie.skip=true -Dmodules-deployment.skip=true

Met de gecompileerde code kan ik verder. De beheer ui applicatie draait bovenop de beheer api. Deze applicaties zijn te vinden in de Broncode/operatiebrp-code-145.3/brp/beheer en bestaat uit 2 delen: beheer-api en beheer-ui. In de map beheer-ui staat een readme.md waarin beschreven staat hoe het moet worden opgestart. De beheer-api wordt opgestart met jetty: mvn jetty:run. Dan blijkt dat een bestand beheer.properties nodig is met de database connectie gegevens. Gelukkig staat er een template van dit bestand in Broncode/operatiebrp-code-145.3/brp/build/brp-test-properties/src/main/config/beheer.properties. Deze kopieer ik naar: Broncode/operatiebrp-code-145.3/brp/beheer/beheer-api/src/main/resources/beheer.properties In dit bestand heb ik alle database configuraties gezet die naar mijn eigen aangemaakte database verwijzen. Verder blijkt er nog een verwijzing naar een test webdefault.xml verwijzen die niet is meegeleverd. Door in de pom dit uit te zetten kan ik verder. Na deze wijzigingen wordt de beheer-api succesvol opgestart.

Nu de beheer-ui. Deze staat in de beheer-ui map. Uit de eerder genoemde readme blijkt dat deze met (nodejs)[https://nodejs.org) werkt en opgestart kan worden met het programma gulp. Dit zijn allemaal open source programma’s. Na alles geïnstalleerd te hebben type ik simpel: gulp en alles start op!

Ik browse nu naar http://localhost:8080/brp-beheer/

Nu nog inloggen.

Even zoeken leert dat er een optie useInMemoryAuthentication is. Als deze optie in beheer.properties is gezet komen 3 standaard users beschikbaar wat te vinden is in: Broncode/operatiebrp-code-145.3/brp/beheer/beheer-api/src/main/java/nl/bzk/brp/beheer/webapp/configuratie/SecurityConfiguratie.java. Na deze optie aangezet te hebben in beheer.properties en jetty opnieuw opgestart te hebben kan ik inloggen met:

gebruiker wachwoord
admin admin
functioneel functioneel
gegevens gegevens

Even later vind ik nog dat van de beheer.properties diverse varianten gegenereerd worden in: Broncode/operatiebrp-code-145.3/brp/build/brp-test-properties/target. Daar staan ook in sommige useInMemoryAuthentication=true. Dus dat lijkt de methode om met gebruikers te werken in test.

SOAP webservices

Uit het Architectuur/Deployability services document valt af te leiden dat er verder nog diverse webservices beschikbaar zijn waar de buitenwereld met het BRP mee communiceert. Dit zijn soap webservices. Een zoektocht naar welke pom bestanden war bestanden aanmaken levert de projecten op die als soap webservice gedeployed kunnen worden. Ik neem willekeurig de bijhouding service:

brp-bijhouding-delivery-ws

Eerst opstarten met mvn jetty:run. Dit werkt niet er wordt gevraagd om security gegevens. Er staat een privatestore.jks Broncode/operatiebrp-code-145.3/brp/brp-bijhouding/brp-bijhouding-delivery/brp-bijhouding-delivery-ws/src/main/resources/ die blijk ik te kunnen gebruiken. Een nieuwe zoektocht levert de gegevens voor deze test privatestore.jks op in oa: Broncode/operatiebrp-code-145.3/brp/build/brp-test-properties/src/main/filters/localhost.properties

Weer opstarten jetty met deze argumenten:

mvn jetty:run -Dsecurity.privatekey.password=serverkeypassword -Dsecurity.privatekey.alias=serverkey -Dsecurity.keystore.private.password=privatestore -Dsecurity.keystore.private.file=privatestore.jks

Daarna is de webservice beschikbaar via: http://localhost:8080/BijhoudingService/ en toont de beschikbare SOAP diensten.

Een zelfde actie heb ik voor service bevraging gedaan. Deze staat in het project: brp-delivery-bevraging

Hier zijn ook nog de database connectie gegevens nodig en is het ook nodig om de pom Broncode/operatiebrp-code-145.3/brp/brp-leveren/brp-leveren-delivery/brp-delivery-bevraging/pom.xml. Om een of andere reden staat de Postgres database als alleen beschikbar voor scope test. Dit heb ik uitgezet voor mijn test en dan werkt het door jetty als volgt op te starten:

mvn jetty:run -Dsecurity.privatekey.password=serverkeypassword -Dsecurity.privatekey.alias=serverkey -Dsecurity.keystore.private.password=privatestore -Dsecurity.keystore.private.file=privatestore.jks -Djdbc.protocollering.driverClassName=org.postgresql.Driver -Djdbc.protocollering.url=jdbc:postgresql://localhost:5432/brp -Djdbc.master.driverClassName=org.postgresql.Driver -Djdbc.master.url=jdbc:postgresql://localhost:5432/brp -Djdbc.master.username=brp -Djdbc.master.password=brp -Djdbc.protocollering.username=brp -Djdbc.protocollering.password=brp -Djdbc.archivering.url=jdbc:postgresql://localhost:5432/brp -Djdbc.archivering.driverClassName=org.postgresql.Driver -Djdbc.archivering.username=brp -Djdbc.archivering.password=brp

De service is dan beschikbaar via: http://localhost:8080/LeveringBevragingService/ en toont de beschikbare SOAP diensten.

Ik heb de SOAP services verder niet functioneel getest. Maar het lijkt erop dat als je een programma zou willen maken dat met deze services communiceert de basis van uit wsdl bestanden uit Broncode/koppelvlak-code-25.0.3/brp-koppelvlak/src/main/resources gegenereerd kan worden....

⚠️ **GitHub.com Fallback** ⚠️