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.