Autor Thema: Abfragen der Meldung "Doc wird von User XY gesperrt."  (Gelesen 3313 mal)

Offline Lancelot

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Tu was Du willst, aber schade keinem!
Hallo Leute,

um Speicherkonflikte zu vermeiden, soll ich abfragen, ob die o.g. Meldung bestätigt wurde.
Wenn ja dann soll das uidoc geschlossen werden.

Ich soll keinen Reload machen, sondern das uidoc wirklich nur schließen.

Habe ich überhaupt einen Change die Meldung abzufragen?

Danke schon mal für Eure Ideen.  ;)
Gruß Gerry (Lancelot)

Offline Flachmann

  • Senior Mitglied
  • ****
  • Beiträge: 254
  • Geschlecht: Männlich
Re: Abfragen der Meldung "Doc wird von User XY gesperrt."
« Antwort #1 am: 14.09.16 - 12:21:03 »
Ich habs noch nicht selbst gemacht, aber Du könntest das Property NotesDocument.LockHolders überprüfen. Wenn da etwas enthalten ist, dann der Name des Users XY. Dann kannst Du ja NotesUIDocument.Close() aufrufen.  :)
Gruß,
  __________
  _/_
  /lachmann

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.696
  • Geschlecht: Männlich
Re: Abfragen der Meldung "Doc wird von User XY gesperrt."
« Antwort #2 am: 14.09.16 - 12:27:01 »
@Flachmann,

Das funktioniert aber nur dann, wenn das Document Locking auf der Datenbank aktiviert ist.


Andreas

Offline Flachmann

  • Senior Mitglied
  • ****
  • Beiträge: 254
  • Geschlecht: Männlich
Re: Abfragen der Meldung "Doc wird von User XY gesperrt."
« Antwort #3 am: 14.09.16 - 12:32:11 »
Das kann sein.   :D  Aber man sollte es auch einschalten, wenn man Locks prüfen will. Und die Voraussetzungen sollten dann auch bestehen: ein Admin-Server in der ACL.

Gruß,
  __________
  _/_
  /lachmann

Offline Lancelot

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Tu was Du willst, aber schade keinem!
Re: Abfragen der Meldung "Doc wird von User XY gesperrt."
« Antwort #4 am: 14.09.16 - 12:49:08 »
Das Looking ist aktiviert und der Server ist als Adminserver eingetragen.

Ich versuche es jetzt mal mit dem prüfen auf lock.holders.

Danke!
Gruß Gerry (Lancelot)

Offline Lancelot

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Tu was Du willst, aber schade keinem!
Re: Abfragen der Meldung "Doc wird von User XY gesperrt."
« Antwort #5 am: 14.09.16 - 13:11:17 »
Es funktioniert nicht, habe es im Event Quermodechang und Postmodechange versucht.
Es wird zwar immer noch die Meldung angezeigt, aber dann passiert nicht weiter.

Wo muss ich das Script einfügen?


Dim ws As New NotesUIWorkspace
Dim doc As NotesDocument
   
Set uidoc = ws.CurrentDocument
Set doc = uidoc.document
   
holders = doc.LockHolders
If holders(0) = "" Then
   Call uidoc.Close()
End If
Gruß Gerry (Lancelot)

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.696
  • Geschlecht: Männlich
Re: Abfragen der Meldung "Doc wird von User XY gesperrt."
« Antwort #6 am: 14.09.16 - 13:12:53 »
Mal anders herum gefragt.

Das DocumentLocking ist doch primär gerade dafür geschaffen worden, um Speicher- und Replizierkonflikte zu verhindern.

Wenn ein Dokument "gelockt" ist, dann kann ein anderer Anwender doch nur noch "lesend" auf das Dokument zugreifen und
zwar so lange, bis der "LockHolder" dieses Dokument wieder verläßt und das "Unlock" sauber gelaufen ist.

Da braucht man doch eigentlich nichts prüfen?

Oder stehe ich hier etwas auf dem Schlauch?


