Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Noman am 05.11.03 - 09:11:01
-
Hallo zusammen,
ich bins mal wieder. Ich habe auch gleich wieder ein Problem.
Ich habe ein paar Dokumente in meiner Datenbank, die lokal nicht vorhanden sind. Auf dem Server sind diese vorhanden, nur kann ich sie nicht sehen. Ich habe mir eine kategorisierte Ansicht gebaut, dort kann ich sehen, dass dort noch Dokumente existieren, aber ich komme nicht an sie ran. Meiner Meinung nach, müsste doch dann der Server im Leserfeld stehen, oder?
Wie kann ich dann, wenn der Server dort drin steht, auf dem Server einen Agenten laufen lassen, der die Dokumente aktualisiert und mir die richtigen Inhalte in die Autoren- und Leserfelder schreibt?
Vielen Dank schonmal für eure Hilfe.
Viele Grüße,
Noman
-
Hi,
meines Erachtens reicht es nicht wenn nur der Server als Leser vorhanden ist. Zumindest der Administrator der Datenbank sollte ebenfalls als Leser vorhanden sein.
Einen Agenten auf dem Server ausführen geht so (Auszug aus Designer-Hilfe):
Sub Initialize
Dim s As New NotesSession
Dim db As NotesDatabase
Dim agent As NotesAgent
Set db = s.CurrentDatabase
Set agent = db.GetAgent("Agent to be run LotusScript")
If agent.RunOnServer = 0 Then
Messagebox "Agent ran",, "Success"
Else
Messagebox "Agent did not run",, "Failure"
End If
End Sub
Dieser Code muß einen weiteren Agenten ausführt, der die entsprechenden Dokumente sucht, z.B. NotesDatabase.Search und dann die Leser- und/oder Autorenfelder entsprechend bearbeitet. Anschließend mußt du das/die Dokument(e) speichern.
Meines Wissen kannst du aber bei Agenten die auf den Server laufen sollen keine Frontend-Klassen verwenden. Sollte aber bei kein Problem darstellen.
Axel
-
Also, wenn im Leserfeld der Server drinsteht, dann können die Dokumente nur gesehen werden, wenn man mit der Server-ID auf die Dokumente zugreift. Deshalb siehst Du die Dokumente auch nicht, wenn Du per Client auf die Datenbank mit Deiner eigenen ID drauf zugreifst, schliesslich bist Du nicht im Leserfeld eingetragen.
Um diese Situation zu korrigieren, muss ein Agent laufen, der mit der Server-ID signiert ist. Was Axel angegeben hat, reicht nicht, weil der gestartete Agent trotzdem mit der ID des aufrufenden Benutzers läuft.
Was Du tun kannst, ist ein periodischer Agent, den Du dann mit Hilfe des Admin-Clients mit der "aktiven ServerID" signierst, nachdem Du ihn aktiviert hast (sonst wird er beim Aktivieren wieder mit Deiner ID signiert und läuft daher unter Deiner Berechtigung). Nach der Signierung läuft dieser Agent unter der Server-ID und hat damit Zugriff auf die Dokumente.
-
Hallo,
vielen Dank schonmal für eure Antworten. Hier brennt echt die Hütte.
Wie kann ich diesen Agenten mit dem Admin-Client signieren? Wie kann ich ihn dort überhaupt erstellen?
Gruß,
Noman
-
Also, erstellen kannst Du ihn dort nicht, das musst Du trotzdem im Designer machen. Und wenn die Hütte brennt, wird Dir wohl nix anderes übrigbleiben, als einen Entwickler einzufliegen, der das Problem in etwa 30 Minuten lösen dürfte.
Signieren kannst Dus im Admin-Client im File-Tab, rechte Maustaste auf die Datenbank, von da alles der Nase nach .....
-
Hi,
den Agent erstellt du ganz normal im Designer.
Das signieren erfolgt dann im Admin - Client.
Dazu gehst du im Admin-Client auf die Datei-Seite, markierst die entsprechende Datenbank. Die klickst du dann rechts an. Im Popup-Menü wählst du dann die Option "Signieren..." Im angezeigten Dialog wählst du dann die Option "ID des aktiven Servers". Wenn du nur die Agenten Signieren willst, wählst du in der unteren Hälfte "Gestaltungselemente des Typs" und aus der Liste "Agenten".
Damit signierst du dann alle Agenten.
Wie man einen einzelnen Agenten signiert, ist mir im Moment nicht bekannt. Ich weiß nicht ob das so ohne weiteres überhaupt geht.
Axel
-
Also wenns quick and dirty sein soll und Deine Server auf WIndows laufen, starte doch einfach auf dem Server den Hilfsclient, öffne die DB und starte den Agent da manuell.
-
...quick and dirty.
Was würde denn passieren, wenn ich die Autoren- und Leserfelder aus den Dokumenten rauslösche, dann rpeliziere und später wieder einsetze und die Dokumente aktualisiere?
-
Da Du ja kein Leser bist, siehst Du die betreffenden Docs nicht und kannst sie daher auch nicht replizieren.
Das ist ja Sinn der Leserfelder ;-)
Bernhard
-
...nein, ich meinte im Designer.
Dann müssten doch alle Dokumente wieder zu sehen sein, oder?
-
Du willst eine Maske ändern ?
Das ändert kein Dokument - und da sind die Items nun mal drin. Dir hilft ausschliesslich ein Agent, der signiert ist mit einem Eintrag wie in Deinem Autorenfeld (Leser ist er dann automatisch).
Bernhard
-
.... und egal mit welchem Client, die Dokumente sieht wirklich nur, wer im Leserfeld drinsteht. Der Designer sieht auch nur Dokumente, die mit Deiner ID zugänglich sind, sonst nix. Genau das ist der Sinn der Leserfelder. Liessen die sich so ohne weiteres umgehen, könnten wir sie gleich weglassen und nur mit Hide-Whens arbeiten.