Domino 9 und frühere Versionen > Entwicklung

Ge-chachte Profildokumente

(1/3) > >>

ata:
Hallole @All

ich habe eine Datenbank, in der Dokumente in der Reihenfolge ihrer Erstellung nummeriert werden. Diese Nummer pflege ich in einem Profildokument. Die Nummer wird ausgelesen in das Dokument übernommen und im Profil um eins erhöht. Das funktioniert prächtig, wenn man alleine mit der DB arbeitet... aber

... wenn mehrere User auf dem Server Dokumente ertellen kommt es zu doppelten Nummern, und dabei liegen teilweise 10 Minuten zwischen solchen Vorgängen.

Profildokumente werden beim Öffnen der DB in den Cache geschrieben und liegen damit permanent vor - daher das Problem - so weit so gut.

Meine Frage: gibt es eine Möglichkeit das Profildokument in anderen Sessions der User zu atualisieren - asonsten gehe ich den Weg über ein reguläres NotesDocument, daß kann ich so aktuell halten, wie es Notes eben zulässt...

Vielen Dank vorab für euere Beiträge...

ata

harkpabst_meliantrop:
Wie wäre es mit einer Ansicht zum ermitteln der letzten vergebenen Nummer? Ist natürlich bei sehr vielen (und am Ende noch unterschiedlichen) Dokumenten eventuell auch nicht besonders schnell, aber mit einen View Refresh kriegt man zumindest keine Cache-Probleme...

ata:
@harkpapst_meliantrop

... wie du schon erwähnst, je größer die DB wird, je mehr Dokumente in der DB sind, um so langsamer wird diese Art der Nummernvergabe - zudem bläht sich der Index immer größer auf...

Im Augenblick löse ich das eben über eine Ansicht, in der nur das NotesDocument erscheint...
Mit einem DBLookup lese ich das Dokument aus...
So lese ich auch die DocUNID des Dokumentes aus...
Mit @SetDocField setzte ich dann den neuen Wert...

Der Weg funktioniert, da ich im DBLookup "NoCache" mitgeben kann...

Dennoch würde mich eben interessieren, ob es eine Möglichkeit gibt ein Profildokument in allen sessions aktuell zu haten...

ata

Rob Green:
schon mal daran gedacht, die aufsteigende Nummer in ein Textfile zu schreiben und auszulesen, das auf dem Server liegt. Dazu muß ein runonserver Agent das Textfile anpacken. Vorteil sollte sein, daß das OS konkurrierende Zugriffe auf die Textdatei selbständig regelt. Obwohlich ich wirklich nicht 100% weiß, was passiert, wenn parallel gleichzeitig 2 Notesprozesse (die 2 User unabhängig angestoßen haben) auf die Textdatei zugreifen wollen. Ob dann der eine Notesprozess vom OS netterweise angewiesen zu warten, insofern Notes warten überhaupt kennt.

Weiß jemand mehr dazu, ob das klappen könnte ohne Probs?
Also zur Wiederholung: Notes schreibt Nummer in Textfile, somit gibt es keine doppelten Nummern mehr, da das OS auf keinen Fall parallele Zugriffe auf das Textfile zuläßt. Reihenfolge ist immer: im PostSave wird letzte Nummer aus Textfile gelesen, dann im Textfile um +1 und zum Schluß im Notesdoc um +1 eines erhöht.

ata:
@Rob

... das wäre natürlich auch noch ein Weg, an den habe ich noch nicht gedacht - ich danke dir.

Ich hatte noch den Gedanken ein temporäres Dokument zu erstellen, das als Beleg dient, daß die Nummernvergabe in Verwendung ist - gibt es das Dokument, ist die Nummernvergabe belegt - nach der Nummernvergabe wird das Dokument wieder gelöscht - so was wie ein Sperrdokument...

ata

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln