Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Axel am 15.01.08 - 09:47:49

Titel: Löschen von Antwortdokumenten mit Leserfeldern.
Beitrag 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
 
Titel: Re: Löschen von Antwortdokumenten mit Leserfeldern.
Beitrag von: jBubbleBoy am 15.01.08 - 09:50:23
Würde ich genau so und nicht anders machen.

bubble
Titel: Re: Löschen von Antwortdokumenten mit Leserfeldern.
Beitrag von: Glombi am 15.01.08 - 09:52:32
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
Titel: Re: Löschen von Antwortdokumenten mit Leserfeldern.
Beitrag von: Axel am 15.01.08 - 10:49:03
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
Titel: Re: Löschen von Antwortdokumenten mit Leserfeldern.
Beitrag von: koehlerbv am 15.01.08 - 11:04:15
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
Titel: Re: Löschen von Antwortdokumenten mit Leserfeldern.
Beitrag von: Glombi am 15.01.08 - 11:23:26
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.
Titel: Re: Löschen von Antwortdokumenten mit Leserfeldern.
Beitrag von: ata am 15.01.08 - 12:08:51
... das geht nur wie von Bernhard beschrieben, zumindest habe ich das in meinen DB's auf die Art implementiert...

Toni
Titel: Re: Löschen von Antwortdokumenten mit Leserfeldern.
Beitrag von: Axel am 15.01.08 - 14:08:38
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