comparison etl/README.txt @ 5838:5aa05a7a34b7

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

http://dive4elements.wald.intevation.org