comparison etl/doc/README.txt @ 8836:f06d7a40bde5

Move README to doc as to include it in package.
author Tom Gottfried <tom@intevation.de>
date Wed, 17 May 2017 16:15:41 +0200
parents etl/README.txt@d8d71005a210
children 4542d23f98bf
comparison
equal deleted inserted replaced
8835:d8d71005a210 8836:f06d7a40bde5
1 FLYS-AFT:
2 """""""""
3
4 Der FLYS-AFT-ETL-Prozessor aktualisiert eine FLYS-Datenbank mithilfe
5 eines DIPS-XML-Exports und einer AFT-Datenbank in Bezug auf Pegel und
6 Abflusstafeln.
7
8 Vorbedingungen:
9 ---------------
10
11 * Es existiert ein DIPS-XML-Export unter einen erreichbaren Pfad
12 im Dateisystem.
13
14 * Es existiert eine AFT-Datenbank mit bekannten Credentials.
15
16 * Es existiert eine FLYS-Datenbank mit bekannten Credentials.
17
18 Bau:
19 ----
20 * Maven (>= 2) sollte installiert sein und im Pfad liegen.
21
22 $ mvn --version
23 Sollte Versionsinformationen ausgeben.
24
25 * Für die Nutzung der Oracle-JDBC-Bindings muss das Oracle-Treiber-Jar
26 in das lokale Maven-Repository installiert werden:
27
28 $ mvn install:install-file -DgroupId=ojdbc7.jar -DartifactId=ojdbc7 \
29 -Dversion=0 -Dpackaging=jar -Dfile=ojdbc7.jar -DgeneratePom=true
30
31 * Für den eigentlichen Oracle-kompatiblen Bau kann dann folgendes
32 aufgerufen werden:
33
34 $ mvn -f pom-oracle.xml clean package assembly:single
35
36 Das Archiv target/river-etl-1.0-SNAPSHOT-bin.tar.gz kann dann an den Ort
37 der Installation verschoben und schließlich entpackt werden:
38
39 $ tar xzf river-etl-1.0-SNAPSHOT-bin.tar.gz
40
41 * Folgendes führt das fertige Programm dann aus:
42
43 $ river-etl-1.0-SNAPSHOT/bin/run.sh
44
45 Konfiguration:
46 --------------
47
48 Zur Konfiguration wird eine Konfigurations-Datei benötigt. Diese wird
49 standardmäßig im aktuellen Arbeitsverzeichnis unter dem Namen 'config.xml'
50 gesucht. Der Pfad zu dieser Datei kann allerdings auch mit der
51 System-Property config.file gesetzt werden.
52
53 Dies geschieht über den Kommandozeilenparameter "-Dconfig.file=/pfad/zur/config.xml"
54 im Start-Skript bin/run.sh
55
56 Die Konfigurationsdatei hat folgende Struktur:
57
58 1 <?xml version="1.0" encoding="UTF-8"?>
59 2 <sync>
60 3 <!-- If modified send messages -->
61 4 <notifications>
62 5 <notifaction url="http://example.com">
63 6 <caches>
64 7 <cache name="my-cache"/>
65 8 </caches>
66 9 </notifaction>
67 10 </notifications>
68 11 <!-- The path to the DiPs file -->
69 12 <dips>
70 13 <file>/the/path/to/the/dips/file</file>
71 14 <repair>/the/path/to/the/xslt/to/repair/dips</repair>
72 15 </dips>
73 16 <!-- The FLYS side -->
74 17 <side name="flys">
75 18 <db>
76 19 <driver>oracle.jdbc.OracleDriver</driver>
77 20 <user>flys</user>
78 21 <password>flys</password>
79 22 <url>jdbc:oracle:thin:@//localhost:1521/XE</url>
80 23 </db>
81 24 </side>
82 25 <!-- The AFT side -->
83 26 <side name="aft">
84 27 <db>
85 28 <driver>oracle.jdbc.OracleDriver</driver>
86 29 <user>aft</user>
87 30 <password>aft</password>
88 31 <url>jdbc:oracle:thin:@//localhost:1521/XE</url>
89 32 <execute-login>
90 33 <statement>ALTER SESSION SET CURRENT_SCHEMA=AFT</statement>
91 34 </execute-login>
92 35 </db>
93 36 </side>
94 37 </sync>
95
96 Sie besteht aus vier Bereichen:
97
98 * DIPS:
99 Zeile 13: Pfad zur XML-Datei mit dem DIPS-Export
100 Zeile 14: Pfad zur Reparatur-XSL-Transformation (s.u.).
101 Dieser ist optional.
102 * FLYS:
103 Zeile 19: JDBC-Treiber für den Zugriff auf die FLYS-Datenbank
104 Zeile 20: DB-Nutzername
105 Zeile 21: Connection-URL zur FLYS-Datenbank
106
107 * AFT:
108 Zeile 28: JDBC-Treiber für den Zugriff auf die AFT-Datenbank
109 Zeile 29: DB-Nutzername
110 Zeile 30: Connection-URL zur AFT-Datenbank
111
112 * Schemata:
113 Zeile 32-34: Schema in welches die Daten geschrieben werden sollen.
114
115 * Benachrichtigungen:
116 Zeile 5: URL des Web-Service, der benachrichtigt werden soll.
117 Zeile 6-18: Die Nachricht, die an den Web-Service verschickt werden soll.
118
119 Funktionsweise:
120 ---------------
121
122 Als erstes wird die DIPS-Datei geladen. Ist angegeben, dass
123 eine Reparatur-XSL-Transformation auf diese angewendet werden
124 soll, wird diese ebenfalls geladen und auf das DIPS-Dokument
125 angewandt.
126
127 !!! Hinweis: Unter doc/repair.xsl findet sich eine Beispiel-Transformation,
128 !!! die mithilfe von doc/pegelstationen.xml für die Flüsse
129 !!! Saar, Mosel und Elbe die Pegelnummern der FLYS-Pegel
130 !!! auf die Pegelnummern von Pegel-Online anpasst.
131
132 Die so vor-behandelten DIPS-Daten werden mit der AFT-Datenbank
133 verbunden. Verbindungspunkt ist hierbei die Pegelnummer
134 ("NUMMER" in DIPS, "MESSSTELLE.MESSSTELLE_NR" in AFT), die
135 in beiden Systemen gleich sein muss.
136
137 Wurde für einzelne Pegel die Verbindung zwischen AFT und DIPS
138 erfolgreich hergestellt, wird versucht mit der entsprechenden
139 Pegelnummer auch eine Verbindung zu FLYS herzustellen.
140
141 Werden Pegel in AFT und DIPS gefunden, die sich nicht in FLYS befinden,
142 werden diese in FLYS angelegt (mit Station "STATIONIERUNG",
143 Pegelnullpunkt "PNP" und Einzugsgebietsgröße
144 "EINZUGSGEBIET_AEO" aus DIPS) und mit den Abflusstafeln aus AFT
145 gefüllt.
146
147 Werden Pegel in AFT, DIPS und FLYS gefunden, so werden die Abflusstafeln
148 in FLYS mithilfe von AFT aktualisiert. Die Verbindung der Abflusstafeln
149 wird über deren Bezeichner hergestellt:
150
151 AFT: "ABFLUSSTAFEL.ABFLUSSTAFEL_BEZ"
152 FLYS: "discharge_tables.description"
153
154 Für alle vorhandenen Paare von AFT/FLYS-Abflusstafeln werden
155 die W/Q-Werte abgeglichen und FLYS entsprechend aktualisiert.
156 Abflusstafeln, die in FLYS noch nicht vorhanden sind, werden
157 in FLYS übernommen.
158
159 Um Inkonsistenzen in FLYS zu vermeiden, müssen zusätzlich bestimmte
160 Bedingungen erfüllt sein, damit der Abgleich korrekt stattfinden kann.
161 So muss etwa der Name des Gewässers in DIPS ("GEWAESSER") auch im Namen des
162 Gewässers in FLYS ("rivers.name") enthalten sein, sowie der Pegel an einer
163 für das Gewässer gültigen Station ("STATIONIERUNG" in DIPS) liegen.
164 Die im Folgenden dokumentierten
165 Fehlermeldungen geben über derartige Probleme Auskunft.
166
167 Wenn es nach dem Abgleich der AFT- und FLYS-DB eine Veränderung
168 in FLYS gegeben hat, können an konfigurierbare Web-Dienste
169 Nachrichten verschickt werden, dass sich Daten geändert haben.
170 Die FLYS-Applikation selbst besitzt einen Dienst, der aufgerufen
171 werden kann, um dessen interne Caches zu invalidieren.
172 Dies vermeidet Dateninkonsistenzen.
173
174 Fehlermeldungen:
175 ================
176
177 Während die Synchronisationsprozesses können verschiedene Fehler
178 auftreten.
179
180 Allgemein:
181 ----------
182
183 SYNC: syncing failed.
184
185 Während der Synchronisation ist ein Fehler aufgetreten. Details
186 finden sich in der Regel oberhalb dieser Fehlermeldung.
187
188 REPAIR: Cannot open DIPS repair XSLT file.
189
190 Die zur Reparatur angegebene XSL-Transformation konnte nicht geladen
191 werden.
192
193 REPAIR: Fixing DIPS failed.
194
195 Die Anwendung der XSL-Transformation zur Reparatur der DIPS-Daten
196 ist fehlgeschlagen. Details hierzu sollten sich oberhalb dieser
197 Fehlermeldung zu finden sein.
198
199 Benachrichtigung:
200 -----------------
201
202 NOTIFY: Invalid URL '<URL>'. Ignored.
203
204 Die zur Benachrichtigung angegebene URL ist nicht valide und
205 wird daher ignoriert.
206
207 NOTIFY: '<URL>' is not an HTTP(S) connection.
208
209 Die zur Benachrichtigung angegebene URL öffnet keine
210 HTTP- bzw. HTTPS-Verbindung.
211
212 NOTIFY: Sending message to '<URL>' failed.
213
214 Der Versand der Benachrichtigung an die URL ist fehlgeschlagen.
215
216 DIPS:
217 -----
218
219 DIPS: MESSSTELLE '<NAME>' not found in DIPS. Gauge number used for lookup: <NUMMER>
220
221 Es wurde vergeblich versucht, mithilfe einer AFT-Pegelnummer in DIPS
222 ein entsprechendes Gegenstück zu finden.
223
224 DIPS: MESSSTELLE '<NAME>' is assigned to river '<FLUSS1>'. Needs to be on '<FLUSS2>'.
225
226 Aus Sicht von AFT wird Messstelle <NAME> an <FLUSS2> erwartet.
227 DIPS ordnet sie aber <FLUSS1> zu.
228
229 DIPS: Gauge '<PEGEL>' has no datum. Ignored.
230
231 Der DIPS-Pegel <PEGEL> hat keinen PNP und kann deshalb nicht
232 importiert werden.
233
234 DIPS: Setting AEO of gauge '<NAME>' to zero.
235
236 Der AEO-Wert ist bei dem DIPS-Pegel <NAME> nicht gesetzt und
237 wird mit Null angenommen.
238
239 DIPS: Setting station of gauge '<NAME>' to zero.
240
241 Der DIPS-Pegel '<NAME>' hat keine zugeordnete Stationierung und
242 es wird angenommen, dass dieser an km 0 liegt.
243
244 DIPS: Station of gauge '<NAME>' is zero.
245
246 Im Regelfall ist ein Stationierung an km 0 ein Datenfehler.
247
248 DIPS: Cannot find '<DATEINAME>'.
249
250 Der Pfad zum XML-Dokument mit den DIPS-Daten konnte nicht gefunden
251 werden.
252
253 DIPS: Cannot load DIPS document.
254
255 Das XML-Dokument mit den DIPS-Daten konnte nicht geladen werden.
256
257 DIPS: '<NAME2>' collides with '<NAME1>' on gauge number <NUMMER>.
258
259 In DIPS gibt es zwei Pegel mit NAME1 und NAME2, die dieselbe Pegelnummer
260 haben.
261
262 DIPS: Gauge '<NAME>' has invalid gauge number '<NUMBER>'.
263
264 Der DIPS-Pegel Name hat eine Pegelnummer <NUMMER>, die sich nicht
265 in einen 64bit-Integer verwandeln lässt.
266
267 DIPS: Skipping Gauge: '<NAME>' because it is at Station: <pos> and the
268 river is limited to: <fromkm> - <tokm>
269
270 Der DIPS Pegel wurde nicht eingelesen da seine Stationierung
271 nicht mit den Fluss Kilometern in FLYS übereinstimmt. In einer
272 darauf folgenden Meldung wird geloggt das dieser Pegel nicht in
273 DIPS vorhanden ist (da er nicht eingelesen wurde).
274
275 AFT:
276 ----
277
278 AFT: ABFLUSSTAFEL_NR = <NUMMER>: <GUELTIG_VON> > <GUELTIG_BIS>. -> swap
279
280 Eine AFT-Abflusstafel hat vertauschte GUELTIG_VON- und GUELTIG_BIS-Werte.
281 Diese werden implizit in die zeitlich richtige Reihenfolge gebracht.
282
283 FLYS/AFT: Value duplication w=<W> q=<Q>. -> ignore.
284
285 Beim Laden einer Abflusstafel wurden ein W/Q-Duplikat entdeckt
286 und ignoriert.
287
288 AFT: Invalid MESSSTELLE_NR for MESSSTELLE '<NAME>':
289
290 Die Messtellen-Nummer für die Messtelle <NAME> ist ungültig.
291 Erwartet wird ein String, der sich in einen 64bit-Integer umwandeln lässt.
292
293 AFT: Found discharge table '<BESCHREIBUNG>' with same description. -> ignore.
294
295 In AFT wurde eine Abflusstafel gefunden, die die gleiche Bezeichnung
296 trägt wie eine andere, die demselben Pegel zugeordnet ist. Somit
297 ist keine eindeutige Zuordnung möglich.
298
299 FLYS:
300 -----
301
302 FLYS: Found discharge table '<BESCHREIBUNG>' with same description. -> ignore
303
304 In FLYS wurde eine Abflusstafel gefunden, die die gleiche Bezeichnung
305 trägt wie eine andere, die demselben Pegel zugeordnet ist. Somit
306 ist keine eindeutige Zuordnung möglich.
307
308 FLYS: Gauge '<PEGEL>' has no official number. Ignored.
309
310 Der Pegel <PEGEL> in FLYS hat keinen Pegelnummer und wird deshalb
311 nicht in Betracht gezogen.
312
313 FLYS: Gauge '<PEGEL>' number is not found in AFT/DIPS.
314
315 Der Pegel <PEGEL> hat eine Pegelnummer, die aber nicht in AFT/DIPS
316 zu finden ist.
317
318 FLYS: discharge table <ID> has no description. Ignored.
319
320 Die Abflusstafel in FLYS hat keine Beschreibung. Diese wird
321 allerdings zum Abgleich mit DIPS/AFT benötigt.
322
323 FLYS: Found discharge table '<BESCHREIBUNG>' with same description. -> ignore
324
325 In FLYS wurde eine Abflusstafel gefunden, die die gleiche Bezeichnung
326 trägt wie eine andere, die demselben Pegel zugeordnet ist. Somit
327 ist keine eindeutige Zuordnung möglich.
328
329 FLYS: Gauge '<PEGEL>' has no official number. Ignored.
330
331 Der Pegel <PEGEL> in FLYS hat keinen Pegelnummer und wird deshalb
332 nicht in Betracht gezogen.
333
334 FLYS: Gauge '<PEGEL>' number is not found in AFT/DIPS.
335
336 Der Pegel <PEGEL> hat eine Pegelnummer, die aber nicht in AFT/DIPS
337 zu finden ist.
338
339 FLYS: discharge table <ID> has no description. Ignored.
340
341 Die Abflusstafel in FLYS hat keine Beschreibung. Diese wird
342 allerdings zum Abgleich mit DIPS/AFT benötigt.

http://dive4elements.wald.intevation.org