Autor Thema: Vorgehensweise Statusüberwachung von Dokumenten  (Gelesen 1820 mal)

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Vorgehensweise Statusüberwachung von Dokumenten
« am: 11.12.09 - 09:24:38 »
Moin,moin,

ich muss in einer "Schnittstellen-"DB den Status von Dokumenten überwachen. Es handelt sich hierbei um Auftragsnummern, die in einem fremden System eingelesen werden. In der DB neu erstellte Nummern müssen den Status N(ew) enthalten, damit diese im Fremdprogramm angelegt werden. Im Fremdsystem bereits vorhandene Nummern, die in der DB geändert wurden müssen den Status U(pdate) enthalten. Ich meine hier auch schonmal nen Beitrag zum Thema "Statusüberwachung" gesehen zu haben, finde ihn aber nicht mehr  :-:


Ich habe mir jetzt folgende Vorgehensweise für die Maskenereignisse überlegt:

Postopen:
IsNewDoc auswerten und Ergebnis in globaler Variable (NewDoc) speichern. Wenn NewDoc = false, alle zu überprüfenden Feldinhalte ebenfalls in globalen Variablen speichern um diese im Postsave auf Änderungen zu prüfen.
Prüfen, ob bereits ein Status-Kennzeichen vorhanden ist (N = New, U = Update), da z.B. ein vorhandener Status "N"  bis zur Schnittstellenbildung beibehalten werden muss, auch wenn zwischenzeitlich Änderungen erfolgt sind, da die Nummer ja sonst nicht im Fremdsystem angelegt wird. Diesen Status ggf. auch in globaler Variable speichern,

Querysave:
Wenn NewDoc = false, zu überprüfende Feldinhalte in globalen Variablen speichern, um diese im Postsave mit den Feldinhalten aus Postopen zu vergleichen.

Postsave:
Wenn NewDoc = true, dann DocStatus = „N“, sonst Feldinhalte aus Postopen mit Feldinhalten aus Querysave vergleichen und bei Änderungen DocStatus = „U“. Vorraussetzung für Status „U“, dass im Postopen nicht bereits Status „N“ vorhanden war. In dem Fall wird trotz Änderung Status „N“ beibehalten.

Bei der eigentlichen Schnittstellen-Bildung (Agent) wird das Statuskennzeichen dann wieder gelöscht.


Habe ich jetzt irgendwas grundlegendes vergessen, oder gehe ich irgendwo zu umständlich an die Sache ran? Bin für jegliche Tipps dankbar.



Gruß
Demian
« Letzte Änderung: 11.12.09 - 09:27:09 von Demian »
Gruß
Demian

BigWim

  • Gast
Re: Vorgehensweise Statusüberwachung von Dokumenten
« Antwort #1 am: 11.12.09 - 09:58:03 »
Hallo Demain,

Zitat
... wird das Statuskennzeichen dann wieder gelöscht.
Nach meinem Verständnis sind Statuskennzeichen ja da, um den Status zu kennzeichnen (Ok, kein Status ist vielleicht auch ein Status ...). Bei mir würde so aussehen:

Maske berechnetes Feld (für die Neuanlagen)
- @if (Status="";"Neu";Status)

beim Speichern (im Event oder bei der Aktion)
- Status = "geändert"
- (optional Änderungen an den Werten festhalten. Hier im Forum wird immer eine Klasse empfohlen, habe ich aber auf die schnelle nicht gefunden.)

Schnittstellen-Agent:
- Selektion auf Status "geändert".
- Fremdsystem bedienen.
- Je nach Rückgabewert Status ändern
bei OK: Status = "aktuell"
bei Fehler: Status = "Datenübertragung fehlgeschlagen"



Markus

klaussal

  • Gast
Re: Vorgehensweise Statusüberwachung von Dokumenten
« Antwort #2 am: 11.12.09 - 10:05:52 »
Ich verwende bei Stati immer nummerische Werte, also: 10, 20, 30, usw

Das hat bei manchen Bedingungen den Vorteil, dass man z. Bsp. < 20 oder > 50 abfragen kann.

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Re: Vorgehensweise Statusüberwachung von Dokumenten
« Antwort #3 am: 11.12.09 - 11:05:03 »
Moin ihr zwo,

Hallo Demain,

Zitat
... wird das Statuskennzeichen dann wieder gelöscht.
Nach meinem Verständnis sind Statuskennzeichen ja da, um den Status zu kennzeichnen (Ok, kein Status ist vielleicht auch ein Status ...). Bei mir würde so aussehen:
ja, so hatte ich mir das gedacht -> kein Status = nicht relevant für Schnittstellenagent. Könnte natürlich auch Status "keine Änderung" oder so setzen, kommt aber letzlich auf selbe raus, denke ich.


Maske berechnetes Feld (für die Neuanlagen)
- @if (Status="";"Neu";Status)
so in der Art, hätte ich das über Script gemacht. Aber über die Formel ist es natürlich einfacher. Denke irgendwie noch nicht so in Formeln, sozusagen :)


beim Speichern (im Event oder bei der Aktion)
- Status = "geändert"
- (optional Änderungen an den Werten festhalten. Hier im Forum wird immer eine Klasse empfohlen, habe ich aber auf die schnelle nicht gefunden.)
hhm, da gibts ne Klasse für? Da muss ich mal nach suchen.

Schnittstellen-Agent:
- Selektion auf Status "geändert".
- Fremdsystem bedienen.
- Je nach Rückgabewert Status ändern
bei OK: Status = "aktuell"
bei Fehler: Status = "Datenübertragung fehlgeschlagen"

ja, ich würde halt ne View verwenden, die nur die Docs mit Statuskennzeichen N oder U enthält. Da entfällt die Selektion im Agenten selbst.Wenn alle Docs übernommen wurden, werde ich den Status halt löschen/zurücksetzen.
 


Ich verwende bei Stati immer nummerische Werte, also: 10, 20, 30, usw

Das hat bei manchen Bedingungen den Vorteil, dass man z. Bsp. < 20 oder > 50 abfragen kann.

Ist grundsätzlich auch eine gute Idee, in meinem Fall wird vom Fremdsystem aber wirklich der Buchstabe N, oder U verlangt, deswegen werd ich den auch gleich verwenden. Es gibt zwar auch noch D für delete, das ist aber für uns nicht relevant, da die Nummern nicht gelöscht, sondern nur inaktiv gesetzt werden.

Der Vergleich der Feldinhalte könnte eigentlich auch direkt im Querysave laufen, da hab ich aber schon so einige Abfragen drin und ich wollte das nicht zu unübersichtlich machen. Die Feldinhalte werden dann erst ganz am Ende von Querysave in globalen Variablen gespeichert.

Vorab schonmal danke.

Gruß
Demian
Gruß
Demian

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz