FLYS-AFT:
"""""""""
Der FLYS-AFT-ETL-Prozessor aktualisiert eine FLYS-Datenbank mithilfe
eines DIPS-XML-Exports und einer AFT-Datenbank in bezug auf Pegel und
Abflusstafeln.
Vorbedingungen:
---------------
* Es existiert ein DIPS-XML-Export unter einen erreichbaren Pfad
im Dateisystem.
* Es existiert eine AFT-Datenbank mit bekannten Credentials.
* Es existiert eine FLYS-Datenbank mit bekannten Credentials.
Bau:
----
* Maven2 sollte installiert und im Pfad liegen.
( http://maven.apache.org/docs/2.2.1/release-notes.html )
$ mvn --version
Sollte Versionsinformationen ausgeben.
* Für die Nutzung der Oracle JDBC-Bindings muss das Oracle-Treiber-Jar
in das lokale Maven-Repository installiert werden:
$ mvn install:install-file -DgroupId=ojdbc5.jar -DartifactId=ojdbc5 \
-Dversion=0 -Dpackaging=jar -Dfile=ojdbc.jar -DgeneratePom=true
* Für den eigentlichen Oracle-kompatiblen Bau kann dann folgendes
aufgerufen werden:
$ mvn -f pom-oracle.xml clean compile assembly:single
$ cp target/river-etl-1.0-SNAPSHOT-jar-with-dependencies.jar \
bin/etl.jar
* Folgendes führt das fertige Programm dann aus:
$ bin/run.sh
Konfiguration:
--------------
Zur Konfiguration wird eine Konfiguration-Datei benötigt. Diese wird
standardmässig im aktuellen Arbeitsverzeichnis uter dem Name 'config.xml'
gesucht. Der Pfad zu dieser Datei kann allerdings auch mit der
System-Property config.file gesetzt werden.
Dies geschieht über den Kommandozeilenparameter "-Dconfig.file=/pfad/zur/config.xml"
im Start-Skript bin/run.sh
Die Konfigurationsdatei hat folgende Struktur:
1
2
3
4
5
6
7
8
9
10
11
12
13 /the/path/to/the/dips/file
14 /the/path/to/the/xslt/to/repair/dips
15
16
17
18
19 oracle.jdbc.OracleDriver
20 flys
21 flys
22 jdbc:oracle:thin:@//localhost:1521/XE
23
24
25
26
27
28 oracle.jdbc.OracleDriver
29 aft
30 aft
31 jdbc:oracle:thin:@//localhost:1521/XE
32
33 ALTER SESSION SET CURRENT_SCHEMA=AFT
34
35
36
37
Sie besteht aus vier Bereichen:
* DIPS:
Zeile 13: Pfad zur XML-Datei mit dem DIPS-Export
Zeile 14: Pfad zur Reparatur-XSL-Transformation (s.u.).
Dieser ist optional.
* FLYS:
Zeile 19: JDBC-Treiber für den Zugriff auf die FLYS-Datenbank
Zeile 20: DB-Nutzername
Zeile 21: Connection-URL zur FLYS-Datenbank
* AFT:
Zeile 28: JDBC-Treiber für den Zugriff auf die AFT-Datenbank
Zeile 29: DB-Nutzername
Zeile 30: Connection-URL zur AFT-Datenbank
* Schemata:
Zeile 32-34: Schema in welches die Daten geschrieben werden sollen.
* Benachrichtigungen:
Zeile 5: URL des Web-Service, der benachrichtigt werden soll.
Zeile 6-18: Die Nachricht, die an den Web-Service verschickt werden soll.
Funktionsweise:
---------------
Als erstes wird die DIPS-Datei geladen. Ist angegeben, dass
eine Reparatur-XSL-Transformation auf diese angewendet werden
soll, wird diese ebenfalls gelanden und auf das DIPS-Dokument
angewandt.
!!! Hinweis: Unter doc/repair.xsl findet sich eine Beispiel-Transformation,
!!! Die mithilfe von doc/pegelstationen.xml für die Flüsse
!!! Saar, Mosel und Elbe die Pegelnummern der FLYS-Pegel
!!! auf die Pegelnummernvon Pegel-Online anpasst.
Die so vorbehandelten DIPS-Daten werden mit der AFT-Datenbank
verbunden. Verbindungspunkt ist hierbei die Pegelnummer, die
in beiden Systemen gleich sein muss.
Wurde für einzelne Pegel die Verbindung zwischen AFT und DIPS
erfolgreich hergestellt, wird versucht mit der entsprechenden
Pegelnummer auch eine Verbindung zu FLYS hergestellt.
Werden Pegel in AFT und DIPS gefunden, die sich nicht in FLYS befinden,
werden diese in FLYS angelegt und mit den Abflusstafeln aus AFT
gefüllt.
Werden Pegel in AFT, DIPS und FLYS gefunden, werde die Abflusstafeln
in FLYS mithilfe von AFT aktualisiert. Die Verbindung der Abflusstafeln
wird über deren Bezeichner hergestellt:
AFT: "ABFLUSSTAFEL.ABFLUSSTAFEL_BEZ"
FLYS: "discharge_tables.decsription"
Für alle vorhandenen Paare von AFT/FLYS-Abflusstafeln werden
die W/Q-Werte abgeglichen und FLYS entsprechend aktualisiert.
Abflusstafeln, die in FLYS noch nicht vorhanden sind, werden
in FLYS übernommen.
Wenn es nach dem Abgleich der AFT- und FLYS-DB eine Veränderung
in FLYS gegeben hat, können an konfigurierbare Web-Dienste
Nachrichten verschickt werden, dass sich Daten geändert haben.
Die FLYS-Applikation selbst bestitzt einen Dienst, der aufgerufen
werden kann, um dessen internen Caches zu invalidieren.
Dies vermeidet Dateninkonsistenzen.
Fehlermeldungen:
================
Wärend die Synchronisationsprozesses können verschiedene Fehler
auftreten.
Allgemein:
----------
SYNC: syncing failed.
Wärend der Synchronisation ist ein Fehler aufgetreten. Details
finden sich in der Regel oberhalb dieser Fehlermeldung.
REPAIR: Cannot open DIPS repair XSLT file.
Die zur Reparatur angegebene XSL-Transformation konnte nicht geladen
werden.
REPAIR: Fixing DIPS failed.
Die Anwendung der XSL-Transformation zur Reparatur der DIPS-Daten
ist fehlgeschlagen. Datails hierzu sollten sich oberhalb dieser
Fehlermeldung zu finden sein.
Benachrichtigung:
-----------------
NOTIFY: Invalid URL ''. Ignored.
Die zur Benachrichtigung angegebene URL ist nicht valide und
wird daher ignoriert.
NOTIFY: '' is not an HTTP(S) connection.
Die zur Benachrichtigung angegebene URL öffnet keine
HTTP- bzw. HTTPS-Verbindung.
NOTIFY: Sending message to '' failed.
Der Versand der Benachrichtigung an die URL ist fehlgeschlagen.
DIPS:
-----
DIPS: MESSSTELLE '' not found in DIPS. Gauge number used for lookup:
Es wurde vergeblich versucht, mithilfe einer AFT-Pegelnummer in DIPS
ein entsprechendes Gegenstück zu finden.
DIPS: MESSSTELLE '' is assigned to river ''. Needs to be on ''.
Aus Sicht von AFT wird Messstelle an erwartet.
DIPS ordnet sie aber zu.
DIPS: Gauge '' has no datum. Ignored.
Der DIPS-Pegel hat keinen PNP und kann deshalb nicht
importiert werden.
DIPS: Setting AEO of gauge '' to zero.
Der AEO-Wert ist bei dem DIPS-Pegel nicht gesetzt und
wird mit Null angenommen.
DIPS: Setting station of gauge '' to zero.
Der DIPS-Pegel '' hat keine zugeordnete Stationierung und
es wird angenommen, dass dieser an km 0 liegt.
DIPS: Station of gauge '' is zero.
Im Regelfall ist ein Stationierung an km 0 ein Datenfehler.
DIPS: Cannot find ''.
Der Pfad zum XML-Dokument mit den DIPS-Daten konnte nicht gefunden
werden.
DIPS: Cannot load DIPS document.
Das XML-Dokument mit den DIPS-Daten konnte nicht geladen werden.
DIPS: '' collides with '' on gauge number .
In DIPS gibt es zwei Pegel mit NAME1 und NAME2, die dieselbe Pegelnummer
haben.
DIPS: Gauge '' has invalid gauge number ''.
Der DIPS-Pegel Name hat eine Pegelnummer , die sich nicht
in einen 64bit-Integer erwandeln lässt.
AFT:
----
AFT: ABFLUSSTAFEL_NR = : > . -> swap
Eine AFT-Abflusstafel hat vertauschte GUELTIG_VON- und GUELTIG_BIS-Werte.
Diese werden implizit in die zeitlich richtige Reihenfolge gebracht.
FLYS/AFT: Value duplication w= q=. -> ignore.
Beim Laden einer Abflusstafel wurden ein W/Q-Duplikat entdeckt
und ignoriert.
AFT: Invalid MESSSTELLE_NR for MESSSTELLE '':
Die Messtellen-Nummer für die Messtelle ist ungültig.
Erwartet wird ein String, der sich in einen 64bit-Integer umwandeln lässt.
AFT: Found discharge table '' with same description. -> ignore.
In AFT wurde eine Abflusstafel gefunden, die die gleiche Bezeichnung
trägt wie eine andere, die demselben Pegel zugeordnet ist. Somit
ist keine eindeutige Zuordnung möglich.
FLYS:
-----
FLYS: Found discharge table '' with same description. -> ignore
In FLYS wurde eine Abflusstafel gefunden, die die gleiche Bezeichnung
trägt wie eine andere, die demselben Pegel zugeordnet ist. Somit
ist keine eindeutige Zuordnung möglich.
FLYS: Gauge '' has no official number. Ignored.
Der Pegel in FYLS hat keinen Pegelnummer und wird deshalb
nicht in Betracht gezogen.
FLYS: Gauge '' number is not found in AFT/DIPS.
Der Pegel hat eine Pegelnummer, die aber nicht in AFT/DIPS
zu finden ist.
FLYS: discharge table has no description. Ignored.
Die Abflusstafel in FLYS hat keine Beschreibung. Diese wird
allerdings zum Abgleich mit DIPS/AFT benötigt.
FLYS: Found discharge table '' with same description. -> ignore
In FLYS wurde eine Abflusstafel gefunden, die die gleiche Bezeichnung
trägt wie eine andere, die demselben Pegel zugeordnet ist. Somit
ist keine eindeutige Zuordnung möglich.
FLYS: Gauge '' has no official number. Ignored.
Der Pegel in FYLS hat keinen Pegelnummer und wird deshalb
nicht in Betracht gezogen.
FLYS: Gauge '' number is not found in AFT/DIPS.
Der Pegel hat eine Pegelnummer, die aber nicht in AFT/DIPS
zu finden ist.
FLYS: discharge table has no description. Ignored.
Die Abflusstafel in FLYS hat keine Beschreibung. Diese wird
allerdings zum Abgleich mit DIPS/AFT benötigt.