Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Axel am 15.01.08 - 09:47:49
-
Ich habe eine Datenbank von freien Mitarbeitern die nun von verschiedenen Abteilungsleitern, für die sie tätig waren, bewertet werden. Diese Bewertungen sollen als Antwortdokumente an das eigentliche Dokument mit den Personendaten angebunden werden. Aus Gründen des Datenschutzes sollen die Bewertungen nur von einem ausgewählten Personenkreis gelesen werden können. Hier kommen dann Lesefelder in den Antwortdokumenten zum Einsatz. Soweit ist das alles ja gar kein Problem.
Das Problem ist das Löschen von Personendokumenten (mit Bewertungen) von Usern ohne das Recht diese Bewertungen zu sehen. Dabei wird ja nur das Hauptdokument gelöscht und die Antwortdokumente bleiben als Karteileichen zurück, da NotesDocument.Responses ja eigentlich 0 Dokumente zurückliefern müsste.
Meine Idee ist nun die, die Hauptdokumente beim Löschen durch den Anwender nur mit einem Flag zu kennzeichnen und dann mit einem entsprechend signierten Agenten einmal am Tag aus der DB zu löschen.
gib's da noch andere Alternativen oder mach ich hier einen generellen Denkfehler. So was ist mir bisher noch nicht untergekommen.
Axel
-
Würde ich genau so und nicht anders machen.
bubble
-
Alternativ kannst Du per Script einen Agenten mit RunOnServer und mit Übergabe der NoteID aufrufen. Der Agent muss dann von einem User unterzeichnet werden, der alles lesen kann.
Der Agent löscht dann das übergebene Dokument sowie alle zugehörigen Antworten.
Aufruf Agent:
set doc = ...
call agent.RunOnServer(doc.NoteID)
Im Agent:
Dim s As New NotesSession
Dim agent As NotesAgent
Set agent = s.CurrentAgent
Dim db As NotesDatabase
Dim doc As NotesDocument
Set db = s.CurrentDatabase
REM Get document used for passing data
Set doc = db.GetDocumentByID(agent.ParameterDocID)
Andreas
-
Alternativ kannst Du per Script einen Agenten mit RunOnServer und mit Übergabe der NoteID aufrufen.
Gibt's dann nicht Probleme, wenn mit einer lokalen Replik gearbeitet wird? Das kann ich nicht ganz ausschließen.
Axel
-
Da gibt es garantiert ein Problem - allein schon deswegen, dass die durch Leserfelder geschützten Dokumente in der lokalen Replik gar nicht enthalten sind.
Daher: Entweder "gelöschte" Dokumente erstmal nur flaggen oder einen Aufräum-Agent verwenden, der nachts automatisch alle Dokumente des entspr. Typs löscht, deren $Ref ins Leere zeigt.
Bernhard
-
Alternativ kannst Du per Script einen Agenten mit RunOnServer und mit Übergabe der NoteID aufrufen.
Gibt's dann nicht Probleme, wenn mit einer lokalen Replik gearbeitet wird? Das kann ich nicht ganz ausschließen.
Axel
Das war mir nicht klar. Dann auf jeden Fall einen periodischen Agenten verwenden.
-
... das geht nur wie von Bernhard beschrieben, zumindest habe ich das in meinen DB's auf die Art implementiert...
Toni
-
Vielen Dank für eure Antworten. Dann war ich doch auf dem richtigen Weg. Hätte ja sein können, dass es noch andere Alternativen gegeben hätte.
Axel