Autor Thema: UIDokumente "unterscheiden" und identifizieren  (Gelesen 4303 mal)

DatenDuck

  • Gast
UIDokumente "unterscheiden" und identifizieren
« am: 06.10.08 - 13:41:41 »
Hallo Forum,

folgendes Problem, etwas schwierig zu beschreiben.

In einer DB werden mehrere Dokumente bearbeitet, während der Bearbeitung bestimmte Docs in einer speziellen Collection gesammelt und anschließend die Dokumente der DC gelöscht. Es kann nun vorkommen, dass 1.) ein Doc der DC im UI geöffnet, aber nicht aktiv ist und/oder 2.) ein Doc der DC in der Vorschau geöffnet ist.

Beide Fälle haben für mich so Ihre Fallen, in die ich gerade stolpere, bezogen auf die Dokumentlöschung.
Zu Fall 1.) In diesem Fall kann ich das Backend Doc nicht löschen, da es im UI "irgendwo" offen ist (können ja im UIWS noch mehrere  ganz andere Dokumente offen sein). Leider kann ICH das betroffene UI Doc auch nicht gezielt schließen, da mir kein Weg bewusst ist vom backend Doc genau auf dessen geöffnetes UI Doc zuzugreifen. Für diesen Fall bräuchte ich also entweder einen Weg das Backend Doc dennoch zu löschen, oder gezielt auf das davon geöffnete UIDoc zuzugreifen um es zu schließen.

Zu Fall 2.)Dieser Fall hat wiederum 2 Ausprägungen:
Um festzustellen ob ein Dokument der DC ÜBERHAUPT offen ist, kann ich nur die "IsUIDocOpen" Eigenschaft abfragen. Wenn diese zutrifft, kann es nun vorkommen, dass entweder das UIDoc irgendwo geöffnet ist (Fall 1) oder, dass es gerade in der PreviewPane sichtbar ist. OB ein Dokument ÜBERHAUPT in der Preview angezeigt ist, kann ich wiederum nur mit den 2 folgenden Schritten feststellen. 1: uidoc= uiws.CurrentDocument, 2. uidoc.InPreviewPane = ?
Da es aber bei diesem Vorgang nicht unbedingt sicher ist, dass das aktuelle Doc der Previewpane auch in meiner DC gesammelt wurde (In der Preview kann ja ein ganz anderes Dokument angezeigt werden, als eines der, die ich tatsächlich zu Beginn der Bearbeitung mit der Maus markiert habe. Das ist z.B. der Fall, wenn die DB gerade geöffnet wurde, das erste Dokument automatisch in der Preview angezeigt wird, der Benutzer aber mit der Maus die folgenden x Dokumente markiert OHNE das aktuelle mit einzuschließen.) brauche ich hier irgendeinen Weg um herauszufinden ob das UIDoc der Preview auch in meiner DC der bearbeiten Doks ist. Wenn das zutrifft, kann ich das UIDOC löschen und anschließend den UIWorkspace refreshen = Dok "weg". Wenn das UIDoc nicht in meiner DC ist, ist es ein ganz anderes Doc und ich ignoriere es. Wie ginge diese Filterung, denn ein Dokument in der Preview kann ich nicht einfach schließen? Schließe ich das UIDoc aus der Preview geht die ganze DB zu..
Diesen ganzen 2. Fall könnte ich mir sparen (mit der Identifikation ob das PreviewDoc auch wirklich eins der bearbeiten Docs ist und wenn ja, die "frontend Löschung") wenn ich zu Beginn der ganzen Sache einfach schnell die Preview schließen und am Ende wieder öffnen könnte.  Dann bliebe nämlich nur noch Fall 1 und der Benutzer kann während des Script-Laufs eh nichts machen und braucht daher derweil auch die Preview nicht.  Ginge das irgendwie?




Ich hoffe ich konnte meine Probleme irgendwie vereinfacht darstellen. Beide Fälle sind unterschiedlich, treten aber in demselben Bearbeitungsschritt auf und brechen mir umfangreich die Beine.
Entweder kann ich die Dokumente nicht korrekt löschen weil sie irgendwo offen sind, oder es wird auch noch ein "unschuldiges" Dokument mitgelöscht, nur weil es gerade in der Preview war und gar nix mit der Prozedur zu tun hatte…

Viele Dank schon mal für Eure Hilfe!

Bis dann,
-Moritz

Glombi

  • Gast
Re: UIDokumente "unterscheiden" und identifizieren
« Antwort #1 am: 06.10.08 - 13:49:24 »
Das IsUIDocOpen kann man fast nirgends gebrauchen:

Read-only. Indicates whether a NotesDocument object (back-end document) is accessed through a NotesUIDocument object (front-end document).

Damit bekommst Du also nicht heraus, ob irgendjemand das Dokument im Client offen hat.

Solche Fälle löse ich so:
Beim Öffnen einen Dokument wird ein neues temporäres Dokument angelegt, welche die Doc-ID des geöffneten Dokuments enthält.

Beim Schließen des Dokuments wird dann das temp. Dok. per Agent mit RunOnServer (wg. Löschrechte) gelöscht.


Dein Script kann dann prüfen, ob das Dok. gerade geöffnet ist.

Andreas

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: UIDokumente "unterscheiden" und identifizieren
« Antwort #2 am: 06.10.08 - 14:01:55 »
Sprechen wir hier wirklich noch von R5?

Unter R6 könnte man notesDocument.LockProvisional dafür einsetzen. Über notesDocument.LockHolders könnte man da sogar herausbekommen, wer das Dokument offen hat.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

DatenDuck

  • Gast
Re: UIDokumente "unterscheiden" und identifizieren
« Antwort #3 am: 06.10.08 - 14:25:18 »
Jo, wenn ich im Notes was bastle spreche ich (leider) immer von R5... Kompatibilität und so...
Ich hab mir aber inzwischen ne andere "Lösung" einfallen lassen.. Die ist zwar nicht so der Knüller, aber alles andere is zu riskant.
Ich würge einfach während dem Löschen den Errorhandler ab. Wenn dann ein im UI geöffnetes Dokument nicht gelöscht werden kann, wird der Benutzer darüber informiert. Da "immerhin" die Dokumentmarkierung der ungelöschten Dokumente erhalten bleibt,  muss der Benutzer "nur noch" Entfernen drücken...
Isn' ziemlicher Scheiß... ich weiß... "Weil ja der Benutzer dann.." Jaja!! Darüber brauchen wir nicht reden.. Aber ich hab jetzt hier stundenlang an dieser Schei.. rumgefummelt und Notes (auch R6 usw.) verhält sich hier mal wieder sehr zeitgemäß.. Da ich gerade für andere Projekte verplant bin, muss diese Lösung so jetzt aber halten..
Habe also den Punkt der genervten Resignation - entstanden durch etwas von "Habe keine Ahnung", "Notes kann das unverständlicher Weise nicht" und "Habe auch keine Zeit mehr" - erreicht und mich damit abgefunden.
Vielen Dank auf jeden Fall für Eure Antworten!
Wenn jemand vielleicht noch weiß, wie ich das drücken der del- sowie der F9-Taste auslösen kann (C-API?), wäre der Hack komplett...  :o

Bis denn,
-Moritz

DatenDuck

  • Gast
Re: UIDokumente "unterscheiden" und identifizieren
« Antwort #4 am: 06.10.08 - 14:56:57 »
Oh man... Ich Held...
Ich denke nur an die C-API wegen der verreckten Button Events LOL... Derweil bietet DIE ja genau die Möglichkeiten zum gnadenlosen, erzwungenen löschen die ich brauche..
Ich denke über den Weg werde ich zum Ziel kommen.. Hoffentlich...

Bis denn,
-Moritz

DatenDuck

  • Gast
Re: UIDokumente "unterscheiden" und identifizieren
« Antwort #5 am: 06.10.08 - 16:06:27 »
Hallo noch mal...

Sorry.. Vergesst diesen Thread... Die C-API hat ihren Dienst getan! :-) Meine Resignation ist inzwischen auch verflogen!

Bis dann,
-Moritz

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz