Mercurial > dive4elements > river
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. |