Andreas

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.696
  • Geschlecht: Männlich
Re: Abfragen der Meldung "Doc wird von User XY gesperrt."
« Antwort #7 am: 14.09.16 - 13:14:34 »
Und die Meldung abfagen würde meines Erachtens nur mittels API (keine Notes-API) funktionieren.

Und ob diese sich dann "unterdrücken" ließe wage ich zu bezweifeln.


Andreas

Offline Lancelot

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Tu was Du willst, aber schade keinem!
Re: Abfragen der Meldung "Doc wird von User XY gesperrt."
« Antwort #8 am: 14.09.16 - 13:24:05 »
Nein so stimmt das nicht ganz, denn trotz dem Locking kann Du sehr leicht Speicherkonflikte erstellen.
Wenn User a ein Doc editiert und zur gleichen Zeit User B das Doc auch editieren möchte, bekommt User B die Meldung.
Lässt der User B das Doc offen im Lesemodus stehen, bis der andere fertig ist
und klickt dann doppelt in das Doc, kann er es zwar editieren, aber die neusten Einträge werden im Doc nicht angezeigt.

Schwups, schon hast Du einen Speicherkonflikt, dass wollte ich durch das schließen verhindern.
Gruß Gerry (Lancelot)

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.696
  • Geschlecht: Männlich
Re: Abfragen der Meldung "Doc wird von User XY gesperrt."
« Antwort #9 am: 14.09.16 - 13:52:24 »
@Lancelot

Dann musst du deine Anwender "erziehen".
Wenn sie die Meldung erhalten, das Dokument einfach wieder schließen und zu einem späteren Zeitpunkt
nochmal versuchen.   ;)

Aber mal kurz zu deinem Code.

Wenn LockHolders = "", dann ist das Dokument doch auch nicht gelockt.
Warum willst du es dann gleich wieder schließen?
siehe hier


Andreas

Offline Lancelot

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Tu was Du willst, aber schade keinem!
Re: Abfragen der Meldung "Doc wird von User XY gesperrt."
« Antwort #10 am: 14.09.16 - 14:00:21 »
Auch gut die Anwender erziehen. ;-)
Ich war vor fast 16 Jahren als ich in die Firma kam auch noch so zuversichtlich, dass wir unsere User einfach erziehen können.
Den Weg habe ich dann ganz schnell wieder verlassen.

Egal was hier programmiert wird, es muss sich für die User immer so anfühlen, als wenn man ihnen mit vorgewärmter Watte den Hintern abwischt.
Ein User muss hier nicht denken, sondern einfach nur schreien und schon bekommt er sein Fläschchen:  ;-)

Stimmt der Code sollte auf ungleich abfrage, aber auch das klappt nicht so wirklich.
Ich probiere es einfach weiter.
Gruß Gerry (Lancelot)

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.873
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Abfragen der Meldung "Doc wird von User XY gesperrt."
« Antwort #11 am: 14.09.16 - 14:08:16 »
Du musst das anders umsetzen: Es interessiert Dich ja nicht der Locking- Status im Moment des QueryModeChange, sondern der Status zum Zeitpunkt des Dokument öffnens.

Du musst Dir also im QueryOpen eine globale Variable merken "docWasLockedWhenOpening" und diese Variable dann im QueryModeChange abfragen. Wenn das Dokument beim öffnen gelockt war -> Reopen.

Natürlich kannst Du das auch noch eleganter machen: Du kannst Dir das Modified des Dokuments beim QueryOpen merken, und im QueryModeChange das Dokument über die Unid aus der Datenbank holen, und dessen Modified mit dem gemerkten Modified vergleichen. Wenn unterschiedlich -> Meldung und reopen.

ABER ACHTUNG: Wenn Du IRGENDEINE globale Variable hast, die das aktuelle Dokument repräsentiert, dann kannst Du mit getDocumentbyUnid so lange versuchen, das Dokument "neu" auszulesen wie Du willst: Du wirst IMMER das in- Memory- pendant kriegen (mit altem Modified- Datum)...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz