Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: TomLudwig am 29.07.04 - 12:25:39
-
Hallo zusammen,
ich bräuchte eure hilfe...
Ich muss ein Dokument im Hintergrund per LotusScript löschen. Einige Benutzer sind Editoren (in Gruppe zusammengefasst) diese dürfen keine Dokumente löschen.
Das eine Dokument muss aber im Hintergrund gelöscht werden können.
Kann ich den Benutzern (Gruppen) das Löschrecht kurz geben, das Dok im Hintergrund löschen, und dann wieder weg nehmen?
Vielen DANK
-
Das geht natürlich nicht. Eine ACL-Änderung erfordert ja noch höhere Rechte als das Löschrecht.
Ein üblicher workaround ist, dem zu "löschenden" Dokument ein Flag zu geben und das Dokument darüber aus allen Ansichten auszuschliessen. Ein serverbasierender Agent (signiert mit ausreichenden Rechten) kann diese Dokumente dann periodisch physikalisch löschen.
HTH,
Bernhard
-
War mir irgendwie klar :(
Das ist aber schlecht, da die zu löschenden Dokumente eigentlich nur zu einer Überprüfung gehören, ob ein Dokument von einem anderen Benutzer gerade geöffnet ist und beim verlassen des geöffneten Doks soll das "Überprüf"-Dok im Hintergrund wieder gelöscht werden...
Was haltet ihr von dem Vorschlag:
Ich gebe den Benutzern das Löschrecht in der ACL und überprüfe in QueryDocumentDelete ob das Dokument von der Person gelöscht werden darf ?!?
-
Auch das ist ein gängiges Verfahren. In Deinem Kontext ist die Realisierung ja sogar bequem und ohne viel Aufwand machbar: Du brauchst ja nur prüfen, ob es sich um EINEN Dokumenttyp (Dein Lock-Dokument) handelt - wenn nicht, ist das Löschen immer verboten.
Bernhard
-
Stimmt, ich kanns ja im DatenbankScript hinterlegen.
Aber eine Frage noch ... Im Ereignis "QueryDocumentDelete" bekomm ich als Übergabeparameter eine NotesUIDatabase.
Ich möchte aber doch mein Document haben. Wie komm ich dann zu dem Dok ???
-
Hallo TomLudwig,
eine Alternative wäre noch die RunOnServer Methode der Notes Agent Klasse. Damit kann können auch Personen ohne entsprechende Rechte Löschungen vornehmen. Schau mal in der Hilfe nach. Habe leider im Moment kein Beispiel zur Hand.
Gruß
Spalter ;)
-
Über NotesUIDatabase.Documents bekommst Du eine DocumentCollection, die alle Dokumente enthält, für die das Event ausgelöst wurde.
-
Wie wär es wenn Du einfach einen Flag setzen läßt, der ausssagt, dass das DOK gelöscht werden soll. Z.B. kannst Du einfach die Maske wechseln (doc.form="delete" oder so) und diese Dokumente alle nachts per Agent löscht.
-
@billygates:
Das habe ich bereits in meiner ersten Antwort vorgeschlagen, und Tom hat in seiner Replik darauf nachgewiesen, dass genau dieses im bestehenden Kontext nicht praktikabel ist.
Bernhard
-
Klasse danke.
Die Vorschläge haben auch funktioniert.
Dieses Forum ist super !!!!