Re: [Hbci4java-help] GVRKUms.UmsLine.instref ändert sich?
Brought to you by:
kleiner77
|
From: HBCI4Java (S. Palme) <hbc...@ka...> - 2009-04-22 09:33:59
|
Hallo Jan,
> Auf meine Frage:
> "Ist es möglich, dass für den aktuellen Tag, der ja in der
> HKKAZ-Antwort nicht komplett sein muss bei einer zweite Abfrage
> Umsätze nicht nur am Ende dazu kommen, sondern auch an anderen Stellen
> (zwischen zwei bereits bekannten Umsätzen oder am Anfang z.b.) Sprich:
> kann man sich auf die Reihenfolge innerhalb eines MT904 verlassen?"
>
> antwortet Captain FRAG (Zitat mit freundlicher Genehmigung):
> > die Reihenfolge muss in der Tat nicht chronologisch sein.
>
> Das würde bedeuten, dass zumindest für den "offenen" Buchungstag
> tatsächlich theoretisch Einträge ZWISCHEN oder VOR bereits bekannten
> Einträgen auftauchen können.
In der Tat bin ich mir beim "aktuellen" Tag da auch nicht ganz sicher.
Mehr dazu siehe unten.
> Mir ist aufgefallen, dass bei comdirect die instrefs eines Tages stets
> kleiner als die des Folgetages sind, innerhalb eines Buchungstages
> jedoch *absteigen*. Ich werte das als Indiz, dass bei comdirect die
> Sortierung innerhalb eines Buchungstages absteigend chronologisch ist,
> neue Buchungen also *oben* auftauchen. (ein Experiment zur Bestätigung
> dieser Annahme steht noch aus)
Bei meiner Bank (Sparkasse) beginnen die INSTREFs an jedem Buchungstag
erneut bei 1, die Buchungen innerhalb eines Tages haben aufsteigende
Werte (also immer von 1..n)
> Dass Du dieses Verfahren seit 2004 ohne Probleme einsetzt, stimmt mich
> natürlich sehr zuversichtlich!
Das tatsächlich von mir verwendete Verfahren weicht in einem kleinen
Punkt von meiner Beschreibung aus der letzten Mail ab (markiert mit *):
1) In der DB wird nach dem höchsten bereits bekannten Buchungsdatum
gesucht (im Beispiel 21.4. mit zwei Buchungen).
2) Es wird eine Umsatzabfrage mit 21.4. als Start- und HEUTE als
End-Datum gemacht.
3*) Aus der DB werden alle Einträge mit dem 21.4. GELÖSCHT
(es werden also T3 und T4 gelöscht)
4*) Aus den empfangenen Kontoauszügen werden nun ALLE Einträge ab dem
21.4. neu importiert (so dass T3-T6 importiert werden).
Damit werde ich (wahrscheinlich mehr oder weniger aus Versehen) dem
Umstand gerecht, den CaptainFRAG geschildert hat - dass nämlich relativ
"frische" Kontoauszüge auch durchaus noch Änderungen unterworfen sein
können.
Allerdings mache ich mit diesem Algorithmus auch eine Annahme, die Du
ebenfalls schon als Frage formuliert hast:
> "Da stellt sich die nächste Frage: Ab wann kann ein Buchungstag als
> unveränderlich angesehen werden? Reicht es, das sein Datum in der
> Vergangenheit liegt (maximal gestern), bekommt man also schon 1
> Sekunde nach Mitternacht garantiert den unveränderlichen gestrigen
> Buchungstag?
Die Antwort auf diese Frage weiß ich nicht sicher. In meiner
Implementierung gehe ich offensichtlich davon aus, dass nur der LETZTE
BUCHUNGSTAG AUS DEN KONTOAUSZÜGEN (muss nicht identisch mit HEUTE sein)
noch veränderlich ist.
Da die von mir verwendete Vorgehensweise jedoch schon so lange
problemlos funktioniert, gehe ich mal davon aus, dass das entweder
generell OK ist oder dass es zumindest mit meiner Bank immer
funktioniert ;-)
> Zur Zeit favorisiere ich folgendes Verfahren, das mir recht robust
> erscheint:
> ...
Klingt gut ;-)
Dein Algorithmus unterscheidet sich damit im wesentlichen von dem in
wallstreet9 implementierten Algorithmus dadurch, dass er nicht nur
den "letzten" Buchungstag komplett neu synchronisiert, sondern dass
dieses Zeitfenster konfigurierbar ist (bei Dir mit "n" bezeichnet).
Außerdem ist Deine Art der Synchronisierung (Abgleich von Buchungen)
nicht so plump wie bei mir (einfach alles löschen und empfangene Daten
neu importieren) ;-)
Da wahrscheinlich relativ wenige Leute außer mir wallstreet9 benutzen
(es ist mehr oder weniger nur eine Beispielanwendung), ist es schwierig
zu sagen, ob das auch bei anderen "immer funktioniert".
Ich glaube, Olaf hat in Hibiscus einen ähnlichen Algorithmus
implementiert, und Hibiscus wird von wesentlich mehr Leuten verwendet.
Vllt. kann er ja mal kurz was dazu sagen (Wie ist der Algorithmus? Sind
Synchronisierungsprobleme in dieser Richtung bekannt?)
Grüße
-stefan-
|