Addressindex
Addressindex wird auch “Contract DB” und “Contractindex” genannt
Abstract
Hinter der Contract DB verbirgt sich ein unabhängiger Microservice, der eine REST Schnittstelle für die Systemweiche der B2B zur Verfügung stellt.
Systemvorraussetzungen
Die Applikation benötigt Java 8 und genügend Arbeitsspeicher um die Stammdaten plus der zugehörigen Indices im Speicher zu halten.
Installation
Die Applikation wird als einzelne JAR Datei ausgeMANDANTBert. Sie wird über 2 Files konfiguriert.
application.yaml
Diese Datei muß im gleichen Verzeichnis wie die JAR Datei abgelegt werden und konfiguriert das grundlegende Verhalten des Servers.
# === Server Config
server.port: 8080
Frei wählbarer Port unter dem der Server erreichbar sein soll
# === Enable H2 Console
spring.h2.console.enabled: true
Das aktivieren dieser Option schaltet auf dem Server eine SQL-Console unter dem Pfad /h2-console frei
# === DB Config
spring.datasource.url: jdbc:h2:mem:contractdb
spring.datasource.driverClassName: org.h2.Driver
spring.datasource.username: indexr
spring.datasource.password: changeme
spring.datasource.platform: h2
Der letzte Teil der datasource url ist frei wählbar. username und password sind ebenfalls frei wählbar. In der in-memory Datenbank wird ein User mit diesen Werten angelegt, der sowohl vom Server selber genutzt wird als auch zum Login über die SQL-Console zur Verfügung steht. Da dieses Konfigurationsfile in einem übergeordneten Verzeichnis zu den Input-Daten des Servers liegt entsteht durch diese Konfigurationsoption kein zusätzliches Sicherheitsrisiko.
# === Hibernate
spring.jpa.show-sql: false
spring.jpa.hibernate.ddl-auto: none
spring.jpa.properties.hibernate.dialect: org.hibernate.dialect.H2Dialect
Dieser Teil sollte nur in Ausnahmefällen angepasst werden.
# === Config
rescan.delay.milliseconds: 10000
csv:
files:
- system: SYSTEM1
mandant: MANDANTA
path: VERZEICHNIS1/filename.csv
- system: SYSTEM1
mandant: MANDANTB
path: VERZEICHNIS2/filename.csv
- system: SYSTEM2
mandant: MANDANTA
path: VERZEICHNIS3/filename.csv
- system: SYSTEM2
mandant: MANDANTB
path: VERZEICHNIS4/filename.csv
rescan.delay.milliseconds definiert die Pause zwischen dem Ende der letzten Überprüfung der InputFiles und der nächsten Überprüfung.
Unter csv.files werden die Datenfiles definiert. Es muß pro Kombination aus System und Mandant ein File zur Verfügung gestellt werden, die entsprechend der Konfiguration benannt und in den passenden Verzeichnissen abgelegt werden müssen. Es wird empfohlen, die Files unter einem anderen Namen auf das System zu kopieren und im Anschluß umzubenennen um den Import unvollständiger Files zu verhindern. Während dem Import antwortet der Server weiterhin mit den Daten aus dem letzten Import. Es findet kein incrmentieller Import statt. Die Daten werden pro Kombination aus System und Mandant vollständig durch den neuen Import ersetzt.
management:
endpoint:
httptrace:
enabled: true
endpoints:
web:
exposure:
include: ["health", "httptrace"]
Dieses Setting schaltet einen zusätzlichen Endpoint unter /actuator/httptrace
frei, der die letzten 100 Requests auflistet.
log4j2.xml
Konfigurationsfile nach Log4j-2 Standard. Interessante Logger:
- org.springframework.web.filter.CommonsRequestLoggingFilter - loggt auf debug level alle Requests
- com.nextlevel.b2b.contractindex.service.finder.ContractDataCheckService - loggt auf debug level den Suchvorgang
- com.nextlevel.b2b.contractindex.service.reader - loggt auf debug level den Updateprozeß
Fileformat
Der Service erwartet pro Kombination aus System und Mandant eine CSV-Datei am konfigurierten Ort. Über das lezte Änderungsdatum dieser Files wird ermittelt, ob ein neuer Import erfolgen muß. Um Locks auf der Datenbank zu vermeiden findet kein paraleller Import statt. Während des Imports arbeitet der Service mit den bisherigen Daten weiter.
Die CSVs müssen ;
als Trennzeichen verwenden und über eine Headerzeile mit den Spaltennamen verfügen. Die Reihenfolge der Spalten ist beliebig, allerdings müssen die Spaltennamen eingehalten werden. Die berücksichtigten Spaltennamen sind:
- system
- mandant
- malo
- melo
- meternr
- firstname
- lastname
- street
- housenr
- plz
- city
- cityadditional
- contractnr
Ablauf der Suche
Die Suche erfolgt in mehren Schritten und wird nach dem erste Schritt, der mindestens ein Ergebnis liefert beendet. Die Ergebnisse der Suche werden als Liste uniquer Kombinationen aus System und Mandant in undefinierter Reihenfolge zurück gegeben.
- Suche nach Marktlokation
- Suche nach Meßlokation
- Suche nach Vertragsnummer
- Suche nach Gerätenummer
- Suche nach Adressdaten
- Vorname (optional, falls vorhanden)
- Nachname (optional, falls vorhanden)
- Straße
- Hausnummer
- Postleitzahl
- Stadt
Optionale Adressfelder müssen vom aufrufenden System (der B2B) nicht übermittelt werden.
View Me Edit Me